{"info":{"_postman_id":"00000000-0000-0000-0000-000000000001","name":"Forge SIS District API","description":"Comprehensive API for Forge SIS district operations. See the Forge SIS Technical Specification v1.0 §9 and §25.\n\nAuthentication: set the `FORGE_API_KEY` collection variable to a key generated at /admin/api-keys, or `FORGE_SESSION_COOKIE` if you prefer cookie auth.","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"variable":[{"key":"baseUrl","value":"https://api.forgesis.com/v1","type":"string"},{"key":"FORGE_API_KEY","value":"","type":"string"}],"auth":{"type":"bearer","bearer":[{"key":"token","value":"{{FORGE_API_KEY}}","type":"string"}]},"item":[{"name":"General","item":[{"name":"GET /postman.json","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/postman.json","host":["{{baseUrl}}"],"path":["postman.json"]},"description":""}},{"name":"POST /api/platform/v1/webhooks/stripe/billing","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/webhooks/stripe/billing","host":["{{baseUrl}}"],"path":["api","platform","v1","webhooks","stripe","billing"]},"description":""}}]},{"name":"Meta","item":[{"name":"GET /healthz — Liveness probe","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/healthz","host":["{{baseUrl}}"],"path":["healthz"]},"description":"Returns service identity and uptime. Does not hit external dependencies — use /readyz for that."}},{"name":"GET /readyz — Readiness probe","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/readyz","host":["{{baseUrl}}"],"path":["readyz"]},"description":"Actually probes DB and Redis with a per-check 2s timeout. Returns 503 if any hard dependency fails."}},{"name":"GET /version — Build metadata","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/version","host":["{{baseUrl}}"],"path":["version"]},"description":"Returns the git sha, build time, and Node version baked in at container-build time. Used for in-field diagnosis."}}]},{"name":"Auth","item":[{"name":"POST /api/auth/login — Log in with email + password","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/auth/login","host":["{{baseUrl}}"],"path":["api","auth","login"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Returns a session cookie on success. Subject to rate limits and account lockout after repeated failures."}},{"name":"POST /api/auth/login/mfa-verify — Complete MFA login with a TOTP code","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/auth/login/mfa-verify","host":["{{baseUrl}}"],"path":["api","auth","login","mfa-verify"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Second step of the MFA login flow. Consumes the pendingMfaToken returned by /auth/login and validates the TOTP code. Returns the session cookie on success."}},{"name":"POST /api/auth/logout — Log out (revoke the current session)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/api/auth/logout","host":["{{baseUrl}}"],"path":["api","auth","logout"]},"description":"Log out (revoke the current session)"}},{"name":"GET /api/auth/session — Return the current authenticated session, if any","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/auth/session","host":["{{baseUrl}}"],"path":["api","auth","session"]},"description":"Return the current authenticated session, if any"}},{"name":"POST /api/auth/request-password-reset — Request a password reset email","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/auth/request-password-reset","host":["{{baseUrl}}"],"path":["api","auth","request-password-reset"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Always returns 200 — the response does not reveal whether the email exists."}},{"name":"POST /api/auth/complete-password-reset — Complete a password reset using an emailed token","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/auth/complete-password-reset","host":["{{baseUrl}}"],"path":["api","auth","complete-password-reset"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Complete a password reset using an emailed token"}},{"name":"POST /api/auth/complete-invite — Complete a user invite (set initial password)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/auth/complete-invite","host":["{{baseUrl}}"],"path":["api","auth","complete-invite"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Complete a user invite (set initial password)"}},{"name":"GET /api/auth/districts — List districts for the login picker (public)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/auth/districts","host":["{{baseUrl}}"],"path":["api","auth","districts"]},"description":"Name + CDS code + subdomain of every active district, sorted by name. Powers the district dropdown on login and password-reset forms."}},{"name":"GET /api/auth/mfa/status — Current MFA state for the signed-in user","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/auth/mfa/status","host":["{{baseUrl}}"],"path":["api","auth","mfa","status"]},"description":"Current MFA state for the signed-in user"}},{"name":"POST /api/auth/mfa/enroll — Begin MFA enrollment — returns a secret + QR to scan","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/api/auth/mfa/enroll","host":["{{baseUrl}}"],"path":["api","auth","mfa","enroll"]},"description":"Seals a fresh TOTP secret on the user but leaves MFA disabled until the code is confirmed via /auth/mfa/activate. Safe to call repeatedly; each call rotates the pending secret."}},{"name":"POST /api/auth/mfa/activate — Confirm the first TOTP code and turn MFA on","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/auth/mfa/activate","host":["{{baseUrl}}"],"path":["api","auth","mfa","activate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Confirm the first TOTP code and turn MFA on"}},{"name":"POST /api/auth/mfa/disable — Disable MFA (re-verifies the account password)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/auth/mfa/disable","host":["{{baseUrl}}"],"path":["api","auth","mfa","disable"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Disable MFA (re-verifies the account password)"}},{"name":"POST /me/push-token — Register an Expo push token for the signed-in user","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/me/push-token","host":["{{baseUrl}}"],"path":["me","push-token"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Stores the Expo push token so the backend can send push notifications to this device. Call this once after login. The token is scoped to the district."}},{"name":"DELETE /me/push-token — Remove the push token for the signed-in user","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/me/push-token","host":["{{baseUrl}}"],"path":["me","push-token"]},"description":"Call on logout so the device no longer receives push notifications."}}]},{"name":"Auth · SSO","item":[{"name":"GET /auth/saml/metadata — SAML 2.0 SP metadata","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/auth/saml/metadata","host":["{{baseUrl}}"],"path":["auth","saml","metadata"]},"description":"Returns SP EntityDescriptor XML for IdP configuration."}},{"name":"GET /auth/saml/initiate — Initiate SAML 2.0 SSO for a district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/auth/saml/initiate","host":["{{baseUrl}}"],"path":["auth","saml","initiate"]},"description":"Redirects browser to the district IdP with an encoded AuthnRequest."}},{"name":"POST /auth/saml/callback — SAML 2.0 Assertion Consumer Service (ACS)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/auth/saml/callback","host":["{{baseUrl}}"],"path":["auth","saml","callback"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Receives SAMLResponse from IdP and establishes a Forge session."}},{"name":"GET /auth/oidc/authorize — Initiate OIDC SSO for a district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/auth/oidc/authorize","host":["{{baseUrl}}"],"path":["auth","oidc","authorize"]},"description":"Redirects browser to the district OIDC IdP with PKCE parameters."}},{"name":"GET /auth/oidc/callback — OIDC authorization code callback","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/auth/oidc/callback","host":["{{baseUrl}}"],"path":["auth","oidc","callback"]},"description":"Receives authorization code from IdP, exchanges for tokens, creates session."}},{"name":"GET /auth/classlink/authorize — Initiate ClassLink SSO for a district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/auth/classlink/authorize","host":["{{baseUrl}}"],"path":["auth","classlink","authorize"]},"description":"Redirects browser to ClassLink IdP for the district tenant."}},{"name":"GET /auth/classlink/callback — ClassLink authorization code callback","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/auth/classlink/callback","host":["{{baseUrl}}"],"path":["auth","classlink","callback"]},"description":"Receives code from ClassLink, exchanges for tokens, creates Forge session."}}]},{"name":"District · SSO","item":[{"name":"GET /district/sso — Get SSO provider configurations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/district/sso","host":["{{baseUrl}}"],"path":["district","sso"]},"description":"Get SSO provider configurations"}},{"name":"POST /district/sso/saml — Save SAML 2.0 configuration","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/district/sso/saml","host":["{{baseUrl}}"],"path":["district","sso","saml"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Stores SAML IdP settings in District.settings.sso.saml. No migration required."}},{"name":"POST /district/sso/oidc — Save OIDC configuration","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/district/sso/oidc","host":["{{baseUrl}}"],"path":["district","sso","oidc"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Stores OIDC client settings in District.settings.sso.oidc."}},{"name":"POST /district/sso/classlink — Save ClassLink SSO configuration","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/district/sso/classlink","host":["{{baseUrl}}"],"path":["district","sso","classlink"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Stores ClassLink tenant settings in District.settings.sso.classlink."}}]},{"name":"Marketing","item":[{"name":"GET /marketing/plans — List active pricing tiers for the public /pricing page","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/marketing/plans","host":["{{baseUrl}}"],"path":["marketing","plans"]},"description":"List active pricing tiers for the public /pricing page"}},{"name":"POST /marketing/checkout — Create a Stripe Checkout Session for a plan","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/marketing/checkout","host":["{{baseUrl}}"],"path":["marketing","checkout"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Anonymous endpoint that opens a hosted Stripe Checkout flow for a prospect. The webhook handler at /api/platform/v1/webhooks/stripe/billing records the completed checkout for manual district provisioning. Requires STRIPE_PRICE_<UPPERCASE_CODE> env var per plan."}},{"name":"GET /marketing/event-catalog — Event-type catalog with example payloads","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/marketing/event-catalog","host":["{{baseUrl}}"],"path":["marketing","event-catalog"]},"description":"Public reference for integrators. Walks the platform event registry and emits one example payload per type so developers can prototype receivers without reading TypeScript schemas."}},{"name":"GET /marketing/content — Bulk-fetch active marketing copy blocks (optionally by slug list)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/marketing/content","host":["{{baseUrl}}"],"path":["marketing","content"]},"description":"Bulk-fetch active marketing copy blocks (optionally by slug list)"}}]},{"name":"API Keys","item":[{"name":"GET /api-keys/usage-summary — District-wide API usage rollup for the last 7 days","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api-keys/usage-summary","host":["{{baseUrl}}"],"path":["api-keys","usage-summary"]},"description":"Per-day totals across every active key in the district + per-key totals. Daily totals are summed from the same Redis counters the per-key sparkline uses; per-key totals are the sum of that key's 7-day series."}},{"name":"GET /api-keys — List API keys for the current district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api-keys","host":["{{baseUrl}}"],"path":["api-keys"]},"description":"List API keys for the current district"}},{"name":"POST /api-keys — Create a new API key for the current district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api-keys","host":["{{baseUrl}}"],"path":["api-keys"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generates a cryptographically random key. The plaintext is returned ONCE in the `key` field and cannot be retrieved again."}},{"name":"DELETE /api-keys/{id} — Revoke an API key (soft-delete via revokedAt)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/api-keys/{id}","host":["{{baseUrl}}"],"path":["api-keys","{id}"]},"description":"Revoke an API key (soft-delete via revokedAt)"}}]},{"name":"Webhooks","item":[{"name":"GET /webhooks — List webhooks for the current district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/webhooks","host":["{{baseUrl}}"],"path":["webhooks"]},"description":"List webhooks for the current district"}},{"name":"POST /webhooks — Create a webhook subscription","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/webhooks","host":["{{baseUrl}}"],"path":["webhooks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generates a signing secret. The plaintext is returned once in the `signingSecret` field and is never returned again. Use it to verify the `X-Forge-Signature` header on each delivery."}},{"name":"DELETE /webhooks/{id} — Delete (soft) a webhook","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/webhooks/{id}","host":["{{baseUrl}}"],"path":["webhooks","{id}"]},"description":"Delete (soft) a webhook"}},{"name":"GET /webhooks/{id}/deliveries — List recent deliveries for a webhook","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/webhooks/{id}/deliveries","host":["{{baseUrl}}"],"path":["webhooks","{id}","deliveries"]},"description":"List recent deliveries for a webhook"}},{"name":"POST /webhooks/{id}/deliveries/{deliveryId}/resend — Re-enqueue a past delivery (typically a failed one)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/webhooks/{id}/deliveries/{deliveryId}/resend","host":["{{baseUrl}}"],"path":["webhooks","{id}","deliveries","{deliveryId}","resend"]},"description":"Looks up the original event by id and queues a fresh delivery to this webhook. The receiver will see the same payload + eventType as the first attempt; the new attempt gets a new WebhookDelivery row with attempt=N+1."}},{"name":"POST /webhooks/{id}/test — Fire a synthetic delivery so the operator can verify their receiver","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/webhooks/{id}/test","host":["{{baseUrl}}"],"path":["webhooks","{id}","test"]},"description":"Enqueues a `WebhookTest` event addressed only to this webhook. The receiver gets a normal, signed delivery with eventType=WebhookTest. Useful as a \"ping\" during integration setup."}},{"name":"GET /webhooks/event-types — Event types that webhooks can subscribe to","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/webhooks/event-types","host":["{{baseUrl}}"],"path":["webhooks","event-types"]},"description":"Event types that webhooks can subscribe to"}},{"name":"POST /webhooks/sendgrid/{districtId}","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/webhooks/sendgrid/{districtId}","host":["{{baseUrl}}"],"path":["webhooks","sendgrid","{districtId}"]},"description":"SendGrid delivery webhook (token-authed via ?tok=)."}},{"name":"POST /webhooks/resend/{districtId}","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/webhooks/resend/{districtId}","host":["{{baseUrl}}"],"path":["webhooks","resend","{districtId}"]},"description":"Resend email events webhook (token-authed via ?tok=)."}},{"name":"POST /webhooks/twilio/{districtId}","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/webhooks/twilio/{districtId}","host":["{{baseUrl}}"],"path":["webhooks","twilio","{districtId}"]},"description":"Twilio status webhook (HMAC-SHA1 authed)."}},{"name":"POST /payments/webhook/stripe/{districtId}?","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/payments/webhook/stripe/{districtId}?","host":["{{baseUrl}}"],"path":["payments","webhook","stripe","{districtId}?"]},"description":"Stripe payment-event webhook (HMAC-SHA256 via Stripe-Signature header)."}},{"name":"POST /food-payments/webhook/stripe/{districtId}","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/food-payments/webhook/stripe/{districtId}","host":["{{baseUrl}}"],"path":["food-payments","webhook","stripe","{districtId}"]},"description":"Stripe events for meal-account top-ups."}},{"name":"POST /study/canva/webhooks — Canva webhooks (comment.created, design.updated) — signed, public","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/canva/webhooks","host":["{{baseUrl}}"],"path":["study","canva","webhooks"]},"description":"Canva webhooks (comment.created, design.updated) — signed, public"}},{"name":"POST /esign/webhooks/yrcdoc — YRCDoc webhook (document sent, opened, signed, completed, rejected, cancelled) — shared-secret, public","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/esign/webhooks/yrcdoc","host":["{{baseUrl}}"],"path":["esign","webhooks","yrcdoc"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"YRCDoc webhook (document sent, opened, signed, completed, rejected, cancelled) — shared-secret, public"}}]},{"name":"Students","item":[{"name":"GET /students — List students","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students","host":["{{baseUrl}}"],"path":["students"]},"description":"Returns a paginated list of students in the current district."}},{"name":"POST /students — Create a student","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/students","host":["{{baseUrl}}"],"path":["students"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Creates a new student record. Emits StudentEnrolled when paired with an enrollment."}},{"name":"GET /students/{id} — Get student by ID","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students/{id}","host":["{{baseUrl}}"],"path":["students","{id}"]},"description":"Returns a single student record. Caller must have student.read permission."}},{"name":"PATCH /students/{id} — Update student demographics","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/students/{id}","host":["{{baseUrl}}"],"path":["students","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Partial update of demographic fields (incl. parentEducationLevel and postGradPlan). Emits StudentDemographicsUpdated."}},{"name":"GET /students/{id}/assertions — List state-reporting assertions (compliance flags) for a student","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students/{id}/assertions","host":["{{baseUrl}}"],"path":["students","{id}","assertions"]},"description":"List state-reporting assertions (compliance flags) for a student"}},{"name":"POST /students/{id}/assertions — Record an AT_RISK or TITLE_I assertion for a student","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/students/{id}/assertions","host":["{{baseUrl}}"],"path":["students","{id}","assertions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Creates a district-determined state-reporting flag. `effectiveFrom` defaults to today; source is always `district_determination`. Emits AssertionRecorded."}},{"name":"POST /students/{id}/assertions/{assertionId}/end — End a student assertion (sets effectiveTo)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/students/{id}/assertions/{assertionId}/end","host":["{{baseUrl}}"],"path":["students","{id}","assertions","{assertionId}","end"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"effectiveTo defaults to today. Emits AssertionEnded."}},{"name":"GET /students/{personId}/whole-child — Everything on file about one student, in one response","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students/{personId}/whole-child","host":["{{baseUrl}}"],"path":["students","{personId}","whole-child"]},"description":"Assembles special education, health, attendance, academics, discipline, supports and family into a single payload. Each block names the tables it came from; blocks the caller lacks permission for are listed under `withheld`."}},{"name":"GET /students/{id}/events — Get a student's event history (audit trail)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students/{id}/events","host":["{{baseUrl}}"],"path":["students","{id}","events"]},"description":"Get a student's event history (audit trail)"}}]},{"name":"Persons","item":[{"name":"POST /persons — Create one person","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/persons","host":["{{baseUrl}}"],"path":["persons"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Adds a single person record. The local id is generated when it is not given. A likely duplicate — same email, or same name and date of birth — is refused with 409 and the record it matched, and goes through only with allowDuplicate."}},{"name":"GET /persons — List persons (students, guardians, staff, alumni, contacts)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/persons","host":["{{baseUrl}}"],"path":["persons"]},"description":"List persons (students, guardians, staff, alumni, contacts)"}},{"name":"GET /persons/quick-search — Find students and staff by name (command palette)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/persons/quick-search","host":["{{baseUrl}}"],"path":["persons","quick-search"]},"description":"A few students and staff whose names match q, limited to the schools the caller can reach. Students come back only with student.read and staff only with staff.read; a caller with one of the two gets an empty list for the other."}},{"name":"GET /persons/{id} — Get a single person record","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/persons/{id}","host":["{{baseUrl}}"],"path":["persons","{id}"]},"description":"Get a single person record"}},{"name":"POST /persons/import — Bulk CSV import — preview or apply (upserts by localId)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/persons/import","host":["{{baseUrl}}"],"path":["persons","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Upload a CSV of person records. Use `mode=preview` (default) to validate without committing. Use `mode=apply` to upsert all valid rows. Invalid rows are reported per-row and skipped. Upsert key: (districtId, localId)."}},{"name":"PATCH /persons/bulk — Bulk update persons matching a filter","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/persons/bulk","host":["{{baseUrl}}"],"path":["persons","bulk"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update one or more safe fields on all persons matching the filter. Allowed fields: isActive, email, phoneMobile, phoneHome, gender. PII fields (name, DOB) require individual edits."}},{"name":"GET /persons/duplicates — Detect potential duplicate person records (fuzzy matching)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/persons/duplicates","host":["{{baseUrl}}"],"path":["persons","duplicates"]},"description":"Detect potential duplicate person records (fuzzy matching)"}},{"name":"POST /persons/{id}/merge/{otherId} — Merge two person records (survivor absorbs the other)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/persons/{id}/merge/{otherId}","host":["{{baseUrl}}"],"path":["persons","{id}","merge","{otherId}"]},"description":"Re-points FK relations from the absorbed person to the survivor, fills blank fields on the survivor from the absorbed record, then soft-deletes the absorbed person. Student records are not mergeable via API — contact YRC support."}}]},{"name":"Guardians","item":[{"name":"GET /guardians — List guardians","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/guardians","host":["{{baseUrl}}"],"path":["guardians"]},"description":"List guardians"}},{"name":"POST /guardians — Create guardian","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/guardians","host":["{{baseUrl}}"],"path":["guardians"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create guardian"}},{"name":"GET /guardians/{id} — Get guardian","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/guardians/{id}","host":["{{baseUrl}}"],"path":["guardians","{id}"]},"description":"Get guardian"}},{"name":"GET /guardians/{id}/students — List students linked to this guardian","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/guardians/{id}/students","host":["{{baseUrl}}"],"path":["guardians","{id}","students"]},"description":"List students linked to this guardian"}},{"name":"POST /guardians/{id}/students — Link a guardian to a student (emits GuardianLinked)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/guardians/{id}/students","host":["{{baseUrl}}"],"path":["guardians","{id}","students"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Link a guardian to a student (emits GuardianLinked)"}},{"name":"DELETE /guardianships/{id} — Unlink a guardianship (emits GuardianUnlinked)","request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/guardianships/{id}","host":["{{baseUrl}}"],"path":["guardianships","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Unlink a guardianship (emits GuardianUnlinked)"}}]},{"name":"Custody","item":[{"name":"GET /students/{studentId}/custody-orders — List custody orders for a student","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students/{studentId}/custody-orders","host":["{{baseUrl}}"],"path":["students","{studentId}","custody-orders"]},"description":"List custody orders for a student"}},{"name":"POST /students/{studentId}/custody-orders — Record a new custody order for a student","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/students/{studentId}/custody-orders","host":["{{baseUrl}}"],"path":["students","{studentId}","custody-orders"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a new custody order for a student"}},{"name":"GET /custody-orders/{id} — Get a single custody order by ID","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/custody-orders/{id}","host":["{{baseUrl}}"],"path":["custody-orders","{id}"]},"description":"Get a single custody order by ID"}},{"name":"PATCH /custody-orders/{id} — Update custody order metadata","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/custody-orders/{id}","host":["{{baseUrl}}"],"path":["custody-orders","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update custody order metadata"}},{"name":"POST /custody-orders/{id}/revoke — Revoke a custody order (soft-expire with reason)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/custody-orders/{id}/revoke","host":["{{baseUrl}}"],"path":["custody-orders","{id}","revoke"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Revoke a custody order (soft-expire with reason)"}},{"name":"GET /students/{studentId}/pickup-authorized — Check pickup authorization for a person + student pair","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students/{studentId}/pickup-authorized","host":["{{baseUrl}}"],"path":["students","{studentId}","pickup-authorized"]},"description":"Check pickup authorization for a person + student pair"}}]},{"name":"Staff","item":[{"name":"GET /staff — List staff (and faculty) records","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/staff","host":["{{baseUrl}}"],"path":["staff"]},"description":"List staff (and faculty) records"}},{"name":"POST /staff — Create a staff record","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/staff","host":["{{baseUrl}}"],"path":["staff"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a staff record"}},{"name":"GET /staff/{id} — Get a staff record","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/staff/{id}","host":["{{baseUrl}}"],"path":["staff","{id}"]},"description":"Get a staff record"}}]},{"name":"Enrollments","item":[{"name":"GET /enrollments — List enrollments (filter by person, organization, or active-only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/enrollments","host":["{{baseUrl}}"],"path":["enrollments"]},"description":"List enrollments (filter by person, organization, or active-only)"}},{"name":"POST /enrollments — Create an enrollment (emits StudentEnrolled for students)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/enrollments","host":["{{baseUrl}}"],"path":["enrollments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an enrollment (emits StudentEnrolled for students)"}},{"name":"GET /enrollments/{id} — Get a single enrollment","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/enrollments/{id}","host":["{{baseUrl}}"],"path":["enrollments","{id}"]},"description":"Get a single enrollment"}},{"name":"PATCH /enrollments/{id} — Update an enrollment (grade, primary flag, residency, shared-time)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/enrollments/{id}","host":["{{baseUrl}}"],"path":["enrollments","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update an enrollment (grade, primary flag, residency, shared-time)"}},{"name":"POST /enrollments/{id}/end — End an enrollment (emits StudentWithdrawn for students)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/enrollments/{id}/end","host":["{{baseUrl}}"],"path":["enrollments","{id}","end"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"End an enrollment (emits StudentWithdrawn for students)"}}]},{"name":"Scheduling","item":[{"name":"GET /organizations — List organizations (school, department, grade, homeroom, program)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/organizations","host":["{{baseUrl}}"],"path":["organizations"]},"description":"List organizations (school, department, grade, homeroom, program)"}},{"name":"POST /organizations — Create an organization","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/organizations","host":["{{baseUrl}}"],"path":["organizations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an organization"}},{"name":"GET /organizations/{id} — Get an organization","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/organizations/{id}","host":["{{baseUrl}}"],"path":["organizations","{id}"]},"description":"Get an organization"}},{"name":"PATCH /organizations/{id} — Update organization","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/organizations/{id}","host":["{{baseUrl}}"],"path":["organizations","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update organization"}},{"name":"GET /schools — List schools in the current district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/schools","host":["{{baseUrl}}"],"path":["schools"]},"description":"List schools in the current district"}},{"name":"POST /schools — Create a school (also creates its backing Organization row)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/schools","host":["{{baseUrl}}"],"path":["schools"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a school (also creates its backing Organization row)"}},{"name":"GET /schools/{id} — Get a school","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/schools/{id}","host":["{{baseUrl}}"],"path":["schools","{id}"]},"description":"Get a school"}},{"name":"PATCH /schools/{id} — Update a school","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/schools/{id}","host":["{{baseUrl}}"],"path":["schools","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a school"}},{"name":"GET /school-years — List school years","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-years","host":["{{baseUrl}}"],"path":["school-years"]},"description":"List school years"}},{"name":"POST /school-years — Create a school year","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/school-years","host":["{{baseUrl}}"],"path":["school-years"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a school year"}},{"name":"GET /school-years/current — Get the active school year for this district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-years/current","host":["{{baseUrl}}"],"path":["school-years","current"]},"description":"Get the active school year for this district"}},{"name":"GET /school-years/{id} — Get school year","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-years/{id}","host":["{{baseUrl}}"],"path":["school-years","{id}"]},"description":"Get school year"}},{"name":"PATCH /school-years/{id} — Update school year","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/school-years/{id}","host":["{{baseUrl}}"],"path":["school-years","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update school year"}},{"name":"POST /school-years/{id}/actions/set-current — Mark a school year as current (clears the flag on others)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/school-years/{id}/actions/set-current","host":["{{baseUrl}}"],"path":["school-years","{id}","actions","set-current"]},"description":"Mark a school year as current (clears the flag on others)"}},{"name":"GET /terms — List terms (optionally filter by school year or type)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/terms","host":["{{baseUrl}}"],"path":["terms"]},"description":"List terms (optionally filter by school year or type)"}},{"name":"POST /terms — Create a term","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/terms","host":["{{baseUrl}}"],"path":["terms"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a term"}},{"name":"GET /terms/{id} — Get a term","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/terms/{id}","host":["{{baseUrl}}"],"path":["terms","{id}"]},"description":"Get a term"}},{"name":"PATCH /terms/{id} — Update a term","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/terms/{id}","host":["{{baseUrl}}"],"path":["terms","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a term"}},{"name":"GET /course-requests — List course requests","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/course-requests","host":["{{baseUrl}}"],"path":["course-requests"]},"description":"List course requests"}},{"name":"POST /course-requests — Create a course request","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/course-requests","host":["{{baseUrl}}"],"path":["course-requests"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a course request"}},{"name":"GET /course-requests/{id} — Get a course request","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/course-requests/{id}","host":["{{baseUrl}}"],"path":["course-requests","{id}"]},"description":"Get a course request"}},{"name":"PATCH /course-requests/{id} — Update a course request","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/course-requests/{id}","host":["{{baseUrl}}"],"path":["course-requests","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a course request"}},{"name":"DELETE /course-requests/{id} — Delete a course request","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/course-requests/{id}","host":["{{baseUrl}}"],"path":["course-requests","{id}"]},"description":"Delete a course request"}},{"name":"GET /scheduling/master-schedule — Master schedule for a term (sections + live conflicts)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/scheduling/master-schedule","host":["{{baseUrl}}"],"path":["scheduling","master-schedule"]},"description":"Master schedule for a term (sections + live conflicts)"}},{"name":"GET /scheduling/conflicts — Detect master-schedule conflicts for a term","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/scheduling/conflicts","host":["{{baseUrl}}"],"path":["scheduling","conflicts"]},"description":"Detect master-schedule conflicts for a term"}},{"name":"POST /scheduling/propose — Run the CSP solver and return a proposed assignment (no writes)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/scheduling/propose","host":["{{baseUrl}}"],"path":["scheduling","propose"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Run the CSP solver and return a proposed assignment (no writes)"}},{"name":"POST /scheduling/publish — Apply a proposal: create participations + mark course requests scheduled + emit StudentScheduled events","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/scheduling/publish","host":["{{baseUrl}}"],"path":["scheduling","publish"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Apply a proposal: create participations + mark course requests scheduled + emit StudentScheduled events"}}]},{"name":"Admin","item":[{"name":"GET /admin/users — List district users","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/users","host":["{{baseUrl}}"],"path":["admin","users"]},"description":"List district users"}},{"name":"GET /admin/users/{id} — Get a single user","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/users/{id}","host":["{{baseUrl}}"],"path":["admin","users","{id}"]},"description":"Get a single user"}},{"name":"POST /admin/users/invite — Invite a new user (creates User row + issues invite token)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/admin/users/invite","host":["{{baseUrl}}"],"path":["admin","users","invite"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Invite a new user (creates User row + issues invite token)"}},{"name":"POST /admin/users/{id}/status — Set a user status (active / disabled)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/admin/users/{id}/status","host":["{{baseUrl}}"],"path":["admin","users","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Disabling a user revokes all their active sessions."}},{"name":"POST /admin/users/{id}/mfa-reset — Reset (disable) a user’s MFA so they can re-enroll","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/admin/users/{id}/mfa-reset","host":["{{baseUrl}}"],"path":["admin","users","{id}","mfa-reset"]},"description":"Recovery path for a user who lost their authenticator. Clears mfaEnabled + the stored secret; the user signs in with their password and re-enrolls. Audited."}},{"name":"POST /admin/users/{id}/send-password-reset — Issue a password-reset token for a user (admin action)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/admin/users/{id}/send-password-reset","host":["{{baseUrl}}"],"path":["admin","users","{id}","send-password-reset"]},"description":"Issue a password-reset token for a user (admin action)"}},{"name":"POST /admin/users/{id}/roles — Assign a role (district- or school-scoped) to a user","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/admin/users/{id}/roles","host":["{{baseUrl}}"],"path":["admin","users","{id}","roles"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assign a role (district- or school-scoped) to a user"}},{"name":"DELETE /admin/users/{id}/roles/{userRoleId} — Revoke a role binding from a user","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/admin/users/{id}/roles/{userRoleId}","host":["{{baseUrl}}"],"path":["admin","users","{id}","roles","{userRoleId}"]},"description":"Revoke a role binding from a user"}},{"name":"GET /admin/roles — List the canonical role catalog","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/roles","host":["{{baseUrl}}"],"path":["admin","roles"]},"description":"List the canonical role catalog"}},{"name":"GET /admin/users/{id}/modules — Per-user module access, with each module’s own roles","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/users/{id}/modules","host":["{{baseUrl}}"],"path":["admin","users","{id}","modules"]},"description":"Every module in the catalogue with the access set for this person, what their DEP role gives them anyway, the choices the module can actually honour (its own roles where it has them), a plain summary of what they hold and where it comes from, and the district’s presets."}},{"name":"PUT /admin/users/{id}/modules — Set one module’s access for a user","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/admin/users/{id}/modules","host":["{{baseUrl}}"],"path":["admin","users","{id}","modules"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set one module’s access for a user"}},{"name":"POST /admin/users/{id}/modules — Set several modules’ access for a user","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/admin/users/{id}/modules","host":["{{baseUrl}}"],"path":["admin","users","{id}","modules"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set several modules’ access for a user"}},{"name":"GET /admin/module-access-catalog — The module-access grid for a user about to be created","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/module-access-catalog","host":["{{baseUrl}}"],"path":["admin","module-access-catalog"]},"description":"The module-access grid for a user about to be created"}},{"name":"GET /admin/users/{id}/access-history — Who changed this person’s roles and module access, newest first","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/users/{id}/access-history","host":["{{baseUrl}}"],"path":["admin","users","{id}","access-history"]},"description":"Read from the audit trail. Only named fields are read, so no token can appear here."}},{"name":"PUT /admin/users/{id}/role-scopes — Set which schools one of a user’s roles covers (or make it district-wide)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/admin/users/{id}/role-scopes","host":["{{baseUrl}}"],"path":["admin","users","{id}","role-scopes"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Editing in place from the access summary. `schoolIds: null` means district-wide; an empty list on a school-scoped role is refused, because a role saved with no school is a bug."}},{"name":"POST /admin/users/{id}/role-grants — Add a role to a user from the access summary","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/admin/users/{id}/role-grants","host":["{{baseUrl}}"],"path":["admin","users","{id}","role-grants"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a role to a user from the access summary"}},{"name":"DELETE /admin/users/{id}/role-grants/{roleCode} — Take a role away from a user","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/admin/users/{id}/role-grants/{roleCode}","host":["{{baseUrl}}"],"path":["admin","users","{id}","role-grants","{roleCode}"]},"description":"Refused when it is the person’s own last district-administrator binding, so nobody can lock themselves — or the district — out."}},{"name":"GET /admin/module-access-presets — The district’s module-access presets","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/module-access-presets","host":["{{baseUrl}}"],"path":["admin","module-access-presets"]},"description":"The district’s module-access presets"}},{"name":"POST /admin/module-access-presets — Create or update a module-access preset","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/admin/module-access-presets","host":["{{baseUrl}}"],"path":["admin","module-access-presets"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create or update a module-access preset"}},{"name":"DELETE /admin/module-access-presets/{presetId} — Delete a module-access preset","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/admin/module-access-presets/{presetId}","host":["{{baseUrl}}"],"path":["admin","module-access-presets","{presetId}"]},"description":"Delete a module-access preset"}},{"name":"GET /admin/cross-district/me — Does this account hold cross-district user setup?","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/cross-district/me","host":["{{baseUrl}}"],"path":["admin","cross-district","me"]},"description":"Does this account hold cross-district user setup?"}},{"name":"GET /admin/cross-district/districts — Districts on this installation (name, code and user count only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/cross-district/districts","host":["{{baseUrl}}"],"path":["admin","cross-district","districts"]},"description":"Districts on this installation (name, code and user count only)"}},{"name":"GET /admin/cross-district/districts/{districtId}/users — Users of another district (identity and roles only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/cross-district/districts/{districtId}/users","host":["{{baseUrl}}"],"path":["admin","cross-district","districts","{districtId}","users"]},"description":"Users of another district (identity and roles only)"}},{"name":"GET /admin/cross-district/roles — Role catalogue, for assigning a role in another district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/cross-district/roles","host":["{{baseUrl}}"],"path":["admin","cross-district","roles"]},"description":"Role catalogue, for assigning a role in another district"}},{"name":"GET /admin/cross-district/districts/{districtId}/persons — Search another district’s people, to bind a login to","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/cross-district/districts/{districtId}/persons","host":["{{baseUrl}}"],"path":["admin","cross-district","districts","{districtId}","persons"]},"description":"Search another district’s people, to bind a login to"}},{"name":"POST /admin/cross-district/districts/{districtId}/persons — Create a staff person in another district (so a login can be bound to it)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/admin/cross-district/districts/{districtId}/persons","host":["{{baseUrl}}"],"path":["admin","cross-district","districts","{districtId}","persons"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a staff person in another district (so a login can be bound to it)"}},{"name":"POST /admin/cross-district/districts/{districtId}/users/invite — Invite a user into another district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/admin/cross-district/districts/{districtId}/users/invite","host":["{{baseUrl}}"],"path":["admin","cross-district","districts","{districtId}","users","invite"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The district app’s own invite flow (inviteUser): the same token, the same audit entry and the same set-password journey as /admin/users/new. The person chooses their own password from the link — no password is ever set or shown for them."}},{"name":"PUT /admin/cross-district/districts/{districtId}/users/{userId}/roles — Replace a user’s district-scoped role set in another district","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/admin/cross-district/districts/{districtId}/users/{userId}/roles","host":["{{baseUrl}}"],"path":["admin","cross-district","districts","{districtId}","users","{userId}","roles"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Replace a user’s district-scoped role set in another district"}},{"name":"GET /admin/cross-district/districts/{districtId}/users/{userId}/modules — Per-module access levels for a user in another district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/cross-district/districts/{districtId}/users/{userId}/modules","host":["{{baseUrl}}"],"path":["admin","cross-district","districts","{districtId}","users","{userId}","modules"]},"description":"Per-module access levels for a user in another district"}},{"name":"POST /admin/cross-district/districts/{districtId}/users/{userId}/modules — Set module access levels for a user in another district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/admin/cross-district/districts/{districtId}/users/{userId}/modules","host":["{{baseUrl}}"],"path":["admin","cross-district","districts","{districtId}","users","{userId}","modules"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Capped at the acting person’s OWN levels in their home district: a holder can never grant more elsewhere than they hold themselves."}},{"name":"GET /admin/cross-district/districts/{districtId}/module-access-catalog — The module grid for a user about to be created in another district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/cross-district/districts/{districtId}/module-access-catalog","host":["{{baseUrl}}"],"path":["admin","cross-district","districts","{districtId}","module-access-catalog"]},"description":"The module grid for a user about to be created in another district"}},{"name":"GET /admin/cross-district/holders — Who holds cross-district user setup","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/admin/cross-district/holders","host":["{{baseUrl}}"],"path":["admin","cross-district","holders"]},"description":"Who holds cross-district user setup"}},{"name":"PUT /admin/cross-district/holders/{userId} — Grant or revoke cross-district user setup for an account","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/admin/cross-district/holders/{userId}","host":["{{baseUrl}}"],"path":["admin","cross-district","holders","{userId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Nobody may grant it to themselves, or take it from themselves. The FIRST holder is granted on the server (apps/api/src/scripts/grant-cross-district.mts), never from a screen."}}]},{"name":"Attendance","item":[{"name":"POST /attendance — Bulk mark attendance","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/attendance","host":["{{baseUrl}}"],"path":["attendance"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Each mark produces one AttendanceMarked event; projections are rebuilt asynchronously."}},{"name":"GET /attendance — Query attendance days (projection)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/attendance","host":["{{baseUrl}}"],"path":["attendance"]},"description":"Reads from projection_attendance_days. Projection is eventually consistent — fresh writes may take a few seconds to reflect."}}]},{"name":"Events","item":[{"name":"GET /events — Query the event log","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/events","host":["{{baseUrl}}"],"path":["events"]},"description":"Filter by eventType, subjectId, actorId, and time range. The event log is append-only (spec §4 rule 7, §8)."}},{"name":"GET /events/{id} — Get a single event by id","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/events/{id}","host":["{{baseUrl}}"],"path":["events","{id}"]},"description":"Get a single event by id"}}]},{"name":"Audit","item":[{"name":"GET /audit-log — Query the district audit log","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/audit-log","host":["{{baseUrl}}"],"path":["audit-log"]},"description":"Security-sensitive audit log (spec §4 rule 7). Distinct from the business event log at /events."}},{"name":"GET /audit-log/actions — Distinct audit action values for the district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/audit-log/actions","host":["{{baseUrl}}"],"path":["audit-log","actions"]},"description":"Drives the action filter dropdown on the audit trail page."}}]},{"name":"Agents","item":[{"name":"GET /agents/my-student-scope — Show the caller’s authorized student scope, and the rows it yields","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/agents/my-student-scope","host":["{{baseUrl}}"],"path":["agents","my-student-scope"]},"description":"Show the caller’s authorized student scope, and the rows it yields"}},{"name":"GET /agents — List this district’s AI agents (seeds the roster on first read)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/agents","host":["{{baseUrl}}"],"path":["agents"]},"description":"List this district’s AI agents (seeds the roster on first read)"}},{"name":"GET /agents/tasks — List agent tasks (filter by agent and status)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/agents/tasks","host":["{{baseUrl}}"],"path":["agents","tasks"]},"description":"List agent tasks (filter by agent and status)"}},{"name":"POST /agents/tasks — Give an agent a task and run it. Side-effecting steps are drafted for approval, not executed.","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/agents/tasks","host":["{{baseUrl}}"],"path":["agents","tasks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Give an agent a task and run it. Side-effecting steps are drafted for approval, not executed."}},{"name":"DELETE /agents/tasks — Clear conversations — all of them, or just one agent’s","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/agents/tasks","host":["{{baseUrl}}"],"path":["agents","tasks"]},"description":"Soft-deletes this district’s agent conversations so they leave the chat history. The rows are retained for audit; the AI-call ledger and any approved actions are untouched."}},{"name":"POST /agents/tasks/{id}/messages — Send a follow-up message in a conversation and get the agent’s reply","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/agents/tasks/{id}/messages","host":["{{baseUrl}}"],"path":["agents","tasks","{id}","messages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send a follow-up message in a conversation and get the agent’s reply"}},{"name":"GET /agents/tasks/{id} — Get one task with its skill actions and any subtasks","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/agents/tasks/{id}","host":["{{baseUrl}}"],"path":["agents","tasks","{id}"]},"description":"Get one task with its skill actions and any subtasks"}},{"name":"DELETE /agents/tasks/{id} — Delete one conversation","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/agents/tasks/{id}","host":["{{baseUrl}}"],"path":["agents","tasks","{id}"]},"description":"Soft-deletes the conversation and any subtasks the orchestrator spawned under it, so no orphaned children are left behind."}},{"name":"POST /agents/actions/{id}/approve — Approve a drafted (act-tier) action — performs the real side effect","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/agents/actions/{id}/approve","host":["{{baseUrl}}"],"path":["agents","actions","{id}","approve"]},"description":"Approve a drafted (act-tier) action — performs the real side effect"}},{"name":"POST /agents/actions/{id}/reject — Reject a drafted action — it is discarded, never executed","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/agents/actions/{id}/reject","host":["{{baseUrl}}"],"path":["agents","actions","{id}","reject"]},"description":"Reject a drafted action — it is discarded, never executed"}},{"name":"GET /agents/artifacts — Files an assistant produced during one conversation","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/agents/artifacts","host":["{{baseUrl}}"],"path":["agents","artifacts"]},"description":"Files an assistant produced during one conversation"}},{"name":"GET /agents/artifacts/{id}/download — Download a file an assistant produced","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/agents/artifacts/{id}/download","host":["{{baseUrl}}"],"path":["agents","artifacts","{id}","download"]},"description":"Download a file an assistant produced"}}]},{"name":"Impersonation","item":[{"name":"GET /impersonate/targets — Every role an admin may view the app as, with the people who hold each and a suggested representative","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/impersonate/targets","host":["{{baseUrl}}"],"path":["impersonate","targets"]},"description":"Every role an admin may view the app as, with the people who hold each and a suggested representative"}},{"name":"GET /impersonate/targets/{role}/people — Search the people who hold one role (for \"choose a person\")","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/impersonate/targets/{role}/people","host":["{{baseUrl}}"],"path":["impersonate","targets","{role}","people"]},"description":"Search the people who hold one role (for \"choose a person\")"}},{"name":"GET /impersonate/module-targets — The roles of every module that keeps its own (ITW, IRW, Tech Support, IT Ops, Time & Attendance, OmniSafe, Teacher Command Center, Omni Tutor, Study Partner), with the people who hold each","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/impersonate/module-targets","host":["{{baseUrl}}"],"path":["impersonate","module-targets"]},"description":"The roles of every module that keeps its own (ITW, IRW, Tech Support, IT Ops, Time & Attendance, OmniSafe, Teacher Command Center, Omni Tutor, Study Partner), with the people who hold each"}},{"name":"GET /impersonate/module-targets/{code}/people — Search the people who hold one module role","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/impersonate/module-targets/{code}/people","host":["{{baseUrl}}"],"path":["impersonate","module-targets","{code}","people"]},"description":"Search the people who hold one module role"}},{"name":"POST /impersonate/start — Begin impersonating a user","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/impersonate/start","host":["{{baseUrl}}"],"path":["impersonate","start"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Begin impersonating a user"}},{"name":"POST /impersonate/stop — Stop impersonating and return to the admin session","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/impersonate/stop","host":["{{baseUrl}}"],"path":["impersonate","stop"]},"description":"Stop impersonating and return to the admin session"}},{"name":"GET /impersonate/status — Current impersonation state, if any","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/impersonate/status","host":["{{baseUrl}}"],"path":["impersonate","status"]},"description":"Current impersonation state, if any"}},{"name":"GET /impersonate/support/users — Search users to support (help desk)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/impersonate/support/users","host":["{{baseUrl}}"],"path":["impersonate","support","users"]},"description":"Search users to support (help desk)"}},{"name":"POST /impersonate/support/request — Request support access — emails a one-time code to the user","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/impersonate/support/request","host":["{{baseUrl}}"],"path":["impersonate","support","request"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Request support access — emails a one-time code to the user"}},{"name":"POST /impersonate/support/verify — Verify the consent code and start a support session","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/impersonate/support/verify","host":["{{baseUrl}}"],"path":["impersonate","support","verify"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Verify the consent code and start a support session"}}]},{"name":"Role access","item":[{"name":"GET /role-access — Every role with its module access, permissions and user count","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/role-access","host":["{{baseUrl}}"],"path":["role-access"]},"description":"Every role with its module access, permissions and user count"}},{"name":"PUT /role-access/{roleCode}/modules/{moduleKey} — Grant or revoke a module for a role","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/role-access/{roleCode}/modules/{moduleKey}","host":["{{baseUrl}}"],"path":["role-access","{roleCode}","modules","{moduleKey}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Grant or revoke a module for a role"}},{"name":"GET /role-access/{roleCode}/menu — What a role may see and do in each Facilities and Construction menu item","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/role-access/{roleCode}/menu","host":["{{baseUrl}}"],"path":["role-access","{roleCode}","menu"]},"description":"What a role may see and do in each Facilities and Construction menu item"}},{"name":"PUT /role-access/{roleCode}/menu — Set a role’s level on one menu item, or on every item in a group","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/role-access/{roleCode}/menu","host":["{{baseUrl}}"],"path":["role-access","{roleCode}","menu"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set a role’s level on one menu item, or on every item in a group"}},{"name":"GET /role-access/me/menu — Menu levels explicitly set for the roles this user holds","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/role-access/me/menu","host":["{{baseUrl}}"],"path":["role-access","me","menu"]},"description":"Menu levels explicitly set for the roles this user holds"}},{"name":"POST /roles — Create a role for this district, copied from an existing one","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/roles","host":["{{baseUrl}}"],"path":["roles"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a role for this district, copied from an existing one"}},{"name":"DELETE /roles/{roleCode} — Delete a district’s own role","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/roles/{roleCode}","host":["{{baseUrl}}"],"path":["roles","{roleCode}"]},"description":"Delete a district’s own role"}}]},{"name":"Courses","item":[{"name":"GET /courses — List courses in the catalog","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/courses","host":["{{baseUrl}}"],"path":["courses"]},"description":"List courses in the catalog"}},{"name":"POST /courses — Create a course","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/courses","host":["{{baseUrl}}"],"path":["courses"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a course"}},{"name":"GET /courses/{id} — Get a course","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/courses/{id}","host":["{{baseUrl}}"],"path":["courses","{id}"]},"description":"Get a course"}},{"name":"PATCH /courses/{id} — Update a course","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/courses/{id}","host":["{{baseUrl}}"],"path":["courses","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a course"}}]},{"name":"Sections","item":[{"name":"GET /sections — List sections","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sections","host":["{{baseUrl}}"],"path":["sections"]},"description":"Filter by term, course, organization, or teacher. Teacher filter returns sections where the person is a primary or co-teacher in an active participation."}},{"name":"POST /sections — Create a section (emits SectionCreated, optionally TeacherAssignedToSection)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sections","host":["{{baseUrl}}"],"path":["sections"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a section (emits SectionCreated, optionally TeacherAssignedToSection)"}},{"name":"GET /sections/{id} — Get a section","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sections/{id}","host":["{{baseUrl}}"],"path":["sections","{id}"]},"description":"Get a section"}},{"name":"PATCH /sections/{id} — Update a section (emits SectionScheduleChanged if the schedule changes)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sections/{id}","host":["{{baseUrl}}"],"path":["sections","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a section (emits SectionScheduleChanged if the schedule changes)"}},{"name":"GET /sections/{id}/roster — Get the active roster for a section","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sections/{id}/roster","host":["{{baseUrl}}"],"path":["sections","{id}","roster"]},"description":"Get the active roster for a section"}},{"name":"POST /participations — Add a person to a section (student, teacher, aide, observer)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/participations","host":["{{baseUrl}}"],"path":["participations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Emits StudentAddedToSection for students, TeacherAssignedToSection for PRIMARY_TEACHER/CO_TEACHER."}},{"name":"POST /participations/{id}/end — End a participation (emits StudentRemovedFromSection for students)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/participations/{id}/end","host":["{{baseUrl}}"],"path":["participations","{id}","end"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"End a participation (emits StudentRemovedFromSection for students)"}}]},{"name":"Gradebook","item":[{"name":"GET /assignments — List assignments","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/assignments","host":["{{baseUrl}}"],"path":["assignments"]},"description":"List assignments"}},{"name":"POST /assignments — Create an assignment (emits AssignmentCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/assignments","host":["{{baseUrl}}"],"path":["assignments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an assignment (emits AssignmentCreated)"}},{"name":"GET /assignments/{id} — Get an assignment","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/assignments/{id}","host":["{{baseUrl}}"],"path":["assignments","{id}"]},"description":"Get an assignment"}},{"name":"PATCH /assignments/{id} — Update an assignment","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/assignments/{id}","host":["{{baseUrl}}"],"path":["assignments","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update an assignment"}},{"name":"GET /assignments/{id}/scores — List scores for an assignment","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/assignments/{id}/scores","host":["{{baseUrl}}"],"path":["assignments","{id}","scores"]},"description":"List scores for an assignment"}},{"name":"POST /assignments/{id}/scores — Bulk enter scores (emits AssignmentScored per student)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/assignments/{id}/scores","host":["{{baseUrl}}"],"path":["assignments","{id}","scores"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Bulk enter scores (emits AssignmentScored per student)"}},{"name":"GET /grades/current — Query the section-grade projection","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/grades/current","host":["{{baseUrl}}"],"path":["grades","current"]},"description":"Reads from projection_section_grades. Eventually consistent — freshly entered scores may take a few seconds to reflect."}},{"name":"GET /sections/{id}/gradebook — Complete gradebook view for a section","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sections/{id}/gradebook","host":["{{baseUrl}}"],"path":["sections","{id}","gradebook"]},"description":"Returns the section, its active student roster, all assignments, and every score. Suitable for the teacher portal gradebook page."}},{"name":"POST /sections/{id}/actions/publish-grades — Publish final grades for the term (emits SectionGradePosted per student)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sections/{id}/actions/publish-grades","host":["{{baseUrl}}"],"path":["sections","{id}","actions","publish-grades"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Publish final grades for the term (emits SectionGradePosted per student)"}}]},{"name":"Parent Portal","item":[{"name":"GET /parent/notification-preferences — Get notification preferences for the signed-in guardian","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/parent/notification-preferences","host":["{{baseUrl}}"],"path":["parent","notification-preferences"]},"description":"Get notification preferences for the signed-in guardian"}},{"name":"PATCH /parent/notification-preferences — Update notification preferences for the signed-in guardian","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/parent/notification-preferences","host":["{{baseUrl}}"],"path":["parent","notification-preferences"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update notification preferences for the signed-in guardian"}},{"name":"GET /parent/students — List students linked to the signed-in guardian","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/parent/students","host":["{{baseUrl}}"],"path":["parent","students"]},"description":"List students linked to the signed-in guardian"}},{"name":"GET /parent/students/{id}/attendance — Attendance days for one of the guardian's students","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/parent/students/{id}/attendance","host":["{{baseUrl}}"],"path":["parent","students","{id}","attendance"]},"description":"Attendance days for one of the guardian's students"}},{"name":"GET /parent/students/{id}/grades — Current grades for one of the guardian's students","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/parent/students/{id}/grades","host":["{{baseUrl}}"],"path":["parent","students","{id}","grades"]},"description":"Current grades for one of the guardian's students"}},{"name":"GET /parent/students/{id}/assignments — Upcoming + recent assignments for one of the guardian's students","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/parent/students/{id}/assignments","host":["{{baseUrl}}"],"path":["parent","students","{id}","assignments"]},"description":"Upcoming + recent assignments for one of the guardian's students"}},{"name":"GET /parent/students/{id} — Student summary card (attendance rate + GPA + current sections)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/parent/students/{id}","host":["{{baseUrl}}"],"path":["parent","students","{id}"]},"description":"Student summary card (attendance rate + GPA + current sections)"}},{"name":"GET /parent/students/{id}/schedule — Current schedule for one of the guardian's students","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/parent/students/{id}/schedule","host":["{{baseUrl}}"],"path":["parent","students","{id}","schedule"]},"description":"Current schedule for one of the guardian's students"}},{"name":"GET /parent/inbox — Messages addressed to the signed-in guardian","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/parent/inbox","host":["{{baseUrl}}"],"path":["parent","inbox"]},"description":"Messages addressed to the signed-in guardian"}},{"name":"GET /parent/students/{id}/medications — Active medications + recent doses for a guardian's student","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/parent/students/{id}/medications","host":["{{baseUrl}}"],"path":["parent","students","{id}","medications"]},"description":"Active medications + recent doses for a guardian's student"}},{"name":"GET /parent/students/{id}/screenings — Recent health screenings for a guardianed student","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/parent/students/{id}/screenings","host":["{{baseUrl}}"],"path":["parent","students","{id}","screenings"]},"description":"Recent health screenings for a guardianed student"}},{"name":"GET /parent/students/{id}/transportation — A guardianed student's bus assignment + any alternate pickups","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/parent/students/{id}/transportation","host":["{{baseUrl}}"],"path":["parent","students","{id}","transportation"]},"description":"A guardianed student's bus assignment + any alternate pickups"}},{"name":"POST /parent/students/{id}/alternate-pickups — Guardian opens an alternate-pickup request (emits AlternatePickupRequested)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/parent/students/{id}/alternate-pickups","host":["{{baseUrl}}"],"path":["parent","students","{id}","alternate-pickups"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Guardian opens an alternate-pickup request (emits AlternatePickupRequested)"}},{"name":"GET /parent/students/{id}/meal-service — Guardianed student's meal account + eligibility + recent activity","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/parent/students/{id}/meal-service","host":["{{baseUrl}}"],"path":["parent","students","{id}","meal-service"]},"description":"Guardianed student's meal account + eligibility + recent activity"}},{"name":"POST /parent/students/{id}/meal-service/fund — Guardian adds funds to a student's meal account (emits MealAccountFunded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/parent/students/{id}/meal-service/fund","host":["{{baseUrl}}"],"path":["parent","students","{id}","meal-service","fund"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Guardian adds funds to a student's meal account (emits MealAccountFunded)"}},{"name":"POST /parent/meal-service/applications — Submit a household meal-benefits application","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/parent/meal-service/applications","host":["{{baseUrl}}"],"path":["parent","meal-service","applications"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Applicant must be the signed-in guardian. Each student member must be a student this guardian is linked to."}},{"name":"GET /parent/students/{id}/fees — Guardianed student's fees — balance, open charges, payment history","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/parent/students/{id}/fees","host":["{{baseUrl}}"],"path":["parent","students","{id}","fees"]},"description":"Guardianed student's fees — balance, open charges, payment history"}},{"name":"POST /parent/fees/{id}/pay — Finalize an online (Stripe) payment against a fee (emits FeePaid)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/parent/fees/{id}/pay","host":["{{baseUrl}}"],"path":["parent","fees","{id}","pay"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Called after the front end confirms a Stripe PaymentIntent. We record the payment, finalize status, and bump the ledger. The webhook handler is idempotent against `processorIntentId`."}},{"name":"GET /parent/meal-service/online-payments — Whether the district takes card payments for meals","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/parent/meal-service/online-payments","host":["{{baseUrl}}"],"path":["parent","meal-service","online-payments"]},"description":"Whether the district takes card payments for meals"}},{"name":"POST /parent/students/{id}/meal-service/checkout — Start card checkout to add funds","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/parent/students/{id}/meal-service/checkout","host":["{{baseUrl}}"],"path":["parent","students","{id}","meal-service","checkout"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start card checkout to add funds"}},{"name":"PATCH /parent/students/{id}/meal-service/settings — Set the low-balance alert level","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/parent/students/{id}/meal-service/settings","host":["{{baseUrl}}"],"path":["parent","students","{id}","meal-service","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set the low-balance alert level"}}]},{"name":"Student Portal","item":[{"name":"GET /student/me — Signed-in student profile","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/student/me","host":["{{baseUrl}}"],"path":["student","me"]},"description":"Signed-in student profile"}},{"name":"GET /student/me/schedule — Signed-in student's current schedule","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/student/me/schedule","host":["{{baseUrl}}"],"path":["student","me","schedule"]},"description":"Signed-in student's current schedule"}},{"name":"GET /student/me/attendance — Signed-in student's attendance history","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/student/me/attendance","host":["{{baseUrl}}"],"path":["student","me","attendance"]},"description":"Signed-in student's attendance history"}},{"name":"GET /student/me/grades — Signed-in student's current grades","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/student/me/grades","host":["{{baseUrl}}"],"path":["student","me","grades"]},"description":"Signed-in student's current grades"}},{"name":"GET /student/me/assignments — Signed-in student's upcoming + recent assignments","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/student/me/assignments","host":["{{baseUrl}}"],"path":["student","me","assignments"]},"description":"Signed-in student's upcoming + recent assignments"}},{"name":"GET /student/me/medications — The signed-in student's active medications + recent doses","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/student/me/medications","host":["{{baseUrl}}"],"path":["student","me","medications"]},"description":"The signed-in student's active medications + recent doses"}},{"name":"GET /student/me/screenings — The signed-in student's recent health screenings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/student/me/screenings","host":["{{baseUrl}}"],"path":["student","me","screenings"]},"description":"The signed-in student's recent health screenings"}},{"name":"GET /student/me/transportation — The signed-in student's bus assignment + any alternate pickups","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/student/me/transportation","host":["{{baseUrl}}"],"path":["student","me","transportation"]},"description":"The signed-in student's bus assignment + any alternate pickups"}},{"name":"GET /student/me/meal-service — Signed-in student's meal account + recent activity","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/student/me/meal-service","host":["{{baseUrl}}"],"path":["student","me","meal-service"]},"description":"Signed-in student's meal account + recent activity"}},{"name":"GET /student/me/fees — Signed-in student's fees (read-only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/student/me/fees","host":["{{baseUrl}}"],"path":["student","me","fees"]},"description":"Signed-in student's fees (read-only)"}}]},{"name":"Health","item":[{"name":"GET /health/visits — List nurse visits","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/health/visits","host":["{{baseUrl}}"],"path":["health","visits"]},"description":"List nurse visits"}},{"name":"POST /health/visits — Record a nurse visit (emits HealthEncounter)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/health/visits","host":["{{baseUrl}}"],"path":["health","visits"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a nurse visit (emits HealthEncounter)"}},{"name":"GET /health/visits/{id} — Get a nurse visit","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/health/visits/{id}","host":["{{baseUrl}}"],"path":["health","visits","{id}"]},"description":"Get a nurse visit"}},{"name":"GET /health/medications — List medication prescriptions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/health/medications","host":["{{baseUrl}}"],"path":["health","medications"]},"description":"List medication prescriptions"}},{"name":"POST /health/medications — Record a medication prescription","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/health/medications","host":["{{baseUrl}}"],"path":["health","medications"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a medication prescription"}},{"name":"GET /health/medications/due — Scheduled doses due today","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/health/medications/due","host":["{{baseUrl}}"],"path":["health","medications","due"]},"description":"Returns one row per (med × scheduled time) for active scheduled orders today. PRN orders are not included."}},{"name":"GET /health/medications/{id} — Get a medication","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/health/medications/{id}","host":["{{baseUrl}}"],"path":["health","medications","{id}"]},"description":"Get a medication"}},{"name":"PATCH /health/medications/{id} — Update a medication order (cannot change controlled-substance class)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/health/medications/{id}","host":["{{baseUrl}}"],"path":["health","medications","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a medication order (cannot change controlled-substance class)"}},{"name":"GET /health/medications/{id}/administrations — Administration history for a medication","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/health/medications/{id}/administrations","host":["{{baseUrl}}"],"path":["health","medications","{id}","administrations"]},"description":"Administration history for a medication"}},{"name":"POST /health/medications/{id}/discontinue — Discontinue a medication order","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/health/medications/{id}/discontinue","host":["{{baseUrl}}"],"path":["health","medications","{id}","discontinue"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Flags the order inactive with a reason; further \"due\" rows and new doses are blocked. History remains."}},{"name":"POST /health/medications/administrations — Log a medication administration (emits MedicationAdministered)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/health/medications/administrations","host":["{{baseUrl}}"],"path":["health","medications","administrations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Supports status = given | refused | missed | held. Schedule-II controlled meds require a second-nurse `witnessUserId` on any dose with status=given."}},{"name":"GET /health/immunizations — List immunization records","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/health/immunizations","host":["{{baseUrl}}"],"path":["health","immunizations"]},"description":"List immunization records"}},{"name":"POST /health/immunizations — Record an immunization (emits ImmunizationRecorded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/health/immunizations","host":["{{baseUrl}}"],"path":["health","immunizations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record an immunization (emits ImmunizationRecorded)"}},{"name":"POST /health/immunizations/njiis-sync — Trigger NJIIS immunization sync for this district","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/health/immunizations/njiis-sync","host":["{{baseUrl}}"],"path":["health","immunizations","njiis-sync"]},"description":"Queries NJIIS for all active students, upserts matched vaccination records, detects conflicts with manually-entered data. Credentials must be configured via NJIIS_USERNAME / NJIIS_PASSWORD / NJIIS_FACILITY env vars (or district-scoped equivalents)."}},{"name":"GET /health/immunizations/njiis-status — NJIIS sync status and history for this district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/health/immunizations/njiis-status","host":["{{baseUrl}}"],"path":["health","immunizations","njiis-status"]},"description":"NJIIS sync status and history for this district"}},{"name":"GET /health/screenings — List health screenings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/health/screenings","host":["{{baseUrl}}"],"path":["health","screenings"]},"description":"List health screenings"}},{"name":"POST /health/screenings — Record a health screening (emits HealthScreeningCompleted)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/health/screenings","host":["{{baseUrl}}"],"path":["health","screenings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Status is derived from the result unless explicitly overridden. Abnormal results automatically set followupNeeded=true so the referral queue picks them up."}},{"name":"GET /health/screenings/compliance — Screening compliance matrix (who still owes what this year)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/health/screenings/compliance","host":["{{baseUrl}}"],"path":["health","screenings","compliance"]},"description":"Returns one row per (student × required screening) for the current school year. `satisfied` means there is a screening of that type on file since Aug 1. Use to surface a nurse-side \"still to do\" list."}},{"name":"GET /health/screenings/{id} — Get a screening","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/health/screenings/{id}","host":["{{baseUrl}}"],"path":["health","screenings","{id}"]},"description":"Get a screening"}},{"name":"PATCH /health/screenings/{id} — Edit a screening (correct a typo, update notes, override status)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/health/screenings/{id}","host":["{{baseUrl}}"],"path":["health","screenings","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a screening (correct a typo, update notes, override status)"}},{"name":"POST /health/screenings/{id}/referral — Record that a family referral was sent for an abnormal screening","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/health/screenings/{id}/referral","host":["{{baseUrl}}"],"path":["health","screenings","{id}","referral"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Stamps `referralSentOn` and appends a note. Emits ScreeningReferralSent. Only valid on screenings where followupNeeded=true."}},{"name":"POST /health/physical-exams — Record a pre-participation physical examination","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/health/physical-exams","host":["{{baseUrl}}"],"path":["health","physical-exams"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a pre-participation physical examination"}},{"name":"GET /health/physical-exams — List physical examinations (filter by studentId)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/health/physical-exams","host":["{{baseUrl}}"],"path":["health","physical-exams"]},"description":"List physical examinations (filter by studentId)"}}]},{"name":"Discipline","item":[{"name":"GET /incidents — List discipline incidents","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/incidents","host":["{{baseUrl}}"],"path":["incidents"]},"description":"List discipline incidents"}},{"name":"POST /incidents — Create a discipline incident (emits IncidentReported)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/incidents","host":["{{baseUrl}}"],"path":["incidents"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a discipline incident (emits IncidentReported)"}},{"name":"GET /incidents/{id} — Get an incident with participants and actions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/incidents/{id}","host":["{{baseUrl}}"],"path":["incidents","{id}"]},"description":"Get an incident with participants and actions"}},{"name":"PATCH /incidents/{id} — Edit an incident, log parent notification, close or reopen it (emits IncidentUpdated)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/incidents/{id}","host":["{{baseUrl}}"],"path":["incidents","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an incident, log parent notification, close or reopen it (emits IncidentUpdated)"}},{"name":"POST /incidents/{id}/actions — Assign a consequence (emits IncidentActionAssigned)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/incidents/{id}/actions","host":["{{baseUrl}}"],"path":["incidents","{id}","actions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assign a consequence (emits IncidentActionAssigned)"}},{"name":"POST /incidents/{id}/participants — Add a student to an incident (emits IncidentParticipantAdded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/incidents/{id}/participants","host":["{{baseUrl}}"],"path":["incidents","{id}","participants"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a student to an incident (emits IncidentParticipantAdded)"}},{"name":"GET /hib/policy — Resolve the district's effective HIB policy (state default + district overrides).","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hib/policy","host":["{{baseUrl}}"],"path":["hib","policy"]},"description":"Returns the policy code, deadline (school-days or calendar-days), recognized outcomes, bias categories, and notification checklist for the current district. When the district's state has no HIB statute, `disabled` is true and the feature is inert."}},{"name":"GET /hib/policy/catalog — List all built-in HIB policies in the Forge catalog.","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hib/policy/catalog","host":["{{baseUrl}}"],"path":["hib","policy","catalog"]},"description":"Surfaces every policy definition shipped with the product — the admin UI picker uses this to show the full option set to districts setting an override."}},{"name":"GET /hib-investigations — List HIB investigations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hib-investigations","host":["{{baseUrl}}"],"path":["hib-investigations"]},"description":"List HIB investigations"}},{"name":"POST /hib-investigations — Open an HIB investigation against an existing incident (emits HibInvestigationOpened)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hib-investigations","host":["{{baseUrl}}"],"path":["hib-investigations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Deadline is computed from the district's resolved HIB policy — school-days when a district calendar feed is available, calendar-day approximation otherwise. `deadlineApproximate` on the response flags when the UI should warn that the deadline is an approximation."}},{"name":"GET /hib-investigations/{id} — Get an HIB investigation","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hib-investigations/{id}","host":["{{baseUrl}}"],"path":["hib-investigations","{id}"]},"description":"Get an HIB investigation"}},{"name":"PATCH /hib-investigations/{id} — Record HIB milestones, findings, remedial actions or an appeal","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hib-investigations/{id}","host":["{{baseUrl}}"],"path":["hib-investigations","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record HIB milestones, findings, remedial actions or an appeal"}},{"name":"POST /hib-investigations/{id}/complete — Close an HIB investigation (emits HibInvestigationCompleted)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hib-investigations/{id}/complete","host":["{{baseUrl}}"],"path":["hib-investigations","{id}","complete"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The outcome must be one recognized by the district's resolved HIB policy. Unknown outcomes return a 422 with the list of valid codes."}},{"name":"POST /hib-investigations/{id}/notifications — Log a required HIB notice (guardians, superintendent, board)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hib-investigations/{id}/notifications","host":["{{baseUrl}}"],"path":["hib-investigations","{id}","notifications"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Log a required HIB notice (guardians, superintendent, board)"}},{"name":"POST /restraint-seclusion — Log a restraint or seclusion event (emits RestraintSeclusionLogged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/restraint-seclusion","host":["{{baseUrl}}"],"path":["restraint-seclusion"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"NJ-reportable event; the audit log retains this record indefinitely. Witnesses are recorded as person ids."}},{"name":"GET /incidents/{id}/escalations — List escalations for a discipline incident","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/incidents/{id}/escalations","host":["{{baseUrl}}"],"path":["incidents","{id}","escalations"]},"description":"List escalations for a discipline incident"}},{"name":"POST /incidents/{id}/escalations — Open a formal escalation for an incident (emits DisciplineEscalationOpened)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/incidents/{id}/escalations","host":["{{baseUrl}}"],"path":["incidents","{id}","escalations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Open a formal escalation for an incident (emits DisciplineEscalationOpened)"}},{"name":"PATCH /incidents/{id}/escalations/{escId} — Update an escalation — schedule/hold hearing, record outcome, set sanction","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/incidents/{id}/escalations/{escId}","host":["{{baseUrl}}"],"path":["incidents","{id}","escalations","{escId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update an escalation — schedule/hold hearing, record outcome, set sanction"}},{"name":"POST /incidents/{id}/escalations/{escId}/notice — Record that a parent notice was issued (emits EscalationNoticeIssued)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/incidents/{id}/escalations/{escId}/notice","host":["{{baseUrl}}"],"path":["incidents","{id}","escalations","{escId}","notice"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record that a parent notice was issued (emits EscalationNoticeIssued)"}},{"name":"POST /incidents/{id}/escalations/{escId}/appeal — File a family appeal of the escalation outcome (emits DisciplineAppealFiled)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/incidents/{id}/escalations/{escId}/appeal","host":["{{baseUrl}}"],"path":["incidents","{id}","escalations","{escId}","appeal"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"File a family appeal of the escalation outcome (emits DisciplineAppealFiled)"}},{"name":"PATCH /incidents/{id}/escalations/{escId}/appeal — Record the appeal decision (emits DisciplineAppealDecided)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/incidents/{id}/escalations/{escId}/appeal","host":["{{baseUrl}}"],"path":["incidents","{id}","escalations","{escId}","appeal"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record the appeal decision (emits DisciplineAppealDecided)"}}]},{"name":"Communications","item":[{"name":"GET /messages — List messages sent from this district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/messages","host":["{{baseUrl}}"],"path":["messages"]},"description":"List messages sent from this district"}},{"name":"POST /messages — Send a message (one-to-many) via the worker (emits CommunicationSent)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/messages","host":["{{baseUrl}}"],"path":["messages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Records a row in `communications`, enqueues a send-notification job, and emits CommunicationSent. Actual delivery happens in the notifications worker; check delivery status via GET /v1/messages/:id."}},{"name":"GET /messages/{id} — Message detail with per-recipient delivery receipts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/messages/{id}","host":["{{baseUrl}}"],"path":["messages","{id}"]},"description":"Message detail with per-recipient delivery receipts"}},{"name":"POST /broadcasts — Emergency or district-wide broadcast to a named audience","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/broadcasts","host":["{{baseUrl}}"],"path":["broadcasts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Resolves the audience to a recipient list at send time, records one Communication row, enqueues the notification job (or defers it when scheduled), and emits CommunicationSent. Requires broadcast.send permission."}},{"name":"GET /templates — List message templates","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/templates","host":["{{baseUrl}}"],"path":["templates"]},"description":"List message templates"}},{"name":"POST /templates — Create a message template","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/templates","host":["{{baseUrl}}"],"path":["templates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a message template"}},{"name":"GET /templates/{id} — Get a message template","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/templates/{id}","host":["{{baseUrl}}"],"path":["templates","{id}"]},"description":"Get a message template"}},{"name":"PATCH /templates/{id} — Update a message template","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/templates/{id}","host":["{{baseUrl}}"],"path":["templates","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a message template"}},{"name":"GET /comms/settings — Get communications provider settings (masked — no credentials returned)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/comms/settings","host":["{{baseUrl}}"],"path":["comms","settings"]},"description":"Get communications provider settings (masked — no credentials returned)"}},{"name":"PATCH /comms/settings — Update email / SMS provider configuration","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/comms/settings","host":["{{baseUrl}}"],"path":["comms","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Writes email and/or SMS provider credentials into District.settings.comms. Credentials (API keys, auth tokens) are write-only — omit them to keep existing values unchanged. A webhook token is generated automatically for SendGrid on first save."}},{"name":"DELETE /comms/settings/suppressions — Clear the bounce/unsubscribe suppression list (or remove one address)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/comms/settings/suppressions","host":["{{baseUrl}}"],"path":["comms","settings","suppressions"]},"description":"Clear the bounce/unsubscribe suppression list (or remove one address)"}},{"name":"GET /announcements — List announcements (all statuses) with read/ack counts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/announcements","host":["{{baseUrl}}"],"path":["announcements"]},"description":"List announcements (all statuses) with read/ack counts"}},{"name":"POST /announcements — Create a draft announcement (emits AnnouncementCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/announcements","host":["{{baseUrl}}"],"path":["announcements"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a draft announcement (emits AnnouncementCreated)"}},{"name":"PATCH /announcements/{id} — Update an announcement","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/announcements/{id}","host":["{{baseUrl}}"],"path":["announcements","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update an announcement"}},{"name":"POST /announcements/{id}/publish — Publish an announcement (emits AnnouncementPublished)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/announcements/{id}/publish","host":["{{baseUrl}}"],"path":["announcements","{id}","publish"]},"description":"Publish an announcement (emits AnnouncementPublished)"}},{"name":"POST /announcements/{id}/archive — Archive an announcement (emits AnnouncementArchived)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/announcements/{id}/archive","host":["{{baseUrl}}"],"path":["announcements","{id}","archive"]},"description":"Archive an announcement (emits AnnouncementArchived)"}},{"name":"GET /announcements/feed — Published announcements for the signed-in user (pinned first)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/announcements/feed","host":["{{baseUrl}}"],"path":["announcements","feed"]},"description":"Published announcements for the signed-in user (pinned first)"}},{"name":"POST /announcements/{id}/read — Mark an announcement read for the signed-in user","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/announcements/{id}/read","host":["{{baseUrl}}"],"path":["announcements","{id}","read"]},"description":"Mark an announcement read for the signed-in user"}},{"name":"POST /announcements/{id}/acknowledge — Acknowledge an announcement (emits AnnouncementAcknowledged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/announcements/{id}/acknowledge","host":["{{baseUrl}}"],"path":["announcements","{id}","acknowledge"]},"description":"Acknowledge an announcement (emits AnnouncementAcknowledged)"}},{"name":"GET /conversations — List the caller's conversation threads (newest first)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/conversations","host":["{{baseUrl}}"],"path":["conversations"]},"description":"List the caller's conversation threads (newest first)"}},{"name":"POST /conversations — Start a conversation (emits ConversationStarted + ConversationMessageSent)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/conversations","host":["{{baseUrl}}"],"path":["conversations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a conversation (emits ConversationStarted + ConversationMessageSent)"}},{"name":"GET /conversations/recipients — Who the caller may start a conversation with","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/conversations/recipients","host":["{{baseUrl}}"],"path":["conversations","recipients"]},"description":"Who the caller may start a conversation with"}},{"name":"GET /conversations/{id} — Full thread (participants only) — marks the thread read","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/conversations/{id}","host":["{{baseUrl}}"],"path":["conversations","{id}"]},"description":"Full thread (participants only) — marks the thread read"}},{"name":"POST /conversations/{id}/messages — Append a message (participants only, emits ConversationMessageSent)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/conversations/{id}/messages","host":["{{baseUrl}}"],"path":["conversations","{id}","messages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Append a message (participants only, emits ConversationMessageSent)"}},{"name":"POST /conversations/{id}/close — Close a conversation (creator or comms.admin)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/conversations/{id}/close","host":["{{baseUrl}}"],"path":["conversations","{id}","close"]},"description":"Close a conversation (creator or comms.admin)"}}]},{"name":"Compliance","item":[{"name":"GET /compliance/rules — List the compliance rules for this district's state","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/rules","host":["{{baseUrl}}"],"path":["compliance","rules"]},"description":"List the compliance rules for this district's state"}},{"name":"POST /compliance/rules/run — Evaluate the district state's rules and persist findings","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/compliance/rules/run","host":["{{baseUrl}}"],"path":["compliance","rules","run"]},"description":"Runs every rule in the district state's rule set, persists findings into compliance_findings (upsert + auto-resolve stale), and returns the consolidated report with persisted counts."}},{"name":"GET /compliance/custom-rules — List district-authored custom rules (incl. disabled)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/custom-rules","host":["{{baseUrl}}"],"path":["compliance","custom-rules"]},"description":"List district-authored custom rules (incl. disabled)"}},{"name":"POST /compliance/custom-rules — Create a district custom rule","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/custom-rules","host":["{{baseUrl}}"],"path":["compliance","custom-rules"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a district custom rule"}},{"name":"PATCH /compliance/custom-rules/{id} — Update a district custom rule","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/custom-rules/{id}","host":["{{baseUrl}}"],"path":["compliance","custom-rules","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a district custom rule"}},{"name":"DELETE /compliance/custom-rules/{id} — Delete a custom rule (and its open findings)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/compliance/custom-rules/{id}","host":["{{baseUrl}}"],"path":["compliance","custom-rules","{id}"]},"description":"Delete a custom rule (and its open findings)"}},{"name":"GET /compliance/findings — List persisted compliance findings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/findings","host":["{{baseUrl}}"],"path":["compliance","findings"]},"description":"List persisted compliance findings"}},{"name":"GET /compliance/findings/summary — Open-finding counts by severity/rule + score trend","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/findings/summary","host":["{{baseUrl}}"],"path":["compliance","findings","summary"]},"description":"Open-finding counts by severity/rule + score trend"}},{"name":"POST /compliance/findings/{id}/resolve — Resolve a finding with a required resolution note","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/findings/{id}/resolve","host":["{{baseUrl}}"],"path":["compliance","findings","{id}","resolve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Resolve a finding with a required resolution note"}},{"name":"POST /compliance/findings/{id}/reopen — Reopen a previously-resolved finding","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/compliance/findings/{id}/reopen","host":["{{baseUrl}}"],"path":["compliance","findings","{id}","reopen"]},"description":"Reopen a previously-resolved finding"}},{"name":"PATCH /compliance/findings/{id} — Update a finding’s review status and/or assignee","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/findings/{id}","host":["{{baseUrl}}"],"path":["compliance","findings","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a finding’s review status and/or assignee"}},{"name":"GET /compliance/findings/{id}/notes — List the progress-notes trail for a finding","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/findings/{id}/notes","host":["{{baseUrl}}"],"path":["compliance","findings","{id}","notes"]},"description":"List the progress-notes trail for a finding"}},{"name":"POST /compliance/findings/{id}/notes — Append a progress note to a finding","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/findings/{id}/notes","host":["{{baseUrl}}"],"path":["compliance","findings","{id}","notes"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Append a progress note to a finding"}},{"name":"GET /compliance/tasks — List compliance tasks","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/tasks","host":["{{baseUrl}}"],"path":["compliance","tasks"]},"description":"List compliance tasks"}},{"name":"POST /compliance/tasks — Create a compliance task (emits ComplianceTaskCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/tasks","host":["{{baseUrl}}"],"path":["compliance","tasks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a compliance task (emits ComplianceTaskCreated)"}},{"name":"PATCH /compliance/tasks/{id} — Update a compliance task: assign, reprioritize, set due date, complete or reopen","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/tasks/{id}","host":["{{baseUrl}}"],"path":["compliance","tasks","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a compliance task: assign, reprioritize, set due date, complete or reopen"}},{"name":"GET /compliance/schedules — State submission calendar","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/schedules","host":["{{baseUrl}}"],"path":["compliance","schedules"]},"description":"State submission calendar"}},{"name":"POST /compliance/schedules — Add a submission deadline","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/schedules","host":["{{baseUrl}}"],"path":["compliance","schedules"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a submission deadline"}},{"name":"PATCH /compliance/schedules/{id} — Correct a deadline (the state moved it) or deactivate it","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/schedules/{id}","host":["{{baseUrl}}"],"path":["compliance","schedules","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Correct a deadline (the state moved it) or deactivate it"}},{"name":"DELETE /compliance/schedules/{id} — Remove a deadline","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/compliance/schedules/{id}","host":["{{baseUrl}}"],"path":["compliance","schedules","{id}"]},"description":"Remove a deadline"}},{"name":"POST /compliance/schedules/seed-njdoe — Load the NJDOE submission cadence for a school year","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/schedules/seed-njdoe","host":["{{baseUrl}}"],"path":["compliance","schedules","seed-njdoe"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Load the NJDOE submission cadence for a school year"}},{"name":"GET /compliance/smids/missing — List active students without a SMID","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/smids/missing","host":["{{baseUrl}}"],"path":["compliance","smids","missing"]},"description":"List active students without a SMID"}},{"name":"POST /compliance/smids/{id} — Assign a SMID to a student","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/smids/{id}","host":["{{baseUrl}}"],"path":["compliance","smids","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assign a SMID to a student"}},{"name":"POST /compliance/smids/generate-missing — Generate placeholder SMIDs for every active student without one","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/compliance/smids/generate-missing","host":["{{baseUrl}}"],"path":["compliance","smids","generate-missing"]},"description":"Uses a deterministic `NJ########` prefix. These are PLACEHOLDERS, not state-issued IDs: official SMIDs must be imported from NJSMART before state submission, and report generation with `?strict=true` blocks while any placeholder remains. Safe to re-run — only assigns where smid is currently null. The response carries `placeholdersGenerated: true` and a warning message."}},{"name":"GET /compliance/reports — List generated state reports","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/reports","host":["{{baseUrl}}"],"path":["compliance","reports"]},"description":"List generated state reports"}},{"name":"GET /compliance/reports/available — List state-report adapters available for the calling district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/reports/available","host":["{{baseUrl}}"],"path":["compliance","reports","available"]},"description":"Reads the district's state code and returns the registered adapters for that state. Used by the admin UI to render generation buttons dynamically."}},{"name":"GET /compliance/smids/audit — Audit SMID coverage for the calling district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/smids/audit","host":["{{baseUrl}}"],"path":["compliance","smids","audit"]},"description":"Returns counts of students on placeholder (NJ########) IDs and students with no SMID. Used by the UI to show a \"ready to submit\" badge and by the strict-generation flow to block submission."}},{"name":"GET /compliance/reports/{id} — Get a state-report record","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/reports/{id}","host":["{{baseUrl}}"],"path":["compliance","reports","{id}"]},"description":"Get a state-report record"}},{"name":"GET /compliance/reports/state/{stateCode}/{reportType}/preview — Preview a state report on screen without generating a submission","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/reports/state/{stateCode}/{reportType}/preview","host":["{{baseUrl}}"],"path":["compliance","reports","state","{stateCode}","{reportType}","preview"]},"description":"Runs the registered adapter and returns header + first N rows as JSON, plus the adapter summary (row counts, data gaps). Nothing is persisted — use the generate route to produce the actual submission file."}},{"name":"GET /compliance/state-data/{dataset}/import-template — Download a blank NJ SLEDS import template (CSV, state layout)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/state-data/{dataset}/import-template","host":["{{baseUrl}}"],"path":["compliance","state-data","{dataset}","import-template"]},"description":"Header row matches the NJDOE template exactly, plus one example row — delete it before uploading real data."}},{"name":"POST /compliance/state-data/{dataset}/import — Import NJ SLEDS state data — preview or apply","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/state-data/{dataset}/import","host":["{{baseUrl}}"],"path":["compliance","state-data","{dataset}","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Upload CSV in the state template layout. `mode=preview` (default) validates without writing; `mode=apply` upserts valid rows and reports per-row errors for the rest. The staff-management SocialSecurityNumber column is accepted but never stored."}},{"name":"GET /compliance/state-data/vacancies — List staff vacancy episodes (NJ SLEDS Staff Vacancy rows)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/state-data/vacancies","host":["{{baseUrl}}"],"path":["compliance","state-data","vacancies"]},"description":"List staff vacancy episodes (NJ SLEDS Staff Vacancy rows)"}},{"name":"POST /compliance/state-data/vacancies — Record a staff vacancy episode","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/state-data/vacancies","host":["{{baseUrl}}"],"path":["compliance","state-data","vacancies"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a staff vacancy episode"}},{"name":"PATCH /compliance/state-data/vacancies/{id} — Update a staff vacancy episode","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/state-data/vacancies/{id}","host":["{{baseUrl}}"],"path":["compliance","state-data","vacancies","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a staff vacancy episode"}},{"name":"DELETE /compliance/state-data/vacancies/{id} — Remove a staff vacancy episode (soft delete)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/compliance/state-data/vacancies/{id}","host":["{{baseUrl}}"],"path":["compliance","state-data","vacancies","{id}"]},"description":"Remove a staff vacancy episode (soft delete)"}},{"name":"GET /compliance/submissions — List state submissions (filing history)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/submissions","host":["{{baseUrl}}"],"path":["compliance","submissions"]},"description":"Every filing attempt for this district, newest first. `activeOnly` hides attempts a later correction already superseded."}},{"name":"POST /compliance/submissions — Open a state submission draft","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/submissions","host":["{{baseUrl}}"],"path":["compliance","submissions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Creates a draft for a registered adapter report. Pass `supersedesId` to open a correction: the earlier attempt moves to `superseded` and this one starts at its attempt number + 1."}},{"name":"GET /compliance/submissions/{id} — Get a submission with its rejection worklist","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/submissions/{id}","host":["{{baseUrl}}"],"path":["compliance","submissions","{id}"]},"description":"Errors come back in the state’s documented resolution order (record-level first). `errorSummary.fieldCountsUnreliable` is true while record-level errors are open — the state has not evaluated field rules for those records yet."}},{"name":"DELETE /compliance/submissions/{id} — Void an unfiled submission draft","request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/submissions/{id}","host":["{{baseUrl}}"],"path":["compliance","submissions","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Only a draft that was never filed can be voided. A filed submission is corrected by opening a new attempt with `supersedesId`, which keeps the filing history intact."}},{"name":"POST /compliance/submissions/{id}/file — File a submission — generate the bytes and record the filing","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/submissions/{id}/file","host":["{{baseUrl}}"],"path":["compliance","submissions","{id}","file"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Runs the adapter, retains the exact bytes with a SHA-256 checksum, and marks the submission submitted. The upload to the state is out of band for portal states such as NJ: download the retained file, upload it in the state portal, and record the confirmation number here."}},{"name":"POST /compliance/submissions/{id}/response — Record the state’s verdict on a filed submission","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/submissions/{id}/response","host":["{{baseUrl}}"],"path":["compliance","submissions","{id}","response"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record the state’s verdict on a filed submission"}},{"name":"POST /compliance/submissions/{id}/errors/import — Import the state error report for a filed submission","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/submissions/{id}/errors/import","host":["{{baseUrl}}"],"path":["compliance","submissions","{id}","errors","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Upload the state’s rejection export as CSV. `mode=preview` (default) shows what would land, including which rows matched a local person and which columns were not recognised; `mode=apply` writes the worklist. Rows already marked fixed or waived are preserved, so a re-reported error is visible as a failed fix rather than silently overwritten."}},{"name":"GET /compliance/submissions/{id}/errors — List a submission’s rejection rows in resolution order","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/submissions/{id}/errors","host":["{{baseUrl}}"],"path":["compliance","submissions","{id}","errors"]},"description":"List a submission’s rejection rows in resolution order"}},{"name":"PATCH /compliance/submissions/errors/{errorId} — Mark a rejection row fixed, waived, or reopen it","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/compliance/submissions/errors/{errorId}","host":["{{baseUrl}}"],"path":["compliance","submissions","errors","{errorId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark a rejection row fixed, waived, or reopen it"}},{"name":"GET /compliance/submissions/{id}/files/{fileId} — Download a retained submission or error-report file","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/submissions/{id}/files/{fileId}","host":["{{baseUrl}}"],"path":["compliance","submissions","{id}","files","{fileId}"]},"description":"Returns the exact bytes retained at filing time, so what was sent to the state stays recoverable and checksum-verifiable."}},{"name":"GET /compliance/instructional-time — Per-school instructional-time breakdown","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/compliance/instructional-time","host":["{{baseUrl}}"],"path":["compliance","instructional-time"]},"description":"Evaluates the INSTRUCTIONAL_TIME_RULE and returns the per-school breakdown the rule computed: days counted, days projected, minutes counted, minutes projected, short-day list, findings. Designed for the drill-down dashboard."}}]},{"name":"District","item":[{"name":"GET /districts/instructional-time-policy — Read the district instructional-time policy","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/districts/instructional-time-policy","host":["{{baseUrl}}"],"path":["districts","instructional-time-policy"]},"description":"Read the district instructional-time policy"}},{"name":"PATCH /districts/instructional-time-policy — Update the district instructional-time policy","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/districts/instructional-time-policy","host":["{{baseUrl}}"],"path":["districts","instructional-time-policy"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update the district instructional-time policy"}}]},{"name":"Migration","item":[{"name":"POST /migration/preview/genesis — Preview a Genesis CSV migration (read-only — no writes)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/migration/preview/genesis","host":["{{baseUrl}}"],"path":["migration","preview","genesis"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Paste students.csv, guardians.csv (optional), and enrollments.csv from a Genesis 5 export. Returns row counts, warnings, and the first 10 students so the district can validate the mapping. Does NOT commit. To actually apply the migration, contact your Forge SIS account manager."}},{"name":"POST /migration/preview/powerschool — Preview a PowerSchool CSV migration (read-only — no writes)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/migration/preview/powerschool","host":["{{baseUrl}}"],"path":["migration","preview","powerschool"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Preview a PowerSchool CSV migration (read-only — no writes)"}},{"name":"POST /migration/preview/oneroster — Preview a OneRoster CSV migration (read-only — no writes)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/migration/preview/oneroster","host":["{{baseUrl}}"],"path":["migration","preview","oneroster"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Preview a OneRoster CSV migration (read-only — no writes)"}},{"name":"POST /migration/apply/{vendor} — Apply a CSV migration — writes students, guardians, enrollments and history into this district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/migration/apply/{vendor}","host":["{{baseUrl}}"],"path":["migration","apply","{vendor}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Apply a CSV migration — writes students, guardians, enrollments and history into this district"}},{"name":"POST /migration/reconcile — Count the same rows three ways and show where any go missing","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/migration/reconcile","host":["{{baseUrl}}"],"path":["migration","reconcile"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Parses the upload, dry-runs the write, and reports rows-in-file against rows-parsed against rows-the-writer-would-accept, with a reason for every record that would be refused. Writes nothing."}},{"name":"GET /migration/runs — History of SIS import previews and commits","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/migration/runs","host":["{{baseUrl}}"],"path":["migration","runs"]},"description":"History of SIS import previews and commits"}},{"name":"GET /migration/sync-connections — List automated SIS sync connections","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/migration/sync-connections","host":["{{baseUrl}}"],"path":["migration","sync-connections"]},"description":"List automated SIS sync connections"}},{"name":"POST /migration/sync-connections — Create an automated SIS sync connection","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/migration/sync-connections","host":["{{baseUrl}}"],"path":["migration","sync-connections"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an automated SIS sync connection"}},{"name":"PATCH /migration/sync-connections/{id} — Edit, arm, or pause a sync connection","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/migration/sync-connections/{id}","host":["{{baseUrl}}"],"path":["migration","sync-connections","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit, arm, or pause a sync connection"}},{"name":"DELETE /migration/sync-connections/{id} — Delete a sync connection","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/migration/sync-connections/{id}","host":["{{baseUrl}}"],"path":["migration","sync-connections","{id}"]},"description":"Delete a sync connection"}},{"name":"POST /migration/sync-connections/{id}/test — Fetch the source files without parsing or writing","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/migration/sync-connections/{id}/test","host":["{{baseUrl}}"],"path":["migration","sync-connections","{id}","test"]},"description":"Fetch the source files without parsing or writing"}},{"name":"POST /migration/sync-connections/{id}/run-now — Run a sync immediately (preview unless the body says otherwise)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/migration/sync-connections/{id}/run-now","host":["{{baseUrl}}"],"path":["migration","sync-connections","{id}","run-now"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Run a sync immediately (preview unless the body says otherwise)"}},{"name":"GET /migration/file-specs — Accepted import file formats and column names, per vendor","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/migration/file-specs","host":["{{baseUrl}}"],"path":["migration","file-specs"]},"description":"Accepted import file formats and column names, per vendor"}},{"name":"GET /migration/file-specs/{vendor}/{file}.csv — Download a blank CSV template for one import file","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/migration/file-specs/{vendor}/{file}.csv","host":["{{baseUrl}}"],"path":["migration","file-specs","{vendor}","{file}.csv"]},"description":"Download a blank CSV template for one import file"}},{"name":"GET /ops-import/file-specs — Finance and facilities import layouts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/ops-import/file-specs","host":["{{baseUrl}}"],"path":["ops-import","file-specs"]},"description":"Every accepted file with its columns, the aliases each column answers to, and an example value. `importerReady` says whether the file can be loaded today or only prepared against the published layout."}},{"name":"GET /ops-import/file-specs/{fileId}.csv — Blank template for one import file","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/ops-import/file-specs/{fileId}.csv","host":["{{baseUrl}}"],"path":["ops-import","file-specs","{fileId}.csv"]},"description":"Blank template for one import file"}},{"name":"POST /ops-import/{fileId}/preview — Parse a file and report what would happen","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/ops-import/{fileId}/preview","host":["{{baseUrl}}"],"path":["ops-import","{fileId}","preview"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Writes nothing. Resolves references and reports every row it could not use."}},{"name":"POST /ops-import/{fileId}/apply — Import a file","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/ops-import/{fileId}/apply","host":["{{baseUrl}}"],"path":["ops-import","{fileId}","apply"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Matches on the natural key, so re-running the same file updates rather than duplicating. Imported opening figures are replaced rather than added to."}}]},{"name":"Vendor modules","item":[{"name":"GET /vendor-modules — Vendor modules and their status in this district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/vendor-modules","host":["{{baseUrl}}"],"path":["vendor-modules"]},"description":"Vendor modules and their status in this district"}},{"name":"PUT /vendor-modules/{id} — Turn a vendor module on: approve its data scopes against a signed DPA","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/vendor-modules/{id}","host":["{{baseUrl}}"],"path":["vendor-modules","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Turn a vendor module on: approve its data scopes against a signed DPA"}},{"name":"POST /vendor-modules/{id}/turn-off — Turn a vendor module off: withdraws the approval and deletes the stored credential","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/vendor-modules/{id}/turn-off","host":["{{baseUrl}}"],"path":["vendor-modules","{id}","turn-off"]},"description":"Turn a vendor module off: withdraws the approval and deletes the stored credential"}},{"name":"POST /vendor-modules/{id}/test — Check that the vendor answers with the stored credential","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/vendor-modules/{id}/test","host":["{{baseUrl}}"],"path":["vendor-modules","{id}","test"]},"description":"Check that the vendor answers with the stored credential"}},{"name":"POST /vendor-modules/{id}/run — Run the exchange with the vendor — a preview unless dryRun is false and the module supports live runs","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/vendor-modules/{id}/run","host":["{{baseUrl}}"],"path":["vendor-modules","{id}","run"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Run the exchange with the vendor — a preview unless dryRun is false and the module supports live runs"}},{"name":"GET /vendor-modules/{id}/runs — Exchange history for a vendor module","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/vendor-modules/{id}/runs","host":["{{baseUrl}}"],"path":["vendor-modules","{id}","runs"]},"description":"Exchange history for a vendor module"}}]},{"name":"Partner portal","item":[{"name":"POST /partner-portal/apply — Apply to the partner program; emails a sign-in link","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/partner-portal/apply","host":["{{baseUrl}}"],"path":["partner-portal","apply"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Apply to the partner program; emails a sign-in link"}},{"name":"GET /partner-portal/tiers — Listing tiers and prices, for the public partner page","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/partner-portal/tiers","host":["{{baseUrl}}"],"path":["partner-portal","tiers"]},"description":"Listing tiers and prices, for the public partner page"}},{"name":"POST /partner-portal/sign-in — Email a sign-in link to a partner user","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/partner-portal/sign-in","host":["{{baseUrl}}"],"path":["partner-portal","sign-in"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Email a sign-in link to a partner user"}},{"name":"POST /partner-portal/session — Trade a single-use sign-in link for a session cookie","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/partner-portal/session","host":["{{baseUrl}}"],"path":["partner-portal","session"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Trade a single-use sign-in link for a session cookie"}},{"name":"POST /partner-portal/sign-out — End the partner session","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/partner-portal/sign-out","host":["{{baseUrl}}"],"path":["partner-portal","sign-out"]},"description":"End the partner session"}},{"name":"GET /partner-portal/me — The signed-in partner: listing, checklist, plan","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/partner-portal/me","host":["{{baseUrl}}"],"path":["partner-portal","me"]},"description":"The signed-in partner: listing, checklist, plan"}},{"name":"PUT /partner-portal/listing — Edit the company listing","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/partner-portal/listing","host":["{{baseUrl}}"],"path":["partner-portal","listing"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit the company listing"}},{"name":"PUT /partner-portal/vetting/{key} — Answer one vetting item","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/partner-portal/vetting/{key}","host":["{{baseUrl}}"],"path":["partner-portal","vetting","{key}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Answer one vetting item"}},{"name":"POST /partner-portal/submit — Send the application to YRC for review","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/partner-portal/submit","host":["{{baseUrl}}"],"path":["partner-portal","submit"]},"description":"Send the application to YRC for review"}},{"name":"GET /partner-portal/leads — Districts that asked to be contacted","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/partner-portal/leads","host":["{{baseUrl}}"],"path":["partner-portal","leads"]},"description":"Districts that asked to be contacted"}},{"name":"PATCH /partner-portal/leads/{id} — Mark a lead contacted or closed","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/partner-portal/leads/{id}","host":["{{baseUrl}}"],"path":["partner-portal","leads","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark a lead contacted or closed"}}]},{"name":"Partner program (YRC)","item":[{"name":"GET /partner-program/summary — Program totals","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/partner-program/summary","host":["{{baseUrl}}"],"path":["partner-program","summary"]},"description":"Program totals"}},{"name":"GET /partner-program/partners — Every partner and applicant","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/partner-program/partners","host":["{{baseUrl}}"],"path":["partner-program","partners"]},"description":"Every partner and applicant"}},{"name":"GET /partner-program/partners/{id} — One partner in full","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/partner-program/partners/{id}","host":["{{baseUrl}}"],"path":["partner-program","partners","{id}"]},"description":"One partner in full"}},{"name":"PUT /partner-program/partners/{id}/vetting/{key} — Accept, waive or send back one vetting item","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/partner-program/partners/{id}/vetting/{key}","host":["{{baseUrl}}"],"path":["partner-program","partners","{id}","vetting","{key}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Accept, waive or send back one vetting item"}},{"name":"POST /partner-program/partners/{id}/status — Move an application: review, approve, reject or suspend","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/partner-program/partners/{id}/status","host":["{{baseUrl}}"],"path":["partner-program","partners","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move an application: review, approve, reject or suspend"}},{"name":"PUT /partner-program/partners/{id}/module — Link the vendor module YRC built for this partner","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/partner-program/partners/{id}/module","host":["{{baseUrl}}"],"path":["partner-program","partners","{id}","module"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Link the vendor module YRC built for this partner"}},{"name":"POST /partner-program/partners/{id}/subscriptions — Start a listing period on a tier","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/partner-program/partners/{id}/subscriptions","host":["{{baseUrl}}"],"path":["partner-program","partners","{id}","subscriptions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a listing period on a tier"}},{"name":"PATCH /partner-program/subscriptions/{id} — Record invoicing and payment for a listing period","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/partner-program/subscriptions/{id}","host":["{{baseUrl}}"],"path":["partner-program","subscriptions","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record invoicing and payment for a listing period"}},{"name":"GET /partner-program/tiers — Listing tiers and prices","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/partner-program/tiers","host":["{{baseUrl}}"],"path":["partner-program","tiers"]},"description":"Listing tiers and prices"}},{"name":"PUT /partner-program/tiers/{id} — Change a tier: name, price, benefits","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/partner-program/tiers/{id}","host":["{{baseUrl}}"],"path":["partner-program","tiers","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a tier: name, price, benefits"}}]},{"name":"Partner directory","item":[{"name":"GET /partner-directory — Vetted partners with a live listing","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/partner-directory","host":["{{baseUrl}}"],"path":["partner-directory"]},"description":"Vetted partners with a live listing"}},{"name":"POST /partner-directory/{partnerId}/request-info — Ask a partner to get in touch","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/partner-directory/{partnerId}/request-info","host":["{{baseUrl}}"],"path":["partner-directory","{partnerId}","request-info"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask a partner to get in touch"}}]},{"name":"Business Office","item":[{"name":"GET /hr/positions — List HR positions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/positions","host":["{{baseUrl}}"],"path":["hr","positions"]},"description":"List HR positions"}},{"name":"POST /hr/positions — Create HR position","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/positions","host":["{{baseUrl}}"],"path":["hr","positions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create HR position"}},{"name":"GET /hr/positions/{id} — Get HR position","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/positions/{id}","host":["{{baseUrl}}"],"path":["hr","positions","{id}"]},"description":"Get HR position"}},{"name":"PATCH /hr/positions/{id} — Update HR position","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/positions/{id}","host":["{{baseUrl}}"],"path":["hr","positions","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update HR position"}},{"name":"POST /hr/positions/build-from-staff — Build the position roster from the staff list","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/hr/positions/build-from-staff","host":["{{baseUrl}}"],"path":["hr","positions","build-from-staff"]},"description":"Creates or refreshes one position per member of staff. Anyone rostered to teach a section is given a teaching position; everyone else is placed against the staffing pattern a district of this size runs. Each position carries its salary range and the budget line the salary is charged to. Idempotent."}},{"name":"GET /hr/retirement-plans — List retirement plans available in this district's state","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/retirement-plans","host":["{{baseUrl}}"],"path":["hr","retirement-plans"]},"description":"List retirement plans available in this district's state"}},{"name":"POST /hr/retirement-plans/resolve — Dry-run a retirement-contribution calculation","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/retirement-plans/resolve","host":["{{baseUrl}}"],"path":["hr","retirement-plans","resolve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Without writing a payroll entry, compute what the employee/employer contribution would be for a given gross, plan/category, and hire date. Used by the admin contribution tester and by bulk-import validators."}},{"name":"GET /hr/evaluations — List staff evaluations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/evaluations","host":["{{baseUrl}}"],"path":["hr","evaluations"]},"description":"List staff evaluations"}},{"name":"POST /hr/evaluations — Open an evaluation cycle for a staff member","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/evaluations","host":["{{baseUrl}}"],"path":["hr","evaluations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Framework defaults to the district's resolved evaluation framework (state default or district override). Pass `frameworkCode` explicitly to pin a cycle to a specific rubric."}},{"name":"GET /hr/evaluations/{id} — Get an evaluation","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/evaluations/{id}","host":["{{baseUrl}}"],"path":["hr","evaluations","{id}"]},"description":"Get an evaluation"}},{"name":"POST /hr/evaluations/{id}/observations — Append an observation to an evaluation","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/evaluations/{id}/observations","host":["{{baseUrl}}"],"path":["hr","evaluations","{id}","observations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Validates the observation against the cycle's framework. Unknown domains, out-of-range scores, and off-step scores return 422 with structured issues rather than silently storing garbage."}},{"name":"POST /hr/evaluations/{id}/sgo — Set the SGO plan on an evaluation","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/evaluations/{id}/sgo","host":["{{baseUrl}}"],"path":["hr","evaluations","{id}","sgo"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set the SGO plan on an evaluation"}},{"name":"POST /hr/evaluations/{id}/complete — Close an evaluation with a final score (emits EvaluationCompleted)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/evaluations/{id}/complete","host":["{{baseUrl}}"],"path":["hr","evaluations","{id}","complete"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Auto-computes the summative score from observations + SGO using the cycle's framework. If the caller supplies `finalScore`, that value is persisted; otherwise the computed score is used. The scoring breakdown (per-domain averages, warnings, summative rating band) is always returned alongside."}},{"name":"GET /hr/evaluation-framework — Resolve the teacher evaluation framework for this district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/evaluation-framework","host":["{{baseUrl}}"],"path":["hr","evaluation-framework"]},"description":"Returns the framework currently applied to this district: district override if set, otherwise the state default, otherwise the generic fallback. Observation scores for all open cycles should match this framework."}},{"name":"GET /hr/evaluation-framework/catalog — List all built-in evaluation frameworks","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/evaluation-framework/catalog","host":["{{baseUrl}}"],"path":["hr","evaluation-framework","catalog"]},"description":"Returns the full catalog of frameworks Forge ships with. Used by the admin UI to let districts pick an override framework."}},{"name":"GET /hr/evaluations/{id}/detail — Get full evaluation detail including conferences, artifacts, and observations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/evaluations/{id}/detail","host":["{{baseUrl}}"],"path":["hr","evaluations","{id}","detail"]},"description":"Get full evaluation detail including conferences, artifacts, and observations"}},{"name":"GET /hr/evaluations/mine — List the signed-in teacher's own evaluation cycles (read-only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/evaluations/mine","host":["{{baseUrl}}"],"path":["hr","evaluations","mine"]},"description":"List the signed-in teacher's own evaluation cycles (read-only)"}},{"name":"GET /hr/evaluations/{id}/conferences — List conferences for an evaluation cycle","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/evaluations/{id}/conferences","host":["{{baseUrl}}"],"path":["hr","evaluations","{id}","conferences"]},"description":"List conferences for an evaluation cycle"}},{"name":"POST /hr/evaluations/{id}/conferences — Schedule a conference for an evaluation cycle (emits EvalConferenceScheduled)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/evaluations/{id}/conferences","host":["{{baseUrl}}"],"path":["hr","evaluations","{id}","conferences"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Schedule a conference for an evaluation cycle (emits EvalConferenceScheduled)"}},{"name":"PATCH /hr/evaluations/{id}/conferences/{subId} — Update a conference (mark as held, add notes)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/evaluations/{id}/conferences/{subId}","host":["{{baseUrl}}"],"path":["hr","evaluations","{id}","conferences","{subId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a conference (mark as held, add notes)"}},{"name":"GET /hr/evaluations/{id}/artifacts — List evidence artifacts for an evaluation cycle","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/evaluations/{id}/artifacts","host":["{{baseUrl}}"],"path":["hr","evaluations","{id}","artifacts"]},"description":"List evidence artifacts for an evaluation cycle"}},{"name":"POST /hr/evaluations/{id}/artifacts — Add an evidence artifact (emits EvalArtifactUploaded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/evaluations/{id}/artifacts","host":["{{baseUrl}}"],"path":["hr","evaluations","{id}","artifacts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an evidence artifact (emits EvalArtifactUploaded)"}},{"name":"DELETE /hr/evaluations/{id}/artifacts/{subId} — Soft-delete an evidence artifact","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/hr/evaluations/{id}/artifacts/{subId}","host":["{{baseUrl}}"],"path":["hr","evaluations","{id}","artifacts","{subId}"]},"description":"Soft-delete an evidence artifact"}},{"name":"POST /hr/evaluations/{id}/sgo/approve — Supervisor approves the teacher's SGO plan (emits SgoApproved)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/evaluations/{id}/sgo/approve","host":["{{baseUrl}}"],"path":["hr","evaluations","{id}","sgo","approve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Supervisor approves the teacher's SGO plan (emits SgoApproved)"}},{"name":"PATCH /hr/evaluations/{id}/status — Transition an evaluation cycle through the lifecycle","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/evaluations/{id}/status","host":["{{baseUrl}}"],"path":["hr","evaluations","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Valid transitions: draft → in_progress, in_progress → pending_review, pending_review → complete. The complete route (POST /complete) closes the cycle with a computed score — use this route only to transition back to pending_review if a score needs revision, or draft → in_progress."}},{"name":"GET /hr/budget/accounts — List budget accounts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/budget/accounts","host":["{{baseUrl}}"],"path":["hr","budget","accounts"]},"description":"List budget accounts"}},{"name":"POST /hr/budget/accounts — Create a budget account","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/budget/accounts","host":["{{baseUrl}}"],"path":["hr","budget","accounts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a budget account"}},{"name":"POST /hr/budget/entries — Post a budget journal entry","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/budget/entries","host":["{{baseUrl}}"],"path":["hr","budget","entries"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Post a budget journal entry"}},{"name":"GET /hr/budget/summary — Budget summary by account for a fiscal year","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/budget/summary","host":["{{baseUrl}}"],"path":["hr","budget","summary"]},"description":"Budget summary by account for a fiscal year"}},{"name":"GET /business/budget/status — Budget status — appropriation, expended, encumbered, available","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/business/budget/status","host":["{{baseUrl}}"],"path":["business","budget","status"]},"description":"The working view of the budget. Available is appropriation minus expenditures minus open encumbrances, so an approved purchase order reduces it immediately rather than when its invoice arrives."}},{"name":"GET /business/funds — NJ fund codes and names","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/business/funds","host":["{{baseUrl}}"],"path":["business","funds"]},"description":"NJ fund codes and names"}},{"name":"GET /business/transfers — Budget transfers for a fiscal year","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/business/transfers","host":["{{baseUrl}}"],"path":["business","transfers"]},"description":"Includes the cumulative position against the 10% of budget that triggers Executive County Superintendent approval."}},{"name":"POST /business/transfers — Raise a budget transfer","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/business/transfers","host":["{{baseUrl}}"],"path":["business","transfers"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Refuses if the source line cannot fund it. Flags board approval when the amount exceeds 10% of the receiving line, per N.J.A.C. 6A:23A-13.3."}},{"name":"POST /business/transfers/{id}/approve — Approve and post a budget transfer","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/business/transfers/{id}/approve","host":["{{baseUrl}}"],"path":["business","transfers","{id}","approve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve and post a budget transfer"}},{"name":"POST /business/transfers/{id}/reject — Reject a budget transfer","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/business/transfers/{id}/reject","host":["{{baseUrl}}"],"path":["business","transfers","{id}","reject"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reject a budget transfer"}},{"name":"GET /business/bank-accounts — Bank accounts with their current book balance","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/business/bank-accounts","host":["{{baseUrl}}"],"path":["business","bank-accounts"]},"description":"Bank accounts with their current book balance"}},{"name":"POST /business/bank-accounts — Add a bank account","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/business/bank-accounts","host":["{{baseUrl}}"],"path":["business","bank-accounts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Only the last four digits are stored."}},{"name":"PATCH /business/bank-accounts/{id} — Update a bank account","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/business/bank-accounts/{id}","host":["{{baseUrl}}"],"path":["business","bank-accounts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a bank account"}},{"name":"GET /business/bank-accounts/{id}/statements — Statements for a bank account","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/business/bank-accounts/{id}/statements","host":["{{baseUrl}}"],"path":["business","bank-accounts","{id}","statements"]},"description":"Statements for a bank account"}},{"name":"POST /business/bank-statements — Record a bank statement to reconcile","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/business/bank-statements","host":["{{baseUrl}}"],"path":["business","bank-statements"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a bank statement to reconcile"}},{"name":"GET /business/bank-statements/{id}/reconciliation — Reconciliation for a statement","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/business/bank-statements/{id}/reconciliation","host":["{{baseUrl}}"],"path":["business","bank-statements","{id}","reconciliation"]},"description":"Bank closing plus deposits in transit less outstanding cheques against book balance plus interest less fees. Balanced only when the two agree to the cent."}},{"name":"POST /business/bank-statements/{id}/items — Add a reconciling item","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/business/bank-statements/{id}/items","host":["{{baseUrl}}"],"path":["business","bank-statements","{id}","items"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a reconciling item"}},{"name":"DELETE /business/reconciliation-items/{id} — Remove a reconciling item","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/business/reconciliation-items/{id}","host":["{{baseUrl}}"],"path":["business","reconciliation-items","{id}"]},"description":"Remove a reconciling item"}},{"name":"POST /business/bank-statements/{id}/complete — Complete a reconciliation","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/business/bank-statements/{id}/complete","host":["{{baseUrl}}"],"path":["business","bank-statements","{id}","complete"]},"description":"Refuses unless both adjusted balances agree exactly."}},{"name":"POST /business/bank-statements/{id}/reopen — Reopen a reconciled statement","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/business/bank-statements/{id}/reopen","host":["{{baseUrl}}"],"path":["business","bank-statements","{id}","reopen"]},"description":"Reopen a reconciled statement"}},{"name":"GET /business/activity-accounts — Student activity accounts with balances","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/business/activity-accounts","host":["{{baseUrl}}"],"path":["business","activity-accounts"]},"description":"Fiduciary money held for students, carried in fund 95 and audited annually. These accounts have no appropriation behind them, so they cannot be overdrawn."}},{"name":"POST /business/activity-accounts — Open an activity account","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/business/activity-accounts","host":["{{baseUrl}}"],"path":["business","activity-accounts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Open an activity account"}},{"name":"GET /business/activity-accounts/{id} — One activity account with its running balance","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/business/activity-accounts/{id}","host":["{{baseUrl}}"],"path":["business","activity-accounts","{id}"]},"description":"One activity account with its running balance"}},{"name":"POST /business/activity-accounts/{id}/transactions — Record a receipt or disbursement","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/business/activity-accounts/{id}/transactions","host":["{{baseUrl}}"],"path":["business","activity-accounts","{id}","transactions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"A disbursement that would overdraw the account is refused."}},{"name":"POST /business/activity-transactions/{id}/approve — Countersign a disbursement","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/business/activity-transactions/{id}/approve","host":["{{baseUrl}}"],"path":["business","activity-transactions","{id}","approve"]},"description":"Refused when the approver is the person who recorded it."}},{"name":"POST /business/activity-transactions/{id}/void — Void a transaction","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/business/activity-transactions/{id}/void","host":["{{baseUrl}}"],"path":["business","activity-transactions","{id}","void"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Void a transaction"}},{"name":"GET /business/reports/board-secretary — Board Secretary monthly certified report (A-148)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/business/reports/board-secretary","host":["{{baseUrl}}"],"path":["business","reports","board-secretary"]},"description":"Appropriations by fund and function as of a month end, with the over-expenditure certification required by N.J.A.C. 6A:23A-16.10."}},{"name":"GET /business/reports/treasurer — Treasurer monthly report (A-149)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/business/reports/treasurer","host":["{{baseUrl}}"],"path":["business","reports","treasurer"]},"description":"Cash by fund — opening balance, receipts, disbursements, closing balance."}},{"name":"GET /business/requisitions — List requisitions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/business/requisitions","host":["{{baseUrl}}"],"path":["business","requisitions"]},"description":"List requisitions"}},{"name":"POST /business/requisitions — Raise a requisition","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/business/requisitions","host":["{{baseUrl}}"],"path":["business","requisitions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Raise a requisition"}},{"name":"GET /business/requisitions/{id} — One requisition","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/business/requisitions/{id}","host":["{{baseUrl}}"],"path":["business","requisitions","{id}"]},"description":"One requisition"}},{"name":"GET /business/requisitions/{id}/budget-check — Check a requisition against available budget","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/business/requisitions/{id}/budget-check","host":["{{baseUrl}}"],"path":["business","requisitions","{id}","budget-check"]},"description":"Groups lines by account before comparing, so two lines on one account are checked against that account together rather than each passing on its own."}},{"name":"POST /business/requisitions/{id}/submit — Submit a requisition for approval","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/business/requisitions/{id}/submit","host":["{{baseUrl}}"],"path":["business","requisitions","{id}","submit"]},"description":"Submit a requisition for approval"}},{"name":"POST /business/requisitions/{id}/approve — Approve a requisition and convert it to a purchase order","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/business/requisitions/{id}/approve","host":["{{baseUrl}}"],"path":["business","requisitions","{id}","approve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Re-checks the budget at approval rather than trusting the snapshot taken at submission. Refuses on a shortfall unless overrideBudget is set, and records the override when it is."}},{"name":"POST /business/requisitions/{id}/reject — Reject a requisition","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/business/requisitions/{id}/reject","host":["{{baseUrl}}"],"path":["business","requisitions","{id}","reject"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reject a requisition"}},{"name":"GET /business/grants — Grants with spend against award and period of availability","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/business/grants","host":["{{baseUrl}}"],"path":["business","grants"]},"description":"Grants with spend against award and period of availability"}},{"name":"POST /business/grants — Record a grant award","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/business/grants","host":["{{baseUrl}}"],"path":["business","grants"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a grant award"}},{"name":"GET /hr/payroll/cycles — List payroll cycles","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/cycles","host":["{{baseUrl}}"],"path":["hr","payroll","cycles"]},"description":"List payroll cycles"}},{"name":"POST /hr/payroll/cycles — Create a draft payroll cycle","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/payroll/cycles","host":["{{baseUrl}}"],"path":["hr","payroll","cycles"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a draft payroll cycle"}},{"name":"GET /hr/payroll/cycles/{id}/entries — List entries for a payroll cycle","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/cycles/{id}/entries","host":["{{baseUrl}}"],"path":["hr","payroll","cycles","{id}","entries"]},"description":"List entries for a payroll cycle"}},{"name":"POST /hr/payroll/cycles/{id}/entries — Add/update a payroll entry (auto-computes TPAF/PERS + net)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/payroll/cycles/{id}/entries","host":["{{baseUrl}}"],"path":["hr","payroll","cycles","{id}","entries"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add/update a payroll entry (auto-computes TPAF/PERS + net)"}},{"name":"POST /hr/payroll/cycles/{id}/generate — Generate entries for every member of staff","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/payroll/cycles/{id}/generate","host":["{{baseUrl}}"],"path":["hr","payroll","cycles","{id}","generate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Turns the staff roster into one entry per employee, taking each salary from the position they hold and the pension plan from whether that position is certificated or classified. Regenerating replaces the existing entries."}},{"name":"GET /hr/payroll/cycles/{id}/summary — Cycle totals — gross, withheld, net, pension","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/cycles/{id}/summary","host":["{{baseUrl}}"],"path":["hr","payroll","cycles","{id}","summary"]},"description":"Cycle totals — gross, withheld, net, pension"}},{"name":"GET /hr/payroll/cycles/{id}/clearance — Final-pay clearance flags for this cycle (never holds pay)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/cycles/{id}/clearance","host":["{{baseUrl}}"],"path":["hr","payroll","cycles","{id}","clearance"]},"description":"Final-pay clearance flags for this cycle (never holds pay)"}},{"name":"GET /hr/payroll/cycles/{id}/register — Payroll register — one line per employee","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/cycles/{id}/register","host":["{{baseUrl}}"],"path":["hr","payroll","cycles","{id}","register"]},"description":"Payroll register — one line per employee"}},{"name":"GET /hr/payroll/frequencies — Pay frequencies a cycle can be generated at","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/frequencies","host":["{{baseUrl}}"],"path":["hr","payroll","frequencies"]},"description":"Pay frequencies a cycle can be generated at"}},{"name":"POST /hr/payroll/cycles/{id}/actions/close — Close a payroll cycle (emits PayrollCycleClosed)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/cycles/{id}/actions/close","host":["{{baseUrl}}"],"path":["hr","payroll","cycles","{id}","actions","close"]},"description":"Marks the cycle final; no further entries can be added. Totals are computed at close time and stamped on the event."}}]},{"name":"AI","item":[{"name":"POST /ai/report-card-comment — Draft a grounded report-card comment for one (student, section, term)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/ai/report-card-comment","host":["{{baseUrl}}"],"path":["ai","report-card-comment"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Draft a grounded report-card comment for one (student, section, term)"}},{"name":"POST /ai/student-summary — Generate a grounded summary for one student","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/ai/student-summary","host":["{{baseUrl}}"],"path":["ai","student-summary"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generate a grounded summary for one student"}},{"name":"POST /ai/ask — Parent portal Q&A — grounded in the asking guardian’s visible data","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/ai/ask","host":["{{baseUrl}}"],"path":["ai","ask"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Parent portal Q&A — grounded in the asking guardian’s visible data"}},{"name":"POST /ai/early-warning — Grounded early-warning narrative for one student","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/ai/early-warning","host":["{{baseUrl}}"],"path":["ai","early-warning"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Grounded early-warning narrative for one student"}},{"name":"POST /ai/teacher-copilot — Weekly digest for one section (trends + check-ins + overdue)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/ai/teacher-copilot","host":["{{baseUrl}}"],"path":["ai","teacher-copilot"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Weekly digest for one section (trends + check-ins + overdue)"}},{"name":"POST /ai/nlq — Turn a natural-language question into a read-only query plan","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/ai/nlq","host":["{{baseUrl}}"],"path":["ai","nlq"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Returns a JSON plan (no execution). The admin console previews the plan before running it; SQL injection is impossible because the API validates the plan against an allowlist of tables + filter keys."}},{"name":"GET /ai/usage — AI usage and cost for this district (last 1000 calls)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/ai/usage","host":["{{baseUrl}}"],"path":["ai","usage"]},"description":"AI usage and cost for this district (last 1000 calls)"}},{"name":"POST /ai/registration/documents/extract — Extract structured fields from a scanned registration document","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/ai/registration/documents/extract","host":["{{baseUrl}}"],"path":["ai","registration","documents","extract"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Vision endpoint — takes a base64 image or PDF and returns a typed field bag plus region citations. Registrars click \"Extract\" to pre-fill the application from uploaded documents; the human always reviews before saving."}},{"name":"POST /ai/translate — Translate a short school message into a target language","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/ai/translate","host":["{{baseUrl}}"],"path":["ai","translate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Used by the messaging composer to reach families in their home language. Preserves proper nouns, dates, and times. Non-grounded prompt — the source text is the only authoritative input."}},{"name":"POST /ai/nurse/visit-note/expand — Expand a nurse’s shorthand into a SOAP-structured visit note","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/ai/nurse/visit-note/expand","host":["{{baseUrl}}"],"path":["ai","nurse","visit-note","expand"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Optional `studentId` pulls the student’s last 3 visits as grounding so the narrative is consistent with prior care."}},{"name":"POST /ai/iep/progress-narrative — Draft a quarterly IEP-goal progress narrative for one student","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/ai/iep/progress-narrative","host":["{{baseUrl}}"],"path":["ai","iep","progress-narrative"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Pulls recent assignment scores + attendance + any assertions on the student record and drafts a parent-facing narrative. Teacher of record reviews before saving into the IEP."}},{"name":"POST /ai/scheduling/propose-change — Parse a free-text schedule-change request into structured operations","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/ai/scheduling/propose-change","host":["{{baseUrl}}"],"path":["ai","scheduling","propose-change"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Preview-only — returns the operations the scheduler would need to execute. No changes are applied until the admin confirms via the existing scheduling endpoints."}},{"name":"POST /ai/grading/rubric-score — Draft rubric-aligned scores and a teacher comment for a student essay","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/ai/grading/rubric-score","host":["{{baseUrl}}"],"path":["ai","grading","rubric-score"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The teacher retains final authority — this endpoint produces a draft score with evidence quoted verbatim from the essay and a suggested comment. Every `evidence` value must be a substring of the essay."}}]},{"name":"Dashboard","item":[{"name":"GET /dashboard/teacher/me — Summary for the signed-in teacher’s dashboard","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dashboard/teacher/me","host":["{{baseUrl}}"],"path":["dashboard","teacher","me"]},"description":"Resolves the teacher’s Person row from the session, lists their current sections, and computes per-section attendance + grade averages plus a 10-day attendance/grade sparkline from real rows."}},{"name":"GET /dashboard/admin/summary — District-wide rollups for the admin overview","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dashboard/admin/summary","host":["{{baseUrl}}"],"path":["dashboard","admin","summary"]},"description":"Enrollment count + trend, attendance rate + trend, open compliance findings, open incidents, pending registration applications, health visits in the past 7 days, and — only for districts billed on their own AI key, or for platform operators — AI cost for the last 30 days."}},{"name":"GET /dashboard/superintendent — Executive overview for the district superintendent","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dashboard/superintendent","host":["{{baseUrl}}"],"path":["dashboard","superintendent"]},"description":"Aggregates student metrics, compliance alerts, staff KPIs, financial snapshot, recent event activity, and state reporting deadlines into a single payload for the superintendent dashboard."}}]},{"name":"Registration","item":[{"name":"POST /registration/districts/{districtId}/applications — Submit a new family / re-registration application","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/registration/districts/{districtId}/applications","host":["{{baseUrl}}"],"path":["registration","districts","{districtId}","applications"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Public endpoint used by the registration wizard. Returns an access token families use to resume the draft and upload documents."}},{"name":"GET /registration/districts/{districtId}/applications/by-token/{token} — Resume a registration draft by access token","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/registration/districts/{districtId}/applications/by-token/{token}","host":["{{baseUrl}}"],"path":["registration","districts","{districtId}","applications","by-token","{token}"]},"description":"Resume a registration draft by access token"}},{"name":"POST /registration/districts/{districtId}/applications/by-token/{token}/documents — Attach an uploaded document to an application","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/registration/districts/{districtId}/applications/by-token/{token}/documents","host":["{{baseUrl}}"],"path":["registration","districts","{districtId}","applications","by-token","{token}","documents"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The actual bytes are uploaded to object storage out-of-band; this records the metadata + storage key."}},{"name":"GET /registration/applications — List registration applications (registrar view)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/registration/applications","host":["{{baseUrl}}"],"path":["registration","applications"]},"description":"List registration applications (registrar view)"}},{"name":"GET /registration/applications/{id} — Get a full application (registrar view)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/registration/applications/{id}","host":["{{baseUrl}}"],"path":["registration","applications","{id}"]},"description":"Get a full application (registrar view)"}},{"name":"POST /registration/applications/{id}/approve — Approve an application and create the student + enrollment","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/registration/applications/{id}/approve","host":["{{baseUrl}}"],"path":["registration","applications","{id}","approve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve an application and create the student + enrollment"}},{"name":"POST /registration/applications/{id}/reject — Reject an application","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/registration/applications/{id}/reject","host":["{{baseUrl}}"],"path":["registration","applications","{id}","reject"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reject an application"}}]},{"name":"Reports","item":[{"name":"GET /reports/catalog — List the field catalog for every report scope","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/reports/catalog","host":["{{baseUrl}}"],"path":["reports","catalog"]},"description":"List the field catalog for every report scope"}},{"name":"GET /reports/custom — List saved custom reports","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/reports/custom","host":["{{baseUrl}}"],"path":["reports","custom"]},"description":"List saved custom reports"}},{"name":"POST /reports/custom — Create a saved custom report","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/reports/custom","host":["{{baseUrl}}"],"path":["reports","custom"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a saved custom report"}},{"name":"GET /reports/custom/{id} — Get a saved custom report","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/reports/custom/{id}","host":["{{baseUrl}}"],"path":["reports","custom","{id}"]},"description":"Get a saved custom report"}},{"name":"PUT /reports/custom/{id} — Update a saved custom report","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/reports/custom/{id}","host":["{{baseUrl}}"],"path":["reports","custom","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a saved custom report"}},{"name":"DELETE /reports/custom/{id} — Delete a saved custom report","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/reports/custom/{id}","host":["{{baseUrl}}"],"path":["reports","custom","{id}"]},"description":"Delete a saved custom report"}},{"name":"POST /reports/custom/{id}/run — Execute a saved report and return the result set","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/reports/custom/{id}/run","host":["{{baseUrl}}"],"path":["reports","custom","{id}","run"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Execute a saved report and return the result set"}},{"name":"GET /reports/custom/{id}/export — Export a saved report as CSV","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/reports/custom/{id}/export","host":["{{baseUrl}}"],"path":["reports","custom","{id}","export"]},"description":"Export a saved report as CSV"}},{"name":"GET /reports/custom/{id}/export.pdf — Export a saved report as a PDF on district letterhead","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/reports/custom/{id}/export.pdf","host":["{{baseUrl}}"],"path":["reports","custom","{id}","export.pdf"]},"description":"Export a saved report as a PDF on district letterhead"}},{"name":"POST /reports/custom/{id}/duplicate — Duplicate a saved report","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/reports/custom/{id}/duplicate","host":["{{baseUrl}}"],"path":["reports","custom","{id}","duplicate"]},"description":"Duplicate a saved report"}},{"name":"GET /reports/export-schedules — List scheduled data-set exports","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/reports/export-schedules","host":["{{baseUrl}}"],"path":["reports","export-schedules"]},"description":"List scheduled data-set exports"}},{"name":"POST /reports/export-schedules — Schedule a saved report for recurring CSV delivery","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/reports/export-schedules","host":["{{baseUrl}}"],"path":["reports","export-schedules"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Schedule a saved report for recurring CSV delivery"}},{"name":"PATCH /reports/export-schedules/{id} — Edit or pause a scheduled export","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/reports/export-schedules/{id}","host":["{{baseUrl}}"],"path":["reports","export-schedules","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit or pause a scheduled export"}},{"name":"DELETE /reports/export-schedules/{id} — Delete a scheduled export","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/reports/export-schedules/{id}","host":["{{baseUrl}}"],"path":["reports","export-schedules","{id}"]},"description":"Delete a scheduled export"}},{"name":"POST /reports/export-schedules/{id}/run-now — Run a scheduled export immediately","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/reports/export-schedules/{id}/run-now","host":["{{baseUrl}}"],"path":["reports","export-schedules","{id}","run-now"]},"description":"Run a scheduled export immediately"}}]},{"name":"Lookups","item":[{"name":"GET /lookups/categories — List every lookup category available to this caller","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/lookups/categories","host":["{{baseUrl}}"],"path":["lookups","categories"]},"description":"List every lookup category available to this caller"}},{"name":"GET /lookups/{category} — Get the active options for a lookup category","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/lookups/{category}","host":["{{baseUrl}}"],"path":["lookups","{category}"]},"description":"Merges platform defaults → state defaults → district overrides. Sorted by sortOrder then label."}}]},{"name":"Transcripts","item":[{"name":"GET /students/{id}/transcript — Get a student’s transcript (registrar view)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students/{id}/transcript","host":["{{baseUrl}}"],"path":["students","{id}","transcript"]},"description":"Get a student’s transcript (registrar view)"}},{"name":"GET /students/{id}/transcript.pdf — Download a student’s transcript as a PDF","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students/{id}/transcript.pdf","host":["{{baseUrl}}"],"path":["students","{id}","transcript.pdf"]},"description":"Renders an official-style transcript PDF using pdf-lib. Single binary response with content-type application/pdf."}},{"name":"GET /student/me/transcript — Current student’s own transcript","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/student/me/transcript","host":["{{baseUrl}}"],"path":["student","me","transcript"]},"description":"Current student’s own transcript"}},{"name":"GET /honor-roll — District honor roll (current term, by cumulative GPA)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/honor-roll","host":["{{baseUrl}}"],"path":["honor-roll"]},"description":"District honor roll (current term, by cumulative GPA)"}},{"name":"POST /transcripts/backfill — Backfill academic records from SectionGrade for a school year","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transcripts/backfill","host":["{{baseUrl}}"],"path":["transcripts","backfill"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Backfill academic records from SectionGrade for a school year"}},{"name":"POST /transcripts/refresh-metrics — Recompute GPA / credits / class rank / honor roll for a cohort","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transcripts/refresh-metrics","host":["{{baseUrl}}"],"path":["transcripts","refresh-metrics"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Recompute GPA / credits / class rank / honor roll for a cohort"}}]},{"name":"Report cards","item":[{"name":"POST /report-cards/generate — Generate / refresh report cards for every student in a term","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/report-cards/generate","host":["{{baseUrl}}"],"path":["report-cards","generate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Idempotent: re-running refreshes snapshots but preserves ‘published’ status."}},{"name":"POST /report-cards/lock — Lock (freeze) all draft report cards in a term","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/report-cards/lock","host":["{{baseUrl}}"],"path":["report-cards","lock"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Lock (freeze) all draft report cards in a term"}},{"name":"POST /report-cards/publish — Publish report cards to families (marks them as visible)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/report-cards/publish","host":["{{baseUrl}}"],"path":["report-cards","publish"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Publish report cards to families (marks them as visible)"}},{"name":"GET /report-cards — List report cards for a term (registrar view)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/report-cards","host":["{{baseUrl}}"],"path":["report-cards"]},"description":"List report cards for a term (registrar view)"}},{"name":"GET /students/{id}/report-cards — All report cards for a specific student","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students/{id}/report-cards","host":["{{baseUrl}}"],"path":["students","{id}","report-cards"]},"description":"All report cards for a specific student"}},{"name":"GET /students/{id}/report-cards/{termId} — Get a single report card for a student + term","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students/{id}/report-cards/{termId}","host":["{{baseUrl}}"],"path":["students","{id}","report-cards","{termId}"]},"description":"Get a single report card for a student + term"}},{"name":"GET /student/me/report-cards — Current student’s published report cards","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/student/me/report-cards","host":["{{baseUrl}}"],"path":["student","me","report-cards"]},"description":"Current student’s published report cards"}},{"name":"GET /sections/{id}/report-comments — List teacher comments for all students in a section + term","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sections/{id}/report-comments","host":["{{baseUrl}}"],"path":["sections","{id}","report-comments"]},"description":"List teacher comments for all students in a section + term"}},{"name":"PUT /sections/{sectionId}/report-comments/{studentId} — Save / update a teacher comment for one student in one section","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sections/{sectionId}/report-comments/{studentId}","host":["{{baseUrl}}"],"path":["sections","{sectionId}","report-comments","{studentId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save / update a teacher comment for one student in one section"}}]},{"name":"Graduation","item":[{"name":"GET /students/{id}/graduation-progress — Progress-to-graduation for a specific student (registrar / counselor view)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students/{id}/graduation-progress","host":["{{baseUrl}}"],"path":["students","{id}","graduation-progress"]},"description":"Progress-to-graduation for a specific student (registrar / counselor view)"}},{"name":"GET /student/me/graduation-progress — Current student’s own progress-to-graduation","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/student/me/graduation-progress","host":["{{baseUrl}}"],"path":["student","me","graduation-progress"]},"description":"Current student’s own progress-to-graduation"}},{"name":"GET /graduation/seniors — Senior roster with progress + status (registrar clearance view)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/graduation/seniors","host":["{{baseUrl}}"],"path":["graduation","seniors"]},"description":"Senior roster with progress + status (registrar clearance view)"}},{"name":"POST /students/{id}/graduation-waivers — Waive a subject-area credit requirement for a student","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/students/{id}/graduation-waivers","host":["{{baseUrl}}"],"path":["students","{id}","graduation-waivers"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Waive a subject-area credit requirement for a student"}}]},{"name":"Section 504","item":[{"name":"GET /students/{id}/504-plans — Plans for a specific student (current + history)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students/{id}/504-plans","host":["{{baseUrl}}"],"path":["students","{id}","504-plans"]},"description":"Plans for a specific student (current + history)"}},{"name":"GET /student/me/504-plans — Current student’s own 504 plans","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/student/me/504-plans","host":["{{baseUrl}}"],"path":["student","me","504-plans"]},"description":"Current student’s own 504 plans"}},{"name":"GET /teacher/sections/{id}/accommodations — Accommodations for the students in one of my sections","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/teacher/sections/{id}/accommodations","host":["{{baseUrl}}"],"path":["teacher","sections","{id}","accommodations"]},"description":"Accommodations for the students in one of my sections"}},{"name":"GET /504-plans — List every 504 plan in the district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/504-plans","host":["{{baseUrl}}"],"path":["504-plans"]},"description":"List every 504 plan in the district"}},{"name":"POST /504-plans — Draft a new 504 plan after eligibility determination","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/504-plans","host":["{{baseUrl}}"],"path":["504-plans"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Draft a new 504 plan after eligibility determination"}},{"name":"GET /504-plans/{id} — Single plan with accommodations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/504-plans/{id}","host":["{{baseUrl}}"],"path":["504-plans","{id}"]},"description":"Single plan with accommodations"}},{"name":"PATCH /504-plans/{id} — Update plan metadata (status, end date, notes)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/504-plans/{id}","host":["{{baseUrl}}"],"path":["504-plans","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update plan metadata (status, end date, notes)"}},{"name":"POST /504-plans/{id}/review — Record the annual review meeting outcome","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/504-plans/{id}/review","host":["{{baseUrl}}"],"path":["504-plans","{id}","review"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record the annual review meeting outcome"}},{"name":"POST /504-plans/{id}/accommodations — Add an accommodation to a plan","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/504-plans/{id}/accommodations","host":["{{baseUrl}}"],"path":["504-plans","{id}","accommodations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an accommodation to a plan"}},{"name":"POST /504-plans/{planId}/accommodations/{accId}/remove — Deactivate an accommodation (soft-remove)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/504-plans/{planId}/accommodations/{accId}/remove","host":["{{baseUrl}}"],"path":["504-plans","{planId}","accommodations","{accId}","remove"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Deactivate an accommodation (soft-remove)"}}]},{"name":"Truancy","item":[{"name":"GET /truancy/cases — District truancy caseload","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/truancy/cases","host":["{{baseUrl}}"],"path":["truancy","cases"]},"description":"District truancy caseload"}},{"name":"GET /truancy/cases/{id} — One case with full letter history","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/truancy/cases/{id}","host":["{{baseUrl}}"],"path":["truancy","cases","{id}"]},"description":"One case with full letter history"}},{"name":"GET /truancy/policy — District truancy policy (thresholds + letter templates)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/truancy/policy","host":["{{baseUrl}}"],"path":["truancy","policy"]},"description":"District truancy policy (thresholds + letter templates)"}},{"name":"PATCH /truancy/policy — Update thresholds or letter templates","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/truancy/policy","host":["{{baseUrl}}"],"path":["truancy","policy"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update thresholds or letter templates"}},{"name":"POST /truancy/evaluate — Scan attendance and open/advance cases","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/truancy/evaluate","host":["{{baseUrl}}"],"path":["truancy","evaluate"]},"description":"Scan attendance and open/advance cases"}},{"name":"POST /truancy/cases/{id}/generate-letter — Draft a letter of the specified tier for the case","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/truancy/cases/{id}/generate-letter","host":["{{baseUrl}}"],"path":["truancy","cases","{id}","generate-letter"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Draft a letter of the specified tier for the case"}},{"name":"POST /truancy/letters/{id}/send — Mark a generated letter as sent via the chosen channel","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/truancy/letters/{id}/send","host":["{{baseUrl}}"],"path":["truancy","letters","{id}","send"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark a generated letter as sent via the chosen channel"}},{"name":"POST /truancy/letters/{id}/acknowledge — Record parent acknowledgement of a truancy letter","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/truancy/letters/{id}/acknowledge","host":["{{baseUrl}}"],"path":["truancy","letters","{id}","acknowledge"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record parent acknowledgement of a truancy letter"}},{"name":"POST /truancy/cases/{id}/resolve — Resolve a truancy case (attendance restored, transfer, etc.)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/truancy/cases/{id}/resolve","host":["{{baseUrl}}"],"path":["truancy","cases","{id}","resolve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Resolve a truancy case (attendance restored, transfer, etc.)"}}]},{"name":"Counselor","item":[{"name":"GET /counselors/me/caseload — List the calling counselor's active caseload","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/counselors/me/caseload","host":["{{baseUrl}}"],"path":["counselors","me","caseload"]},"description":"List the calling counselor's active caseload"}},{"name":"GET /counselors/{counselorPersonId}/caseload — List active caseload for a specific counselor","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/counselors/{counselorPersonId}/caseload","host":["{{baseUrl}}"],"path":["counselors","{counselorPersonId}","caseload"]},"description":"List active caseload for a specific counselor"}},{"name":"GET /counselors/unassigned — List active students with no current counselor assignment","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/counselors/unassigned","host":["{{baseUrl}}"],"path":["counselors","unassigned"]},"description":"List active students with no current counselor assignment"}},{"name":"POST /counselors/caseload/assign — Assign a student to a counselor","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/counselors/caseload/assign","host":["{{baseUrl}}"],"path":["counselors","caseload","assign"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Idempotent. If the same counselor↔student pair already has an active row, the existing row is end-dated and a new row is created so the change is auditable."}},{"name":"POST /counselors/caseload/{assignmentId}/unassign — End a counselor assignment","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/counselors/caseload/{assignmentId}/unassign","host":["{{baseUrl}}"],"path":["counselors","caseload","{assignmentId}","unassign"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"End a counselor assignment"}},{"name":"POST /counselors/caseload/request — Counselor requests assignment of a specific student","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/counselors/caseload/request","host":["{{baseUrl}}"],"path":["counselors","caseload","request"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Counselors cannot self-assign; this endpoint emits an event so a principal/school_admin can review and action it."}}]},{"name":"IEP","item":[{"name":"GET /iep/teacher/sections/{id}/accommodations — Active IEP accommodations for students in this section","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/iep/teacher/sections/{id}/accommodations","host":["{{baseUrl}}"],"path":["iep","teacher","sections","{id}","accommodations"]},"description":"Active IEP accommodations for students in this section"}},{"name":"GET /iep/referrals — List SPED referrals","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/iep/referrals","host":["{{baseUrl}}"],"path":["iep","referrals"]},"description":"List SPED referrals"}},{"name":"POST /iep/referrals — Open a new SPED referral (Child Find)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/referrals","host":["{{baseUrl}}"],"path":["iep","referrals"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Open a new SPED referral (Child Find)"}},{"name":"GET /iep/referrals/{id} — One referral with evaluations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/iep/referrals/{id}","host":["{{baseUrl}}"],"path":["iep","referrals","{id}"]},"description":"One referral with evaluations"}},{"name":"PATCH /iep/referrals/{id} — Update referral (status, consent, eligibility decision, notes)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/referrals/{id}","host":["{{baseUrl}}"],"path":["iep","referrals","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update referral (status, consent, eligibility decision, notes)"}},{"name":"POST /iep/referrals/{id}/evaluations — Schedule an evaluation on a referral","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/referrals/{id}/evaluations","host":["{{baseUrl}}"],"path":["iep","referrals","{id}","evaluations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Schedule an evaluation on a referral"}},{"name":"PATCH /iep/evaluations/{id} — Update an evaluation (status, findings, completed date)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/evaluations/{id}","host":["{{baseUrl}}"],"path":["iep","evaluations","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update an evaluation (status, findings, completed date)"}},{"name":"GET /iep/plans — List IEPs (district caseload)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/iep/plans","host":["{{baseUrl}}"],"path":["iep","plans"]},"description":"List IEPs (district caseload)"}},{"name":"POST /iep/plans — Draft a new IEP after eligibility determination","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/plans","host":["{{baseUrl}}"],"path":["iep","plans"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Draft a new IEP after eligibility determination"}},{"name":"GET /iep/plans/{id} — Single IEP with goals, services, accommodations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/iep/plans/{id}","host":["{{baseUrl}}"],"path":["iep","plans","{id}"]},"description":"Single IEP with goals, services, accommodations"}},{"name":"PATCH /iep/plans/{id} — Update IEP metadata (status, disability, dates, notes)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/plans/{id}","host":["{{baseUrl}}"],"path":["iep","plans","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update IEP metadata (status, disability, dates, notes)"}},{"name":"GET /iep/students/{id}/plans — IEPs for a specific student (history)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/iep/students/{id}/plans","host":["{{baseUrl}}"],"path":["iep","students","{id}","plans"]},"description":"IEPs for a specific student (history)"}},{"name":"GET /iep/student/me/plans — Current student’s own IEPs","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/iep/student/me/plans","host":["{{baseUrl}}"],"path":["iep","student","me","plans"]},"description":"Current student’s own IEPs"}},{"name":"POST /iep/plans/{id}/review — Record the annual review meeting outcome","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/plans/{id}/review","host":["{{baseUrl}}"],"path":["iep","plans","{id}","review"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record the annual review meeting outcome"}},{"name":"POST /iep/plans/{id}/goals — Add a measurable annual goal to an IEP","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/plans/{id}/goals","host":["{{baseUrl}}"],"path":["iep","plans","{id}","goals"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a measurable annual goal to an IEP"}},{"name":"POST /iep/goals/{id}/retire — Deactivate a goal (kept for history)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/iep/goals/{id}/retire","host":["{{baseUrl}}"],"path":["iep","goals","{id}","retire"]},"description":"Deactivate a goal (kept for history)"}},{"name":"POST /iep/plans/{id}/services — Add a related service (SLP, OT, PT, counseling, …) to an IEP","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/plans/{id}/services","host":["{{baseUrl}}"],"path":["iep","plans","{id}","services"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a related service (SLP, OT, PT, counseling, …) to an IEP"}},{"name":"POST /iep/services/{id}/retire — Deactivate an IEP service","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/iep/services/{id}/retire","host":["{{baseUrl}}"],"path":["iep","services","{id}","retire"]},"description":"Deactivate an IEP service"}},{"name":"POST /iep/plans/{id}/accommodations — Add an accommodation to an IEP","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/plans/{id}/accommodations","host":["{{baseUrl}}"],"path":["iep","plans","{id}","accommodations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an accommodation to an IEP"}},{"name":"POST /iep/accommodations/{id}/remove — Retire an IEP accommodation with reason","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/accommodations/{id}/remove","host":["{{baseUrl}}"],"path":["iep","accommodations","{id}","remove"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Retire an IEP accommodation with reason"}},{"name":"GET /iep/plans/{id}/signatures — List signatures captured against an IEP plan","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/iep/plans/{id}/signatures","host":["{{baseUrl}}"],"path":["iep","plans","{id}","signatures"]},"description":"List signatures captured against an IEP plan"}},{"name":"POST /iep/plans/{id}/signatures — Capture a typed-name signature against an IEP (consent, agreement, attendance, amendment)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/plans/{id}/signatures","host":["{{baseUrl}}"],"path":["iep","plans","{id}","signatures"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Capture a typed-name signature against an IEP (consent, agreement, attendance, amendment)"}},{"name":"POST /iep/signatures/{id}/revoke — Revoke a previously captured IEP signature","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/signatures/{id}/revoke","host":["{{baseUrl}}"],"path":["iep","signatures","{id}","revoke"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Revoke a previously captured IEP signature"}},{"name":"GET /iep/plans/{id}/meetings — List IEP team meetings for a plan","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/iep/plans/{id}/meetings","host":["{{baseUrl}}"],"path":["iep","plans","{id}","meetings"]},"description":"List IEP team meetings for a plan"}},{"name":"POST /iep/plans/{id}/meetings — Schedule an IEP team meeting (IDEA 10-day notice)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/plans/{id}/meetings","host":["{{baseUrl}}"],"path":["iep","plans","{id}","meetings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Schedule an IEP team meeting (IDEA 10-day notice)"}},{"name":"PATCH /iep/meetings/{id} — Update meeting attendance / minutes / outcomes. Setting `heldAt` emits IepMeeting.Held.","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/meetings/{id}","host":["{{baseUrl}}"],"path":["iep","meetings","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update meeting attendance / minutes / outcomes. Setting `heldAt` emits IepMeeting.Held."}},{"name":"GET /iep/goals/{id}/progress — List progress notes for a specific goal","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/iep/goals/{id}/progress","host":["{{baseUrl}}"],"path":["iep","goals","{id}","progress"]},"description":"List progress notes for a specific goal"}},{"name":"POST /iep/goals/{id}/progress — Record a progress observation against a goal","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/iep/goals/{id}/progress","host":["{{baseUrl}}"],"path":["iep","goals","{id}","progress"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a progress observation against a goal"}},{"name":"GET /iep/plans/{id}/progress — List all progress notes across every goal on a plan (reverse-chron).","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/iep/plans/{id}/progress","host":["{{baseUrl}}"],"path":["iep","plans","{id}","progress"]},"description":"List all progress notes across every goal on a plan (reverse-chron)."}},{"name":"PATCH /iep/progress-notes/{id}/share-with-parent — Mark a progress note as included in a periodic parent report (sets sharedWithParentAt).","request":{"method":"PATCH","header":[],"url":{"raw":"{{baseUrl}}/iep/progress-notes/{id}/share-with-parent","host":["{{baseUrl}}"],"path":["iep","progress-notes","{id}","share-with-parent"]},"description":"Mark a progress note as included in a periodic parent report (sets sharedWithParentAt)."}},{"name":"GET /iep/case-managers — People who can be a plan case manager, with their caseloads","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/iep/case-managers","host":["{{baseUrl}}"],"path":["iep","case-managers"]},"description":"People who can be a plan case manager, with their caseloads"}}]},{"name":"Transportation","item":[{"name":"GET /transportation/routes — List bus routes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/routes","host":["{{baseUrl}}"],"path":["transportation","routes"]},"description":"List bus routes"}},{"name":"POST /transportation/routes — Create a bus route (emits BusRouteCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/routes","host":["{{baseUrl}}"],"path":["transportation","routes"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a bus route (emits BusRouteCreated)"}},{"name":"GET /transportation/routes/{id} — Get a bus route with its stops","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/routes/{id}","host":["{{baseUrl}}"],"path":["transportation","routes","{id}"]},"description":"Get a bus route with its stops"}},{"name":"PATCH /transportation/routes/{id} — Edit a bus route (emits BusRouteUpdated)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/routes/{id}","host":["{{baseUrl}}"],"path":["transportation","routes","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Passing `stops` replaces the stop list — requires that there be no active assignments on the route. Omit `stops` to keep the current list unchanged."}},{"name":"POST /transportation/routes/{id}/deactivate — Retire a bus route (emits BusRouteDeactivated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/routes/{id}/deactivate","host":["{{baseUrl}}"],"path":["transportation","routes","{id}","deactivate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Marks the route inactive so no new assignments can be attached. Existing assignments remain historical. Refuses if the route already has active assignments — end them first."}},{"name":"GET /transportation/assignments — List route assignments","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/assignments","host":["{{baseUrl}}"],"path":["transportation","assignments"]},"description":"Default is active-only (no effectiveTo or effectiveTo in the future). Pass ?activeOnly=false to include history."}},{"name":"POST /transportation/assignments — Assign a student to a route (emits StudentAssignedToRoute)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/assignments","host":["{{baseUrl}}"],"path":["transportation","assignments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assign a student to a route (emits StudentAssignedToRoute)"}},{"name":"GET /transportation/assignments/{id} — Get a route assignment","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/assignments/{id}","host":["{{baseUrl}}"],"path":["transportation","assignments","{id}"]},"description":"Get a route assignment"}},{"name":"POST /transportation/assignments/{id}/end — End an assignment (emits StudentUnassignedFromRoute)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/assignments/{id}/end","host":["{{baseUrl}}"],"path":["transportation","assignments","{id}","end"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Stamps `effectiveTo` so the student no longer appears on the active manifest. Historical data stays on file. Defaults to today if `endedOn` is omitted."}},{"name":"GET /transportation/alternate-pickups — List alternate-pickup requests","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/alternate-pickups","host":["{{baseUrl}}"],"path":["transportation","alternate-pickups"]},"description":"List alternate-pickup requests"}},{"name":"POST /transportation/alternate-pickups — Request an alternate pickup (emits AlternatePickupRequested)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/alternate-pickups","host":["{{baseUrl}}"],"path":["transportation","alternate-pickups"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Opens a request in `pending` status. A district user reviews via /approve or /deny. Requests cannot overlap an existing pending/approved window for the same student."}},{"name":"GET /transportation/alternate-pickups/{id} — Get an alternate-pickup request","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/alternate-pickups/{id}","host":["{{baseUrl}}"],"path":["transportation","alternate-pickups","{id}"]},"description":"Get an alternate-pickup request"}},{"name":"POST /transportation/alternate-pickups/{id}/approve — Approve an alternate-pickup request (emits AlternatePickupApproved)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/alternate-pickups/{id}/approve","host":["{{baseUrl}}"],"path":["transportation","alternate-pickups","{id}","approve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve an alternate-pickup request (emits AlternatePickupApproved)"}},{"name":"POST /transportation/alternate-pickups/{id}/deny — Deny an alternate-pickup request (emits AlternatePickupDenied)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/alternate-pickups/{id}/deny","host":["{{baseUrl}}"],"path":["transportation","alternate-pickups","{id}","deny"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Deny an alternate-pickup request (emits AlternatePickupDenied)"}},{"name":"GET /transportation/field-trips — List field trips","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/field-trips","host":["{{baseUrl}}"],"path":["transportation","field-trips"]},"description":"List field trips"}},{"name":"POST /transportation/field-trips — Schedule a field trip (emits FieldTripScheduled)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/field-trips","host":["{{baseUrl}}"],"path":["transportation","field-trips"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Schedule a field trip (emits FieldTripScheduled)"}},{"name":"GET /transportation/field-trips/{id} — Get a field trip with its roster","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/field-trips/{id}","host":["{{baseUrl}}"],"path":["transportation","field-trips","{id}"]},"description":"Get a field trip with its roster"}},{"name":"PATCH /transportation/field-trips/{id} — Edit a field trip","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/field-trips/{id}","host":["{{baseUrl}}"],"path":["transportation","field-trips","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Status transitions emit FieldTripStatusChanged. Other edits are logged as regular updates."}},{"name":"PATCH /transportation/field-trips/{id}/roster — Add or remove students from the field-trip roster","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/field-trips/{id}/roster","host":["{{baseUrl}}"],"path":["transportation","field-trips","{id}","roster"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Emits FieldTripRosterUpdated when any students were added or removed. Duplicates in `add` are silently ignored (the unique constraint covers it)."}},{"name":"POST /transportation/field-trips/{id}/roster/{rosterId}/board — Mark a roster row as boarded / not boarded","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/field-trips/{id}/roster/{rosterId}/board","host":["{{baseUrl}}"],"path":["transportation","field-trips","{id}","roster","{rosterId}","board"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Used at bus-loading time to tick off each student. Does not emit a separate event — boarding counts roll up on the trip read."}},{"name":"GET /transportation/vehicles — Fleet","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/vehicles","host":["{{baseUrl}}"],"path":["transportation","vehicles"]},"description":"Fleet"}},{"name":"POST /transportation/vehicles — Add a vehicle","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/vehicles","host":["{{baseUrl}}"],"path":["transportation","vehicles"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a vehicle"}},{"name":"GET /transportation/vehicles/{id} — A vehicle with its maintenance log and routes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/vehicles/{id}","host":["{{baseUrl}}"],"path":["transportation","vehicles","{id}"]},"description":"A vehicle with its maintenance log and routes"}},{"name":"PATCH /transportation/vehicles/{id} — Edit a vehicle","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/vehicles/{id}","host":["{{baseUrl}}"],"path":["transportation","vehicles","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a vehicle"}},{"name":"POST /transportation/vehicles/{id}/maintenance — Log an inspection, repair, service or pre-trip defect","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/vehicles/{id}/maintenance","host":["{{baseUrl}}"],"path":["transportation","vehicles","{id}","maintenance"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Log an inspection, repair, service or pre-trip defect"}},{"name":"PATCH /transportation/maintenance/{id} — Resolve or correct a maintenance entry","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/maintenance/{id}","host":["{{baseUrl}}"],"path":["transportation","maintenance","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Resolve or correct a maintenance entry"}},{"name":"GET /transportation/drivers — Drivers and aides","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/drivers","host":["{{baseUrl}}"],"path":["transportation","drivers"]},"description":"Drivers and aides"}},{"name":"POST /transportation/drivers — Add a driver or aide","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/drivers","host":["{{baseUrl}}"],"path":["transportation","drivers"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a driver or aide"}},{"name":"PATCH /transportation/drivers/{id} — Edit a driver or aide","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/drivers/{id}","host":["{{baseUrl}}"],"path":["transportation","drivers","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a driver or aide"}},{"name":"GET /transportation/compliance — Expired and due-soon items across fleet, drivers and routes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/compliance","host":["{{baseUrl}}"],"path":["transportation","compliance"]},"description":"Expired and due-soon items across fleet, drivers and routes"}},{"name":"GET /transportation/contractors — Contractors","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/contractors","host":["{{baseUrl}}"],"path":["transportation","contractors"]},"description":"Contractors"}},{"name":"POST /transportation/contractors — Add a contractor","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/contractors","host":["{{baseUrl}}"],"path":["transportation","contractors"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a contractor"}},{"name":"PATCH /transportation/contractors/{id} — Edit a contractor","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/contractors/{id}","host":["{{baseUrl}}"],"path":["transportation","contractors","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a contractor"}},{"name":"GET /transportation/needs — Special-needs transportation on file","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/needs","host":["{{baseUrl}}"],"path":["transportation","needs"]},"description":"Special-needs transportation on file"}},{"name":"POST /transportation/needs — Record a special-needs transportation entitlement","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/needs","host":["{{baseUrl}}"],"path":["transportation","needs"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a special-needs transportation entitlement"}},{"name":"PATCH /transportation/needs/{id} — Update, approve, end or deny a need","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/needs/{id}","host":["{{baseUrl}}"],"path":["transportation","needs","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update, approve, end or deny a need"}},{"name":"GET /transportation/contractors/{id}/invoices — A contractor’s monthly bills","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/contractors/{id}/invoices","host":["{{baseUrl}}"],"path":["transportation","contractors","{id}","invoices"]},"description":"A contractor’s monthly bills"}},{"name":"POST /transportation/contractors/{id}/invoices — Build a month’s bill: routes on contractor buses at the route rate, students carried at their daily rate, times school days","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/contractors/{id}/invoices","host":["{{baseUrl}}"],"path":["transportation","contractors","{id}","invoices"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Build a month’s bill: routes on contractor buses at the route rate, students carried at their daily rate, times school days"}},{"name":"PATCH /transportation/invoices/{id} — Review, approve, dispute or mark a bill paid","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/invoices/{id}","host":["{{baseUrl}}"],"path":["transportation","invoices","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Review, approve, dispute or mark a bill paid"}},{"name":"GET /transportation/aid-in-lieu — Aid-in-lieu payments by year","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/aid-in-lieu","host":["{{baseUrl}}"],"path":["transportation","aid-in-lieu"]},"description":"Aid-in-lieu payments by year"}},{"name":"POST /transportation/aid-in-lieu — Record an aid-in-lieu entitlement","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/aid-in-lieu","host":["{{baseUrl}}"],"path":["transportation","aid-in-lieu"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record an aid-in-lieu entitlement"}},{"name":"PATCH /transportation/aid-in-lieu/{id} — Approve, pay installments, or cancel","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/aid-in-lieu/{id}","host":["{{baseUrl}}"],"path":["transportation","aid-in-lieu","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve, pay installments, or cancel"}},{"name":"GET /transportation/special-report — Counts the DRTRS asks for: students by kind and provider, contractor spend, aid in lieu","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/special-report","host":["{{baseUrl}}"],"path":["transportation","special-report"]},"description":"Counts the DRTRS asks for: students by kind and provider, contractor spend, aid in lieu"}},{"name":"POST /transportation/notices/preview — Who a notice would reach, and the text they would get","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/notices/preview","host":["{{baseUrl}}"],"path":["transportation","notices","preview"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Who a notice would reach, and the text they would get"}},{"name":"POST /transportation/notices — Send a notice to the families on a route or of one student","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transportation/notices","host":["{{baseUrl}}"],"path":["transportation","notices"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send a notice to the families on a route or of one student"}},{"name":"GET /transportation/notices — Notices sent","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/notices","host":["{{baseUrl}}"],"path":["transportation","notices"]},"description":"Notices sent"}},{"name":"GET /transportation/drtrs-export — CSV of every transported resident student for the year, in DRTRS student-record order","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transportation/drtrs-export","host":["{{baseUrl}}"],"path":["transportation","drtrs-export"]},"description":"CSV of every transported resident student for the year, in DRTRS student-record order"}}]},{"name":"Food Service","item":[{"name":"GET /meal-service/applications — List meal-benefits applications","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meal-service/applications","host":["{{baseUrl}}"],"path":["meal-service","applications"]},"description":"List meal-benefits applications"}},{"name":"POST /meal-service/applications — Submit a meal-benefits application (emits MealApplicationSubmitted)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/applications","host":["{{baseUrl}}"],"path":["meal-service","applications"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Submit a meal-benefits application (emits MealApplicationSubmitted)"}},{"name":"GET /meal-service/applications/{id} — Get a meal-benefits application with its members","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meal-service/applications/{id}","host":["{{baseUrl}}"],"path":["meal-service","applications","{id}"]},"description":"Get a meal-benefits application with its members"}},{"name":"POST /meal-service/applications/{id}/approve — Approve an application and stamp eligibility for covered students","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/applications/{id}/approve","host":["{{baseUrl}}"],"path":["meal-service","applications","{id}","approve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Derives the NSLP category from the household income (or honors a categorical basis). Writes a MealEligibility row and a MealAccount for every student member. Emits MealApplicationApproved + MealEligibilitySet per student."}},{"name":"POST /meal-service/applications/{id}/deny — Deny an application (emits MealApplicationDenied)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/applications/{id}/deny","host":["{{baseUrl}}"],"path":["meal-service","applications","{id}","deny"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Deny an application (emits MealApplicationDenied)"}},{"name":"GET /meal-service/eligibility — List per-student meal eligibility records","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meal-service/eligibility","host":["{{baseUrl}}"],"path":["meal-service","eligibility"]},"description":"List per-student meal eligibility records"}},{"name":"POST /meal-service/eligibility — Write a per-student eligibility record (emits MealEligibilitySet)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/eligibility","host":["{{baseUrl}}"],"path":["meal-service","eligibility"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Used for direct-certification matches, CEP-district bulk writes, and manual corrections. Open records for the student in the same window are ended at effectiveFrom. Ensures a meal account exists."}},{"name":"GET /meal-service/eligibility/summary — Eligibility category distribution + ISEP","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meal-service/eligibility/summary","host":["{{baseUrl}}"],"path":["meal-service","eligibility","summary"]},"description":"Counts active students in each NSLP category (free / reduced / paid) and the Identified Student Percentage (ISEP). ISEP drives whether the district can apply for Community Eligibility Provision (CEP)."}},{"name":"POST /meal-service/eligibility/{id}/end — End an eligibility window (emits MealEligibilityEnded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/eligibility/{id}/end","host":["{{baseUrl}}"],"path":["meal-service","eligibility","{id}","end"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"End an eligibility window (emits MealEligibilityEnded)"}},{"name":"GET /meal-service/accounts — List student meal accounts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meal-service/accounts","host":["{{baseUrl}}"],"path":["meal-service","accounts"]},"description":"List student meal accounts"}},{"name":"POST /meal-service/accounts — Create or adopt a student meal account","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/accounts","host":["{{baseUrl}}"],"path":["meal-service","accounts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Idempotent: if the student already has an account, its settings are updated with any provided fields."}},{"name":"GET /meal-service/accounts/{id} — Get a student meal account","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meal-service/accounts/{id}","host":["{{baseUrl}}"],"path":["meal-service","accounts","{id}"]},"description":"Get a student meal account"}},{"name":"PATCH /meal-service/accounts/{id} — Update meal-account settings","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/accounts/{id}","host":["{{baseUrl}}"],"path":["meal-service","accounts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update meal-account settings"}},{"name":"POST /meal-service/accounts/{id}/fund — Add funds to a meal account (emits MealAccountFunded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/accounts/{id}/fund","host":["{{baseUrl}}"],"path":["meal-service","accounts","{id}","fund"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Records the payment, bumps the balance, and creates a payment transaction. Does NOT run a real payment — integrate a processor at the route boundary and then call this to finalize."}},{"name":"GET /meal-service/transactions — List meal transactions (POS ledger)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meal-service/transactions","host":["{{baseUrl}}"],"path":["meal-service","transactions"]},"description":"List meal transactions (POS ledger)"}},{"name":"POST /meal-service/pos/purchase — Record a POS meal purchase (emits MealPurchased)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/pos/purchase","host":["{{baseUrl}}"],"path":["meal-service","pos","purchase"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Looks up the student's current eligibility, charges the correct amount (free = $0, reduced = capped, paid = list price), debits the account, and marks the transaction reimbursable unless meal type is `a_la_carte`."}},{"name":"POST /meal-service/pos/transactions/{id}/refund — Refund a prior POS purchase (emits MealRefunded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/pos/transactions/{id}/refund","host":["{{baseUrl}}"],"path":["meal-service","pos","transactions","{id}","refund"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Refund a prior POS purchase (emits MealRefunded)"}},{"name":"GET /meal-service/service-days — List daily reimbursement claim rollups","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meal-service/service-days","host":["{{baseUrl}}"],"path":["meal-service","service-days"]},"description":"List daily reimbursement claim rollups"}},{"name":"POST /meal-service/service-days/close — Close a day's counts for reimbursement (emits MealServiceDayClosed)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/service-days/close","host":["{{baseUrl}}"],"path":["meal-service","service-days","close"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Recomputes counts from the ledger, then flips the status to `closed`. Re-runs are safe while status is `open`; once `claimed`, use an audit event to reopen."}},{"name":"GET /meal-service/reports/daily-counts — Daily reimbursable-counts report across a date range","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meal-service/reports/daily-counts","host":["{{baseUrl}}"],"path":["meal-service","reports","daily-counts"]},"description":"The basis for the state claim file. One row per school/date/meal-type. Results include open days so the director can see running totals."}}]},{"name":"Food Service – Direct Cert","item":[{"name":"GET /meal-service/direct-cert/imports — List direct-certification CSV imports","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meal-service/direct-cert/imports","host":["{{baseUrl}}"],"path":["meal-service","direct-cert","imports"]},"description":"List direct-certification CSV imports"}},{"name":"POST /meal-service/direct-cert/imports — Upload a state direct-cert CSV (returns a preview; not yet applied)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/direct-cert/imports","host":["{{baseUrl}}"],"path":["meal-service","direct-cert","imports"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Parse the CSV, match against the enrolled student roster, and persist a `preview` import. No eligibility records are written until you POST to `/:id/apply`. The CSV text is accepted as a JSON string field to avoid a multipart dependency."}},{"name":"GET /meal-service/direct-cert/imports/{id} — Get a direct-cert import with all per-student result rows","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meal-service/direct-cert/imports/{id}","host":["{{baseUrl}}"],"path":["meal-service","direct-cert","imports","{id}"]},"description":"Get a direct-cert import with all per-student result rows"}},{"name":"POST /meal-service/direct-cert/imports/{id}/apply — Apply a preview import — writes eligibility records for all matched students","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/direct-cert/imports/{id}/apply","host":["{{baseUrl}}"],"path":["meal-service","direct-cert","imports","{id}","apply"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Stamps a `MealEligibility` row (basis=direct_cert, category=free) for every matched (or manually accepted) result row, then marks the import as `applied`. This action is irreversible — discard first if you want to reject the import."}},{"name":"POST /meal-service/direct-cert/imports/{id}/discard — Discard a preview import (no eligibility records written)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/meal-service/direct-cert/imports/{id}/discard","host":["{{baseUrl}}"],"path":["meal-service","direct-cert","imports","{id}","discard"]},"description":"Discard a preview import (no eligibility records written)"}},{"name":"PATCH /meal-service/direct-cert/imports/{id}/results/{resultId} — Manually accept or reject a single match row before applying","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/direct-cert/imports/{id}/results/{resultId}","host":["{{baseUrl}}"],"path":["meal-service","direct-cert","imports","{id}","results","{resultId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Use `action=accept` to link an unmatched row to a specific student. Use `action=reject` to prevent an incorrectly auto-matched row from receiving an eligibility record when the import is applied."}}]},{"name":"Food Service – POS Inbound","item":[{"name":"POST /meal-service/pos/inbound — External POS terminal webhook — ingest a transaction for staging","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/pos/inbound","host":["{{baseUrl}}"],"path":["meal-service","pos","inbound"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Called by external POS hardware or software on each meal served. The request MUST include an `X-Forge-Signature: sha256=<hex-hmac>` header computed over the raw JSON body using the terminal's shared secret configured in `District.settings.posTerminals[terminalId].secret`. Duplicate payloads (same districtId + terminalId + externalTxnId) are silently accepted and return the existing record — safe for at-least-once delivery."}},{"name":"GET /meal-service/pos/inbound — List external POS inbound transactions (staging)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meal-service/pos/inbound","host":["{{baseUrl}}"],"path":["meal-service","pos","inbound"]},"description":"List external POS inbound transactions (staging)"}},{"name":"GET /meal-service/pos/inbound/{id} — Get a single external POS inbound transaction","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meal-service/pos/inbound/{id}","host":["{{baseUrl}}"],"path":["meal-service","pos","inbound","{id}"]},"description":"Get a single external POS inbound transaction"}},{"name":"POST /meal-service/pos/inbound/{id}/reconcile — Reconcile a staged POS transaction → writes a canonical MealTransaction","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meal-service/pos/inbound/{id}/reconcile","host":["{{baseUrl}}"],"path":["meal-service","pos","inbound","{id}","reconcile"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The director confirms the student was present and received the meal. This writes a `MealTransaction` via the same `recordPurchase` path used by the internal cashier POS (eligibility lookup, free/reduced pricing, reimbursable flag, service-day rollup rebuild all apply)."}},{"name":"POST /meal-service/pos/inbound/{id}/ignore — Mark a staged POS transaction as ignored (no meal transaction created)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/meal-service/pos/inbound/{id}/ignore","host":["{{baseUrl}}"],"path":["meal-service","pos","inbound","{id}","ignore"]},"description":"Use when a transaction is a duplicate, test ping, or a non-meal event from the external terminal. Ignored rows stay in the audit log but do not affect counts or reimbursable totals."}},{"name":"GET /meal-service/pos/inbound/reconciliation — POS inbound reconciliation summary — counts per terminal over a date range","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meal-service/pos/inbound/reconciliation","host":["{{baseUrl}}"],"path":["meal-service","pos","inbound","reconciliation"]},"description":"POS inbound reconciliation summary — counts per terminal over a date range"}}]},{"name":"Fees","item":[{"name":"GET /fees/catalog — List fee catalog entries","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/fees/catalog","host":["{{baseUrl}}"],"path":["fees","catalog"]},"description":"List fee catalog entries"}},{"name":"POST /fees/catalog — Create a fee catalog entry (emits FeeCatalogCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/fees/catalog","host":["{{baseUrl}}"],"path":["fees","catalog"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a fee catalog entry (emits FeeCatalogCreated)"}},{"name":"GET /fees/catalog/{id} — Get a fee catalog entry","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/fees/catalog/{id}","host":["{{baseUrl}}"],"path":["fees","catalog","{id}"]},"description":"Get a fee catalog entry"}},{"name":"PATCH /fees/catalog/{id} — Update a fee catalog entry (emits FeeCatalogUpdated)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/fees/catalog/{id}","host":["{{baseUrl}}"],"path":["fees","catalog","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a fee catalog entry (emits FeeCatalogUpdated)"}},{"name":"DELETE /fees/catalog/{id} — Archive a fee catalog entry (soft delete; emits FeeCatalogArchived)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/fees/catalog/{id}","host":["{{baseUrl}}"],"path":["fees","catalog","{id}"]},"description":"Archive a fee catalog entry (soft delete; emits FeeCatalogArchived)"}},{"name":"GET /fees — List student fees","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/fees","host":["{{baseUrl}}"],"path":["fees"]},"description":"List student fees"}},{"name":"POST /fees — Assess a single fee against a student (emits FeeAssessed)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/fees","host":["{{baseUrl}}"],"path":["fees"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assess a single fee against a student (emits FeeAssessed)"}},{"name":"GET /fees/{id} — Get a student fee with its payments","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/fees/{id}","host":["{{baseUrl}}"],"path":["fees","{id}"]},"description":"Get a student fee with its payments"}},{"name":"POST /fees/bulk-assess — Assess a catalog fee against many students (emits one FeeAssessed per student)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/fees/bulk-assess","host":["{{baseUrl}}"],"path":["fees","bulk-assess"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assess a catalog fee against many students (emits one FeeAssessed per student)"}},{"name":"POST /fees/{id}/waive — Waive a student fee (admin forgiveness; emits FeeWaived)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/fees/{id}/waive","host":["{{baseUrl}}"],"path":["fees","{id}","waive"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Waive a student fee (admin forgiveness; emits FeeWaived)"}},{"name":"POST /fees/{id}/void — Void a student fee (assessed in error; emits FeeVoided)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/fees/{id}/void","host":["{{baseUrl}}"],"path":["fees","{id}","void"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Void a student fee (assessed in error; emits FeeVoided)"}},{"name":"GET /fees/reports/summary — District-wide fees summary (for business-office dashboard)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/fees/reports/summary","host":["{{baseUrl}}"],"path":["fees","reports","summary"]},"description":"District-wide fees summary (for business-office dashboard)"}},{"name":"GET /fees/payments — List fee payments (includes refunds as negative rows)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/fees/payments","host":["{{baseUrl}}"],"path":["fees","payments"]},"description":"List fee payments (includes refunds as negative rows)"}},{"name":"POST /fees/{id}/payments — Record an in-office payment against a fee (emits FeePaid)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/fees/{id}/payments","host":["{{baseUrl}}"],"path":["fees","{id}","payments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Use for check, cash, school-cash (external), or manual adjustment payments. Online Stripe payments use the family endpoint which also finalizes the PaymentIntent."}},{"name":"POST /fees/payments/{id}/refund — Refund a previous payment (emits FeeRefunded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/fees/payments/{id}/refund","host":["{{baseUrl}}"],"path":["fees","payments","{id}","refund"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Stored as a negative `FeePayment` that points at the original via `refundedFromId`. Refuses over-refund."}},{"name":"POST /fees/{id}/checkout — Create a Stripe hosted-checkout session for a fee (parent portal)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/fees/{id}/checkout","host":["{{baseUrl}}"],"path":["fees","{id}","checkout"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Creates a Stripe Checkout Session for the specified fee. The response contains `sessionUrl` — the parent portal navigates to this URL. Stripe handles the card form. On completion, Stripe calls our webhook which projects the payment into the fee ledger."}},{"name":"GET /fees/payments/reconciliation — Payment reconciliation — online vs. in-office totals (admin GL export)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/fees/payments/reconciliation","host":["{{baseUrl}}"],"path":["fees","payments","reconciliation"]},"description":"Aggregate payment totals by processor channel for a given date range. Used by the business office to reconcile Stripe settlements against in-office deposits."}}]},{"name":"Payroll","item":[{"name":"GET /hr/payroll/cycles/{id}/payslips.pdf — Payslips for a cycle as a PDF, one page per employee","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/cycles/{id}/payslips.pdf","host":["{{baseUrl}}"],"path":["hr","payroll","cycles","{id}","payslips.pdf"]},"description":"Payslips for a cycle as a PDF, one page per employee"}},{"name":"GET /hr/payroll/filings/941 — Federal 941 for a quarter, built from what was paid","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/filings/941","host":["{{baseUrl}}"],"path":["hr","payroll","filings","941"]},"description":"Federal 941 for a quarter, built from what was paid"}},{"name":"GET /hr/payroll/filings/nj927 — NJ-927 for a quarter","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/filings/nj927","host":["{{baseUrl}}"],"path":["hr","payroll","filings","nj927"]},"description":"NJ-927 for a quarter"}},{"name":"GET /hr/payroll/filings/wr30 — WR-30 wage report for a quarter, one line per employee","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/filings/wr30","host":["{{baseUrl}}"],"path":["hr","payroll","filings","wr30"]},"description":"WR-30 wage report for a quarter, one line per employee"}},{"name":"GET /hr/payroll/filings/w2 — W-2 figures for every employee paid in a year","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/filings/w2","host":["{{baseUrl}}"],"path":["hr","payroll","filings","w2"]},"description":"W-2 figures for every employee paid in a year"}},{"name":"GET /hr/payroll/filings/reconcile — Do the four quarterly returns add up to the W-2s?","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/filings/reconcile","host":["{{baseUrl}}"],"path":["hr","payroll","filings","reconcile"]},"description":"Do the four quarterly returns add up to the W-2s?"}},{"name":"GET /hr/payroll/gl-mappings — Which ledger account each part of a payroll posts to","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/gl-mappings","host":["{{baseUrl}}"],"path":["hr","payroll","gl-mappings"]},"description":"Which ledger account each part of a payroll posts to"}},{"name":"GET /hr/payroll/filings/pension — Report of Contributions for TPAF and PERS over a date range","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/filings/pension","host":["{{baseUrl}}"],"path":["hr","payroll","filings","pension"]},"description":"Report of Contributions for TPAF and PERS over a date range"}},{"name":"GET /hr/payroll/pension-gaps — People having pension withheld that the state could not credit","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/pension-gaps","host":["{{baseUrl}}"],"path":["hr","payroll","pension-gaps"]},"description":"People having pension withheld that the state could not credit"}},{"name":"POST /hr/payroll/cycles/{id}/ach — Build the NACHA direct-deposit file for an approved cycle","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/payroll/cycles/{id}/ach","host":["{{baseUrl}}"],"path":["hr","payroll","cycles","{id}","ach"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Build the NACHA direct-deposit file for an approved cycle"}},{"name":"POST /hr/payroll/cycles/{id}/actions/post — Post an approved cycle to the general ledger","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/cycles/{id}/actions/post","host":["{{baseUrl}}"],"path":["hr","payroll","cycles","{id}","actions","post"]},"description":"Post an approved cycle to the general ledger"}},{"name":"GET /hr/payroll/bank-accounts — Bank accounts on file, with account numbers masked","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/bank-accounts","host":["{{baseUrl}}"],"path":["hr","payroll","bank-accounts"]},"description":"Bank accounts on file, with account numbers masked"}},{"name":"POST /hr/payroll/bank-accounts — Put a bank account on file. The number is sealed and never returned.","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/payroll/bank-accounts","host":["{{baseUrl}}"],"path":["hr","payroll","bank-accounts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Put a bank account on file. The number is sealed and never returned."}},{"name":"PATCH /hr/payroll/bank-accounts/{id} — Confirm a prenote, or take an account out of use","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/payroll/bank-accounts/{id}","host":["{{baseUrl}}"],"path":["hr","payroll","bank-accounts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Confirm a prenote, or take an account out of use"}},{"name":"GET /hr/payroll/ach-settings — The district's ACH identity. The offset account number is never returned.","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll/ach-settings","host":["{{baseUrl}}"],"path":["hr","payroll","ach-settings"]},"description":"The district's ACH identity. The offset account number is never returned."}},{"name":"PUT /hr/payroll/ach-settings — Set the district's ACH identity","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/payroll/ach-settings","host":["{{baseUrl}}"],"path":["hr","payroll","ach-settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set the district's ACH identity"}}]},{"name":"Vendors","item":[{"name":"GET /vendors — List vendors with open PO counts and unpaid invoice totals (tax id masked)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/vendors","host":["{{baseUrl}}"],"path":["vendors"]},"description":"List vendors with open PO counts and unpaid invoice totals (tax id masked)"}},{"name":"POST /vendors — Add a vendor to the vendor master (emits VendorCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/vendors","host":["{{baseUrl}}"],"path":["vendors"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a vendor to the vendor master (emits VendorCreated)"}},{"name":"GET /vendors/{id} — Vendor detail with recent invoices and purchase orders","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/vendors/{id}","host":["{{baseUrl}}"],"path":["vendors","{id}"]},"description":"Vendor detail with recent invoices and purchase orders"}},{"name":"PATCH /vendors/{id} — Edit vendor details (emits VendorUpdated)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/vendors/{id}","host":["{{baseUrl}}"],"path":["vendors","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit vendor details (emits VendorUpdated)"}},{"name":"POST /vendors/{id}/archive — Archive a vendor — refused while unpaid invoices exist (emits VendorArchived)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/vendors/{id}/archive","host":["{{baseUrl}}"],"path":["vendors","{id}","archive"]},"description":"Archive a vendor — refused while unpaid invoices exist (emits VendorArchived)"}}]},{"name":"Accounts Payable","item":[{"name":"GET /vendor-invoices — List vendor invoices (accounts payable)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/vendor-invoices","host":["{{baseUrl}}"],"path":["vendor-invoices"]},"description":"List vendor invoices (accounts payable)"}},{"name":"POST /vendor-invoices — Record a vendor invoice (emits VendorInvoiceRecorded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/vendor-invoices","host":["{{baseUrl}}"],"path":["vendor-invoices"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a vendor invoice (emits VendorInvoiceRecorded)"}},{"name":"GET /vendor-invoices/summary — AP aging buckets and totals by status","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/vendor-invoices/summary","host":["{{baseUrl}}"],"path":["vendor-invoices","summary"]},"description":"AP aging buckets and totals by status"}},{"name":"GET /vendor-invoices/{id} — Invoice detail including the linked PO summary (when set)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/vendor-invoices/{id}","host":["{{baseUrl}}"],"path":["vendor-invoices","{id}"]},"description":"Invoice detail including the linked PO summary (when set)"}},{"name":"POST /vendor-invoices/{id}/approve — Approve a pending invoice — recorder cannot self-approve (emits VendorInvoiceApproved)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/vendor-invoices/{id}/approve","host":["{{baseUrl}}"],"path":["vendor-invoices","{id}","approve"]},"description":"Approve a pending invoice — recorder cannot self-approve (emits VendorInvoiceApproved)"}},{"name":"POST /vendor-invoices/{id}/pay — Mark an approved invoice paid; optionally post a balanced GL entry — debit expense, credit cash (emits VendorInvoicePaid)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/vendor-invoices/{id}/pay","host":["{{baseUrl}}"],"path":["vendor-invoices","{id}","pay"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark an approved invoice paid; optionally post a balanced GL entry — debit expense, credit cash (emits VendorInvoicePaid)"}},{"name":"POST /vendor-invoices/{id}/void — Void an unpaid invoice with a reason (emits VendorInvoiceVoided)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/vendor-invoices/{id}/void","host":["{{baseUrl}}"],"path":["vendor-invoices","{id}","void"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Void an unpaid invoice with a reason (emits VendorInvoiceVoided)"}}]},{"name":"General Ledger","item":[{"name":"GET /gl/journal-entries — List journal entries with status/fiscal-year/source/account/date filters","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/gl/journal-entries","host":["{{baseUrl}}"],"path":["gl","journal-entries"]},"description":"List journal entries with status/fiscal-year/source/account/date filters"}},{"name":"POST /gl/journal-entries — Create a balanced draft journal entry (emits JournalEntryCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/gl/journal-entries","host":["{{baseUrl}}"],"path":["gl","journal-entries"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a balanced draft journal entry (emits JournalEntryCreated)"}},{"name":"GET /gl/trial-balance — Trial balance from POSTED entries — per-account debits/credits/balance with grand totals","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/gl/trial-balance","host":["{{baseUrl}}"],"path":["gl","trial-balance"]},"description":"Trial balance from POSTED entries — per-account debits/credits/balance with grand totals"}},{"name":"GET /gl/accounts/{id}/activity — Posted lines for one account, chronological, with a running balance","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/gl/accounts/{id}/activity","host":["{{baseUrl}}"],"path":["gl","accounts","{id}","activity"]},"description":"Posted lines for one account, chronological, with a running balance"}},{"name":"GET /gl/journal-entries/{id} — Journal entry detail including lines with account codes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/gl/journal-entries/{id}","host":["{{baseUrl}}"],"path":["gl","journal-entries","{id}"]},"description":"Journal entry detail including lines with account codes"}},{"name":"PATCH /gl/journal-entries/{id} — Edit a DRAFT journal entry — lines are rewritten with the same balance validation (emits JournalEntryUpdated)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/gl/journal-entries/{id}","host":["{{baseUrl}}"],"path":["gl","journal-entries","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a DRAFT journal entry — lines are rewritten with the same balance validation (emits JournalEntryUpdated)"}},{"name":"POST /gl/journal-entries/{id}/post — Post a draft entry — bridges lines into the budget ledger (emits JournalEntryPosted)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/gl/journal-entries/{id}/post","host":["{{baseUrl}}"],"path":["gl","journal-entries","{id}","post"]},"description":"Post a draft entry — bridges lines into the budget ledger (emits JournalEntryPosted)"}},{"name":"POST /gl/journal-entries/{id}/void — Void a POSTED entry with a reason — creates reversing budget entries (emits JournalEntryVoided)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/gl/journal-entries/{id}/void","host":["{{baseUrl}}"],"path":["gl","journal-entries","{id}","void"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Void a POSTED entry with a reason — creates reversing budget entries (emits JournalEntryVoided)"}}]},{"name":"Voice","item":[{"name":"POST /voice/identify — Who is calling from this number, or nobody.","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/identify","host":["{{baseUrl}}"],"path":["voice","identify"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Who is calling from this number, or nobody."}},{"name":"POST /voice/abilities — What this caller may ask for, and what the keypad offers.","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/abilities","host":["{{baseUrl}}"],"path":["voice","abilities"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"What this caller may ask for, and what the keypad offers."}},{"name":"POST /voice/invoke — Do it, and say whether it actually worked.","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/invoke","host":["{{baseUrl}}"],"path":["voice","invoke"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Do it, and say whether it actually worked."}},{"name":"POST /voice/alert-status — How an alert call the phone server placed for us ended.","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/alert-status","host":["{{baseUrl}}"],"path":["voice","alert-status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"How an alert call the phone server placed for us ended."}},{"name":"POST /voice/alert-digit — A key pressed on an alert call the phone server placed for us.","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/alert-digit","host":["{{baseUrl}}"],"path":["voice","alert-digit"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"A key pressed on an alert call the phone server placed for us."}},{"name":"GET /voice/line — The number the public rings, and whether the gateway is answering","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/voice/line","host":["{{baseUrl}}"],"path":["voice","line"]},"description":"The number the public rings, and whether the gateway is answering"}},{"name":"PATCH /voice/line — Set the number by hand, when the gateway has not reported one yet","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/line","host":["{{baseUrl}}"],"path":["voice","line"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set the number by hand, when the gateway has not reported one yet"}},{"name":"GET /voice/access — Everyone registered to call this district, and whether their line is live","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/voice/access","host":["{{baseUrl}}"],"path":["voice","access"]},"description":"Everyone registered to call this district, and whether their line is live"}},{"name":"POST /voice/access — Register a phone number to a login","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/access","host":["{{baseUrl}}"],"path":["voice","access"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Creates the row and issues a one-time enrolment PIN, returned here and never again. Give it to the person; their first call spends it to choose their own code."}},{"name":"GET /voice/candidates — District logins that could be given a phone line","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/voice/candidates","host":["{{baseUrl}}"],"path":["voice","candidates"]},"description":"District logins that could be given a phone line"}},{"name":"PATCH /voice/access/{id} — Change a registered number, or switch a line off","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/access/{id}","host":["{{baseUrl}}"],"path":["voice","access","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Changing the number clears the code with it: the code was set against the old handset, and carrying it over would let a re-pointed number keep an unbroken line."}},{"name":"DELETE /voice/access/{id} — Take a phone number off the line entirely","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/voice/access/{id}","host":["{{baseUrl}}"],"path":["voice","access","{id}"]},"description":"Take a phone number off the line entirely"}},{"name":"GET /voice/ability-catalog — Everything the phone line can be asked to do","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/voice/ability-catalog","host":["{{baseUrl}}"],"path":["voice","ability-catalog"]},"description":"The fixed allowlist from abilities.ts, with the permission each one sits behind. A department extension may narrow this list; nothing can widen it."}},{"name":"GET /voice/extensions — The keypad menu for this district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/voice/extensions","host":["{{baseUrl}}"],"path":["voice","extensions"]},"description":"The keypad menu for this district"}},{"name":"POST /voice/extensions — Add an extension to the keypad menu","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/extensions","host":["{{baseUrl}}"],"path":["voice","extensions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an extension to the keypad menu"}},{"name":"PATCH /voice/extensions/{id} — Edit an extension","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/extensions/{id}","host":["{{baseUrl}}"],"path":["voice","extensions","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an extension"}},{"name":"DELETE /voice/extensions/{id} — Remove an extension from the menu","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/voice/extensions/{id}","host":["{{baseUrl}}"],"path":["voice","extensions","{id}"]},"description":"Remove an extension from the menu"}},{"name":"GET /voice/me — My own phone line, if one has been registered for me","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/voice/me","host":["{{baseUrl}}"],"path":["voice","me"]},"description":"My own phone line, if one has been registered for me"}},{"name":"POST /voice/me/code — Set or change the code I key in when I call","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/me/code","host":["{{baseUrl}}"],"path":["voice","me","code"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Only the owner can call this. Setting a code is also what confirms the registered number is mine — the number alone identifies, and caller ID is settable, so the code is the half that actually holds."}},{"name":"DELETE /voice/me/code — Turn my own phone line off","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/voice/me/code","host":["{{baseUrl}}"],"path":["voice","me","code"]},"description":"Clears the code. The registration stays, so it can be turned back on by setting a new one; only an administrator can remove the number itself."}},{"name":"POST /voice/access/{id}/enrolment — Issue a fresh enrolment PIN","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/voice/access/{id}/enrolment","host":["{{baseUrl}}"],"path":["voice","access","{id}","enrolment"]},"description":"For somebody who never used theirs, mistyped it too often, or lost the code they chose. Any previous PIN stops working, and an existing code is cleared so the next call enrols again."}},{"name":"GET /voice/assistant — Geni in the app: who it is talking to and what it can do","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/voice/assistant","host":["{{baseUrl}}"],"path":["voice","assistant"]},"description":"Geni in the app: who it is talking to and what it can do"}},{"name":"POST /voice/assistant/turn — Say (or type) one thing to Geni and get the spoken answer","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/assistant/turn","host":["{{baseUrl}}"],"path":["voice","assistant","turn"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Uses the same abilities and the same invoke path as the phone line, under the signed-in person's own roles. Anything that writes comes back as `pending` and runs only when the next turn confirms it."}},{"name":"POST /voice/assistant/transcribe — Turn a short spoken WAV into text for Geni","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/assistant/transcribe","host":["{{baseUrl}}"],"path":["voice","assistant","transcribe"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Turn a short spoken WAV into text for Geni"}},{"name":"POST /voice/assistant/realtime — Open a live voice session with the real Geni (same model, voice and rules as the phone line)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/assistant/realtime","host":["{{baseUrl}}"],"path":["voice","assistant","realtime"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Open a live voice session with the real Geni (same model, voice and rules as the phone line)"}},{"name":"POST /voice/assistant/context — Geni page context: one line saying where in the app the person is, for the live session","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/assistant/context","host":["{{baseUrl}}"],"path":["voice","assistant","context"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Geni page context: one line saying where in the app the person is, for the live session"}},{"name":"POST /voice/assistant/invoke — Run one Geni ability for the live voice session","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/voice/assistant/invoke","host":["{{baseUrl}}"],"path":["voice","assistant","invoke"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Run one Geni ability for the live voice session"}}]},{"name":"Alerts","item":[{"name":"GET /alerts/me — My part in Alerts, the sidebar menu and the two delivery switches","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/me","host":["{{baseUrl}}"],"path":["alerts","me"]},"description":"My part in Alerts, the sidebar menu and the two delivery switches"}},{"name":"GET /alerts/home — Home: anything active now, recent alerts, readiness","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/home","host":["{{baseUrl}}"],"path":["alerts","home"]},"description":"Home: anything active now, recent alerts, readiness"}},{"name":"GET /alerts/lookups — Severities, categories, channels, triggers, dynamic audiences, placeholders and the metric catalogue","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/lookups","host":["{{baseUrl}}"],"path":["alerts","lookups"]},"description":"Severities, categories, channels, triggers, dynamic audiences, placeholders and the metric catalogue"}},{"name":"GET /alerts/staff — Staff to put on a call list, with the numbers on their record","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/staff","host":["{{baseUrl}}"],"path":["alerts","staff"]},"description":"Staff to put on a call list, with the numbers on their record"}},{"name":"GET /alerts/definitions — The district’s alert types","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/definitions","host":["{{baseUrl}}"],"path":["alerts","definitions"]},"description":"The district’s alert types"}},{"name":"POST /alerts/definitions — Create an alert type","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/definitions","host":["{{baseUrl}}"],"path":["alerts","definitions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an alert type"}},{"name":"GET /alerts/definitions/{id} — One alert type, with every version of its wording","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/definitions/{id}","host":["{{baseUrl}}"],"path":["alerts","definitions","{id}"]},"description":"One alert type, with every version of its wording"}},{"name":"PATCH /alerts/definitions/{id} — Change an alert type","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/definitions/{id}","host":["{{baseUrl}}"],"path":["alerts","definitions","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change an alert type"}},{"name":"DELETE /alerts/definitions/{id} — Delete an alert type (its past activations are kept)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/alerts/definitions/{id}","host":["{{baseUrl}}"],"path":["alerts","definitions","{id}"]},"description":"Delete an alert type (its past activations are kept)"}},{"name":"POST /alerts/definitions/{id}/active — Switch an alert type on or off (refuses without approved wording)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/definitions/{id}/active","host":["{{baseUrl}}"],"path":["alerts","definitions","{id}","active"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Switch an alert type on or off (refuses without approved wording)"}},{"name":"POST /alerts/templates — Save wording as a draft (editing approved wording makes a new version)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/templates","host":["{{baseUrl}}"],"path":["alerts","templates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save wording as a draft (editing approved wording makes a new version)"}},{"name":"POST /alerts/templates/{id}/approve — Approve wording — a named person says these are the words","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/alerts/templates/{id}/approve","host":["{{baseUrl}}"],"path":["alerts","templates","{id}","approve"]},"description":"Approve wording — a named person says these are the words"}},{"name":"DELETE /alerts/templates/{id} — Delete wording","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/alerts/templates/{id}","host":["{{baseUrl}}"],"path":["alerts","templates","{id}"]},"description":"Delete wording"}},{"name":"POST /alerts/templates/draft — Ask AI to draft wording for a person to edit and approve (never used at send time)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/templates/draft","host":["{{baseUrl}}"],"path":["alerts","templates","draft"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask AI to draft wording for a person to edit and approve (never used at send time)"}},{"name":"GET /alerts/lists — Call lists","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/lists","host":["{{baseUrl}}"],"path":["alerts","lists"]},"description":"Call lists"}},{"name":"POST /alerts/lists — Create a call list","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/lists","host":["{{baseUrl}}"],"path":["alerts","lists"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a call list"}},{"name":"GET /alerts/lists/{id} — One call list, its tiers and the people on them","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/lists/{id}","host":["{{baseUrl}}"],"path":["alerts","lists","{id}"]},"description":"One call list, its tiers and the people on them"}},{"name":"PATCH /alerts/lists/{id} — Change a call list","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/lists/{id}","host":["{{baseUrl}}"],"path":["alerts","lists","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a call list"}},{"name":"DELETE /alerts/lists/{id} — Delete a call list","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/alerts/lists/{id}","host":["{{baseUrl}}"],"path":["alerts","lists","{id}"]},"description":"Delete a call list"}},{"name":"POST /alerts/lists/{id}/tiers — Add a tier","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/lists/{id}/tiers","host":["{{baseUrl}}"],"path":["alerts","lists","{id}","tiers"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a tier"}},{"name":"PATCH /alerts/lists/{id}/tiers/{tierId} — Change a tier","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/lists/{id}/tiers/{tierId}","host":["{{baseUrl}}"],"path":["alerts","lists","{id}","tiers","{tierId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a tier"}},{"name":"DELETE /alerts/lists/{id}/tiers/{tierId} — Delete a tier and the people on it","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/alerts/lists/{id}/tiers/{tierId}","host":["{{baseUrl}}"],"path":["alerts","lists","{id}","tiers","{tierId}"]},"description":"Delete a tier and the people on it"}},{"name":"POST /alerts/lists/{id}/tiers/{tierId}/move — Move a tier up or down the ladder","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/lists/{id}/tiers/{tierId}/move","host":["{{baseUrl}}"],"path":["alerts","lists","{id}","tiers","{tierId}","move"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move a tier up or down the ladder"}},{"name":"POST /alerts/lists/{id}/tiers/{tierId}/people — Add a person (staff, or an outside contact) to a tier","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/lists/{id}/tiers/{tierId}/people","host":["{{baseUrl}}"],"path":["alerts","lists","{id}","tiers","{tierId}","people"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a person (staff, or an outside contact) to a tier"}},{"name":"PATCH /alerts/lists/{id}/people/{memberId} — Change a person on a list (their numbers, in preference order)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/lists/{id}/people/{memberId}","host":["{{baseUrl}}"],"path":["alerts","lists","{id}","people","{memberId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a person on a list (their numbers, in preference order)"}},{"name":"DELETE /alerts/lists/{id}/people/{memberId} — Take a person off a list","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/alerts/lists/{id}/people/{memberId}","host":["{{baseUrl}}"],"path":["alerts","lists","{id}","people","{memberId}"]},"description":"Take a person off a list"}},{"name":"POST /alerts/lists/{id}/people/{memberId}/move — Move a person up or down their tier","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/lists/{id}/people/{memberId}/move","host":["{{baseUrl}}"],"path":["alerts","lists","{id}","people","{memberId}","move"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move a person up or down their tier"}},{"name":"GET /alerts/conditions — Data conditions over the district’s own figures","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/conditions","host":["{{baseUrl}}"],"path":["alerts","conditions"]},"description":"Data conditions over the district’s own figures"}},{"name":"POST /alerts/conditions — Create a condition","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/conditions","host":["{{baseUrl}}"],"path":["alerts","conditions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a condition"}},{"name":"PATCH /alerts/conditions/{id} — Change a condition","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/conditions/{id}","host":["{{baseUrl}}"],"path":["alerts","conditions","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a condition"}},{"name":"DELETE /alerts/conditions/{id} — Delete a condition","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/alerts/conditions/{id}","host":["{{baseUrl}}"],"path":["alerts","conditions","{id}"]},"description":"Delete a condition"}},{"name":"POST /alerts/conditions/{id}/try — Try a condition against today’s real figures. Sends nothing.","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/alerts/conditions/{id}/try","host":["{{baseUrl}}"],"path":["alerts","conditions","{id}","try"]},"description":"Try a condition against today’s real figures. Sends nothing."}},{"name":"GET /alerts/triggers — Triggers, each switchable on its own","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/triggers","host":["{{baseUrl}}"],"path":["alerts","triggers"]},"description":"Triggers, each switchable on its own"}},{"name":"POST /alerts/triggers — Create a trigger","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/triggers","host":["{{baseUrl}}"],"path":["alerts","triggers"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a trigger"}},{"name":"PATCH /alerts/triggers/{id} — Change a trigger","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/triggers/{id}","host":["{{baseUrl}}"],"path":["alerts","triggers","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a trigger"}},{"name":"DELETE /alerts/triggers/{id} — Delete a trigger","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/alerts/triggers/{id}","host":["{{baseUrl}}"],"path":["alerts","triggers","{id}"]},"description":"Delete a trigger"}},{"name":"POST /alerts/triggers/{id}/enabled — Switch a trigger on or off","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/triggers/{id}/enabled","host":["{{baseUrl}}"],"path":["alerts","triggers","{id}","enabled"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Switch a trigger on or off"}},{"name":"POST /alerts/triggers/{id}/dry-run — Run a trigger against today’s data and report who would be notified. Sends nothing.","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/alerts/triggers/{id}/dry-run","host":["{{baseUrl}}"],"path":["alerts","triggers","{id}","dry-run"]},"description":"Run a trigger against today’s data and report who would be notified. Sends nothing."}},{"name":"POST /alerts/triggers/{id}/run-now — Run a trigger for real now (coordinators only)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/alerts/triggers/{id}/run-now","host":["{{baseUrl}}"],"path":["alerts","triggers","{id}","run-now"]},"description":"Run a trigger for real now (coordinators only)"}},{"name":"GET /alerts/runs — Evaluation runs, live and dry","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/runs","host":["{{baseUrl}}"],"path":["alerts","runs"]},"description":"Evaluation runs, live and dry"}},{"name":"POST /alerts/preview — The confirmation step: the alert, the list, how many will be called and the exact words","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/preview","host":["{{baseUrl}}"],"path":["alerts","preview"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The confirmation step: the alert, the list, how many will be called and the exact words"}},{"name":"POST /alerts/dry-run — Evaluate an alert against today’s data without sending anything","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/dry-run","host":["{{baseUrl}}"],"path":["alerts","dry-run"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Evaluate an alert against today’s data without sending anything"}},{"name":"POST /alerts/activate — Activate an alert. Coordinators only. Mode live | drill | test.","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/activate","host":["{{baseUrl}}"],"path":["alerts","activate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Activate an alert. Coordinators only. Mode live | drill | test."}},{"name":"POST /alerts/activations/{id}/cancel — The kill switch: cancel immediately, place no further calls","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/activations/{id}/cancel","host":["{{baseUrl}}"],"path":["alerts","activations","{id}","cancel"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The kill switch: cancel immediately, place no further calls"}},{"name":"POST /alerts/activations/{id}/acknowledge — Acknowledge — my own, or recorded for somebody else by a coordinator","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/activations/{id}/acknowledge","host":["{{baseUrl}}"],"path":["alerts","activations","{id}","acknowledge"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Acknowledge — my own, or recorded for somebody else by a coordinator"}},{"name":"GET /alerts/activations/{id} — The live board for one alert","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/activations/{id}","host":["{{baseUrl}}"],"path":["alerts","activations","{id}"]},"description":"The live board for one alert"}},{"name":"GET /alerts/activations/{id}/timeline — The timeline, append-only","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/activations/{id}/timeline","host":["{{baseUrl}}"],"path":["alerts","activations","{id}","timeline"]},"description":"The timeline, append-only"}},{"name":"GET /alerts/activations/{id}/report — The report for the board or counsel","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/activations/{id}/report","host":["{{baseUrl}}"],"path":["alerts","activations","{id}","report"]},"description":"The report for the board or counsel"}},{"name":"POST /alerts/activations/{id}/report — Keep the report, so the same words can be produced again","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/alerts/activations/{id}/report","host":["{{baseUrl}}"],"path":["alerts","activations","{id}","report"]},"description":"Keep the report, so the same words can be produced again"}},{"name":"GET /alerts/activations/{id}/export.csv — Every attempt as CSV","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/activations/{id}/export.csv","host":["{{baseUrl}}"],"path":["alerts","activations","{id}","export.csv"]},"description":"Every attempt as CSV"}},{"name":"GET /alerts/history — Past alerts and drills","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/history","host":["{{baseUrl}}"],"path":["alerts","history"]},"description":"Past alerts and drills"}},{"name":"GET /alerts/reports/period — A period report for a board meeting","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/reports/period","host":["{{baseUrl}}"],"path":["alerts","reports","period"]},"description":"A period report for a board meeting"}},{"name":"GET /alerts/team — Who may activate, who manages, who only reads","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/team","host":["{{baseUrl}}"],"path":["alerts","team"]},"description":"Who may activate, who manages, who only reads"}},{"name":"POST /alerts/team — Add somebody to the alert team","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/team","host":["{{baseUrl}}"],"path":["alerts","team"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add somebody to the alert team"}},{"name":"PATCH /alerts/team/{id} — Change somebody’s level or schools","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/team/{id}","host":["{{baseUrl}}"],"path":["alerts","team","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change somebody’s level or schools"}},{"name":"DELETE /alerts/team/{id} — Remove somebody from the alert team","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/alerts/team/{id}","host":["{{baseUrl}}"],"path":["alerts","team","{id}"]},"description":"Remove somebody from the alert team"}},{"name":"GET /alerts/settings — The district’s settings, including the two switches and the inbound endpoint","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/settings","host":["{{baseUrl}}"],"path":["alerts","settings"]},"description":"The district’s settings, including the two switches and the inbound endpoint"}},{"name":"PATCH /alerts/settings — Change the district’s settings (including switching live calling on)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/settings","host":["{{baseUrl}}"],"path":["alerts","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change the district’s settings (including switching live calling on)"}},{"name":"POST /alerts/settings/inbound-secret — Create a new inbound secret. Shown once; only its hash is kept.","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/alerts/settings/inbound-secret","host":["{{baseUrl}}"],"path":["alerts","settings","inbound-secret"]},"description":"Create a new inbound secret. Shown once; only its hash is kept."}},{"name":"GET /alerts/test-call — My own test number, the wording I can hear, the rate limit and what pressing it will do today","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/test-call","host":["{{baseUrl}}"],"path":["alerts","test-call"]},"description":"My own test number, the wording I can hear, the rate limit and what pressing it will do today"}},{"name":"POST /alerts/test-call — Place one test call to my own confirmed number. Coordinators only; rate limited; every attempt logged.","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/test-call","host":["{{baseUrl}}"],"path":["alerts","test-call"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Place one test call to my own confirmed number. Coordinators only; rate limited; every attempt logged."}},{"name":"POST /alerts/test-call/script — The exact words a test call would speak, shown before anything is pressed","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/test-call/script","host":["{{baseUrl}}"],"path":["alerts","test-call","script"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The exact words a test call would speak, shown before anything is pressed"}},{"name":"PUT /alerts/test-call/number — Set or change MY OWN test number. Refuses anybody else’s.","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/test-call/number","host":["{{baseUrl}}"],"path":["alerts","test-call","number"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set or change MY OWN test number. Refuses anybody else’s."}},{"name":"DELETE /alerts/test-call/number — Remove my own test number","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/alerts/test-call/number","host":["{{baseUrl}}"],"path":["alerts","test-call","number"]},"description":"Remove my own test number"}},{"name":"GET /alerts/inbound-log — Every inbound trigger attempt, accepted and rejected","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/alerts/inbound-log","host":["{{baseUrl}}"],"path":["alerts","inbound-log"]},"description":"Every inbound trigger attempt, accepted and rejected"}}]},{"name":"Alerts (inbound)","item":[{"name":"POST /alerts/inbound/{district} — Fire an alert from an outside system (panic button, PA, monitor). Per-district secret; every attempt logged.","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/alerts/inbound/{district}","host":["{{baseUrl}}"],"path":["alerts","inbound","{district}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Fire an alert from an outside system (panic button, PA, monitor). Per-district secret; every attempt logged."}}]},{"name":"Video meetings","item":[{"name":"POST /meetings/video/{id}/end — Mark a call finished","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/meetings/video/{id}/end","host":["{{baseUrl}}"],"path":["meetings","video","{id}","end"]},"description":"Mark a call finished"}},{"name":"DELETE /meetings/video/{id} — Delete a call","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/meetings/video/{id}","host":["{{baseUrl}}"],"path":["meetings","video","{id}"]},"description":"Delete a call"}},{"name":"POST /meetings/video/{id}/participants — Add somebody to a call, during or before it","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meetings/video/{id}/participants","host":["{{baseUrl}}"],"path":["meetings","video","{id}","participants"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add somebody to a call, during or before it"}},{"name":"POST /meetings/video/now — Open a room immediately and join it","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meetings/video/now","host":["{{baseUrl}}"],"path":["meetings","video","now"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Open a room immediately and join it"}},{"name":"POST /meetings/video/{id}/participants/{participantId}/email — Email a guest their join link","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meetings/video/{id}/participants/{participantId}/email","host":["{{baseUrl}}"],"path":["meetings","video","{id}","participants","{participantId}","email"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Email a guest their join link"}},{"name":"POST /meetings/video/guest/{token} — What a guest sees, and the room token when it is time","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/meetings/video/guest/{token}","host":["{{baseUrl}}"],"path":["meetings","video","guest","{token}"]},"description":"What a guest sees, and the room token when it is time"}},{"name":"GET /meetings/video — Scheduled calls, soonest first","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/meetings/video","host":["{{baseUrl}}"],"path":["meetings","video"]},"description":"Scheduled calls, soonest first"}},{"name":"POST /meetings/video — Schedule a call","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meetings/video","host":["{{baseUrl}}"],"path":["meetings","video"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Schedule a call"}},{"name":"POST /meetings/video/{id}/cancel — Call it off","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/meetings/video/{id}/cancel","host":["{{baseUrl}}"],"path":["meetings","video","{id}","cancel"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Call it off"}},{"name":"POST /meetings/video/{id}/token — A short-lived token for this room, for this person, now","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/meetings/video/{id}/token","host":["{{baseUrl}}"],"path":["meetings","video","{id}","token"]},"description":"A short-lived token for this room, for this person, now"}}]},{"name":"Substitutes","item":[{"name":"GET /sub/profiles — List substitute teachers in the district pool","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sub/profiles","host":["{{baseUrl}}"],"path":["sub","profiles"]},"description":"List substitute teachers in the district pool"}},{"name":"POST /sub/profiles — Add a substitute to the pool (emits SubstituteProfileCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sub/profiles","host":["{{baseUrl}}"],"path":["sub","profiles"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a substitute to the pool (emits SubstituteProfileCreated)"}},{"name":"GET /sub/profiles/{id} — Get a substitute profile","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sub/profiles/{id}","host":["{{baseUrl}}"],"path":["sub","profiles","{id}"]},"description":"Get a substitute profile"}},{"name":"PATCH /sub/profiles/{id} — Update a substitute profile (emits SubstituteProfileUpdated)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sub/profiles/{id}","host":["{{baseUrl}}"],"path":["sub","profiles","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a substitute profile (emits SubstituteProfileUpdated)"}},{"name":"POST /sub/profiles/{id}/archive — Archive a substitute (emits SubstituteProfileArchived)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sub/profiles/{id}/archive","host":["{{baseUrl}}"],"path":["sub","profiles","{id}","archive"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Archive a substitute (emits SubstituteProfileArchived)"}},{"name":"GET /sub/profiles/me — Load the current user's own substitute profile (sub portal)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sub/profiles/me","host":["{{baseUrl}}"],"path":["sub","profiles","me"]},"description":"Load the current user's own substitute profile (sub portal)"}},{"name":"GET /sub/absences — List staff absences","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sub/absences","host":["{{baseUrl}}"],"path":["sub","absences"]},"description":"List staff absences"}},{"name":"POST /sub/absences — Report a staff absence (emits StaffAbsenceReported)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sub/absences","host":["{{baseUrl}}"],"path":["sub","absences"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Report a staff absence (emits StaffAbsenceReported)"}},{"name":"GET /sub/absences/mine — List the acting teacher's own absences (scoped server-side by personId)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sub/absences/mine","host":["{{baseUrl}}"],"path":["sub","absences","mine"]},"description":"List the acting teacher's own absences (scoped server-side by personId)"}},{"name":"GET /sub/absences/{id} — Get a staff absence","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sub/absences/{id}","host":["{{baseUrl}}"],"path":["sub","absences","{id}"]},"description":"Get a staff absence"}},{"name":"POST /sub/absences/report-mine — Report the acting teacher's own absence (scoped server-side by personId)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sub/absences/report-mine","host":["{{baseUrl}}"],"path":["sub","absences","report-mine"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Report the acting teacher's own absence (scoped server-side by personId)"}},{"name":"POST /sub/absences/{id}/approve — Approve a reported absence (emits StaffAbsenceApproved)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sub/absences/{id}/approve","host":["{{baseUrl}}"],"path":["sub","absences","{id}","approve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve a reported absence (emits StaffAbsenceApproved)"}},{"name":"POST /sub/absences/{id}/deny — Deny a reported absence (emits StaffAbsenceDenied)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sub/absences/{id}/deny","host":["{{baseUrl}}"],"path":["sub","absences","{id}","deny"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Deny a reported absence (emits StaffAbsenceDenied)"}},{"name":"POST /sub/absences/{id}/cancel — Cancel a reported absence (emits StaffAbsenceCancelled + SubJobCancelled per open job)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sub/absences/{id}/cancel","host":["{{baseUrl}}"],"path":["sub","absences","{id}","cancel"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Cancel a reported absence (emits StaffAbsenceCancelled + SubJobCancelled per open job)"}},{"name":"GET /sub/jobs — List sub jobs","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sub/jobs","host":["{{baseUrl}}"],"path":["sub","jobs"]},"description":"List sub jobs"}},{"name":"POST /sub/jobs — Post a sub job against an approved absence (emits SubJobPosted)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sub/jobs","host":["{{baseUrl}}"],"path":["sub","jobs"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Post a sub job against an approved absence (emits SubJobPosted)"}},{"name":"GET /sub/jobs/{id} — Get a sub job with offers + assignment + absence","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sub/jobs/{id}","host":["{{baseUrl}}"],"path":["sub","jobs","{id}"]},"description":"Get a sub job with offers + assignment + absence"}},{"name":"POST /sub/jobs/{id}/offer — Offer a sub job to a specific substitute (emits SubJobOffered)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sub/jobs/{id}/offer","host":["{{baseUrl}}"],"path":["sub","jobs","{id}","offer"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Offer a sub job to a specific substitute (emits SubJobOffered)"}},{"name":"POST /sub/jobs/{id}/assign — Manually assign a sub to a job (emits SubJobFilled; rescinds pending offers)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sub/jobs/{id}/assign","host":["{{baseUrl}}"],"path":["sub","jobs","{id}","assign"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Manually assign a sub to a job (emits SubJobFilled; rescinds pending offers)"}},{"name":"POST /sub/jobs/{id}/cancel — Cancel a sub job (emits SubJobCancelled; rescinds pending offers)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sub/jobs/{id}/cancel","host":["{{baseUrl}}"],"path":["sub","jobs","{id}","cancel"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Cancel a sub job (emits SubJobCancelled; rescinds pending offers)"}},{"name":"POST /sub/jobs/{id}/complete — Close out a filled job with clock-in/out (emits SubJobCompleted)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sub/jobs/{id}/complete","host":["{{baseUrl}}"],"path":["sub","jobs","{id}","complete"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Close out a filled job with clock-in/out (emits SubJobCompleted)"}},{"name":"POST /sub/jobs/{id}/auto-match — Rank substitute pool against a job (emits SubJobAutoMatched; optionally sends offers)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/sub/jobs/{id}/auto-match","host":["{{baseUrl}}"],"path":["sub","jobs","{id}","auto-match"]},"description":"Scores all active substitutes against availability, school preference, certifications, and recent load. Returns ranked candidates. When sendOffers=true, dispatches offers to the top sendTopN candidates automatically. Offer dispatch is idempotent — safe to run multiple times."}},{"name":"GET /sub/reports/summary — District-wide sub-pool KPIs (fill rate, time-to-fill, unfilled mustFill)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sub/reports/summary","host":["{{baseUrl}}"],"path":["sub","reports","summary"]},"description":"District-wide sub-pool KPIs (fill rate, time-to-fill, unfilled mustFill)"}},{"name":"GET /sub/portal/my-board — List the acting substitute's open offers, accepted assignments, and general job board","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/sub/portal/my-board","host":["{{baseUrl}}"],"path":["sub","portal","my-board"]},"description":"List the acting substitute's open offers, accepted assignments, and general job board"}},{"name":"POST /sub/portal/offers/{id}/accept — Accept a pending offer (emits SubJobOfferAccepted + SubJobFilled)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/sub/portal/offers/{id}/accept","host":["{{baseUrl}}"],"path":["sub","portal","offers","{id}","accept"]},"description":"Accept a pending offer (emits SubJobOfferAccepted + SubJobFilled)"}},{"name":"POST /sub/portal/offers/{id}/decline — Decline a pending offer (emits SubJobOfferDeclined)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/sub/portal/offers/{id}/decline","host":["{{baseUrl}}"],"path":["sub","portal","offers","{id}","decline"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Decline a pending offer (emits SubJobOfferDeclined)"}}]},{"name":"Certifications","item":[{"name":"GET /certs — List teacher certifications","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/certs","host":["{{baseUrl}}"],"path":["certs"]},"description":"List teacher certifications"}},{"name":"POST /certs — Record a certification (emits TeacherCertificationCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/certs","host":["{{baseUrl}}"],"path":["certs"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a certification (emits TeacherCertificationCreated)"}},{"name":"GET /certs/{id} — Get a single certification","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/certs/{id}","host":["{{baseUrl}}"],"path":["certs","{id}"]},"description":"Get a single certification"}},{"name":"PATCH /certs/{id} — Update a certification (emits TeacherCertificationUpdated)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/certs/{id}","host":["{{baseUrl}}"],"path":["certs","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a certification (emits TeacherCertificationUpdated)"}},{"name":"POST /certs/{id}/revoke — Mark a certification revoked (emits TeacherCertificationRevoked)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/certs/{id}/revoke","host":["{{baseUrl}}"],"path":["certs","{id}","revoke"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark a certification revoked (emits TeacherCertificationRevoked)"}},{"name":"POST /certs/sweep-expirations — Sweep expired certs (manual trigger — normally runs on schedule). Emits TeacherCertificationExpired per flipped row.","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/certs/sweep-expirations","host":["{{baseUrl}}"],"path":["certs","sweep-expirations"]},"description":"Sweep expired certs (manual trigger — normally runs on schedule). Emits TeacherCertificationExpired per flipped row."}},{"name":"GET /certs/assignment-check — Check whether a person holds the certs required for a given role/subject/grade assignment","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/certs/assignment-check","host":["{{baseUrl}}"],"path":["certs","assignment-check"]},"description":"Check whether a person holds the certs required for a given role/subject/grade assignment"}},{"name":"GET /certs/requirements — List certification requirement rules","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/certs/requirements","host":["{{baseUrl}}"],"path":["certs","requirements"]},"description":"List certification requirement rules"}},{"name":"POST /certs/requirements — Add a cert requirement rule (emits CertificationRequirementCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/certs/requirements","host":["{{baseUrl}}"],"path":["certs","requirements"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a cert requirement rule (emits CertificationRequirementCreated)"}},{"name":"PATCH /certs/requirements/{id} — Update a cert requirement rule (emits CertificationRequirementUpdated)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/certs/requirements/{id}","host":["{{baseUrl}}"],"path":["certs","requirements","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a cert requirement rule (emits CertificationRequirementUpdated)"}},{"name":"POST /certs/requirements/{id}/deactivate — Deactivate a cert requirement rule (emits CertificationRequirementDeactivated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/certs/requirements/{id}/deactivate","host":["{{baseUrl}}"],"path":["certs","requirements","{id}","deactivate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Deactivate a cert requirement rule (emits CertificationRequirementDeactivated)"}},{"name":"GET /certifications/mine — The signed-in person’s own certifications","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/certifications/mine","host":["{{baseUrl}}"],"path":["certifications","mine"]},"description":"Scoped to the caller. Needs only a session — not cert.read, and not the HR module."}}]},{"name":"HR","item":[{"name":"GET /hr/employees — List employees","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/employees","host":["{{baseUrl}}"],"path":["hr","employees"]},"description":"List employees"}},{"name":"GET /hr/employees/{personId} — One employee file: person, employment, assignments, contracts, contacts, history; salary and documents by permission","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}","host":["{{baseUrl}}"],"path":["hr","employees","{personId}"]},"description":"One employee file: person, employment, assignments, contracts, contacts, history; salary and documents by permission"}},{"name":"PATCH /hr/employees/{personId} — Update the person and employment fields on an employee file","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}","host":["{{baseUrl}}"],"path":["hr","employees","{personId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update the person and employment fields on an employee file"}},{"name":"POST /hr/employees/{personId}/contracts — Add a contract. board.approved=false files it for the next meeting instead of applying it","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/contracts","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","contracts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a contract. board.approved=false files it for the next meeting instead of applying it"}},{"name":"POST /hr/employees/{personId}/separation — Record a resignation, retirement or termination; ends the contract and pay. board.approved=false files it instead","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/separation","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","separation"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a resignation, retirement or termination; ends the contract and pay. board.approved=false files it instead"}},{"name":"PATCH /hr/contracts/{id} — Correct a contract","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/contracts/{id}","host":["{{baseUrl}}"],"path":["hr","contracts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Correct a contract"}},{"name":"POST /hr/employees/{personId}/contacts — Add an emergency contact","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/contacts","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","contacts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an emergency contact"}},{"name":"PATCH /hr/contacts/{id} — Update an emergency contact","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/contacts/{id}","host":["{{baseUrl}}"],"path":["hr","contacts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update an emergency contact"}},{"name":"DELETE /hr/contacts/{id} — Remove an emergency contact","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/hr/contacts/{id}","host":["{{baseUrl}}"],"path":["hr","contacts","{id}"]},"description":"Remove an emergency contact"}},{"name":"POST /hr/employees/{personId}/notes — Add a dated note to the employee history","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/notes","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","notes"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a dated note to the employee history"}},{"name":"GET /hr/salary-guides — List salary guides","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/salary-guides","host":["{{baseUrl}}"],"path":["hr","salary-guides"]},"description":"List salary guides"}},{"name":"POST /hr/salary-guides — Create a salary guide (lanes and steps; amounts come next)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/salary-guides","host":["{{baseUrl}}"],"path":["hr","salary-guides"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a salary guide (lanes and steps; amounts come next)"}},{"name":"GET /hr/salary-guides/{id} — A salary guide with its rate grid","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/salary-guides/{id}","host":["{{baseUrl}}"],"path":["hr","salary-guides","{id}"]},"description":"A salary guide with its rate grid"}},{"name":"PATCH /hr/salary-guides/{id} — Rename, restructure or adopt a guide","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/salary-guides/{id}","host":["{{baseUrl}}"],"path":["hr","salary-guides","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rename, restructure or adopt a guide"}},{"name":"PUT /hr/salary-guides/{id}/rates — Set the whole rate grid; cells not sent are removed","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/salary-guides/{id}/rates","host":["{{baseUrl}}"],"path":["hr","salary-guides","{id}","rates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set the whole rate grid; cells not sent are removed"}},{"name":"POST /hr/salary-guides/{id}/rates/import — Load the grid from CSV: first column is the step, remaining headers are lanes, cells are dollars","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/salary-guides/{id}/rates/import","host":["{{baseUrl}}"],"path":["hr","salary-guides","{id}","rates","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Load the grid from CSV: first column is the step, remaining headers are lanes, cells are dollars"}},{"name":"POST /hr/salary-guides/{id}/advance/preview — Preview moving everyone on this guide one step onto the target guide","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/salary-guides/{id}/advance/preview","host":["{{baseUrl}}"],"path":["hr","salary-guides","{id}","advance","preview"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Preview moving everyone on this guide one step onto the target guide"}},{"name":"POST /hr/salary-guides/{id}/advance/apply — Apply the step advance: one new placement per movable person","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/salary-guides/{id}/advance/apply","host":["{{baseUrl}}"],"path":["hr","salary-guides","{id}","advance","apply"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Apply the step advance: one new placement per movable person"}},{"name":"POST /hr/employees/{personId}/placements — Place an employee on a guide (or an off-guide salary). board.approved=false files it for the next meeting instead","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/placements","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","placements"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Place an employee on a guide (or an off-guide salary). board.approved=false files it for the next meeting instead"}},{"name":"PATCH /hr/placements/{id} — Correct a placement (amounts are recomputed)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/placements/{id}","host":["{{baseUrl}}"],"path":["hr","placements","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Correct a placement (amounts are recomputed)"}},{"name":"DELETE /hr/placements/{id} — Remove a placement that has not started yet","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/hr/placements/{id}","host":["{{baseUrl}}"],"path":["hr","placements","{id}"]},"description":"Remove a placement that has not started yet"}},{"name":"GET /hr/payroll-export — CSV of active employees and their pay; with ?since= only those changed since that date","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/payroll-export","host":["{{baseUrl}}"],"path":["hr","payroll-export"]},"description":"CSV of active employees and their pay; with ?since= only those changed since that date"}},{"name":"GET /hr/employees/{personId}/documents — Files in the personnel folder","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/documents","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","documents"]},"description":"Files in the personnel folder"}},{"name":"POST /hr/employees/{personId}/documents — Add a file to the personnel folder","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/documents","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","documents"]},"description":"Add a file to the personnel folder"}},{"name":"GET /hr/documents/{id}/download — Download a personnel file","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/documents/{id}/download","host":["{{baseUrl}}"],"path":["hr","documents","{id}","download"]},"description":"Download a personnel file"}},{"name":"GET /hr/documents/{id}/view — View a personnel file in the browser","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/documents/{id}/view","host":["{{baseUrl}}"],"path":["hr","documents","{id}","view"]},"description":"View a personnel file in the browser"}},{"name":"DELETE /hr/documents/{id} — Remove a personnel file","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/hr/documents/{id}","host":["{{baseUrl}}"],"path":["hr","documents","{id}"]},"description":"Remove a personnel file"}},{"name":"GET /hr/actions — Personnel actions by status","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/actions","host":["{{baseUrl}}"],"path":["hr","actions"]},"description":"Personnel actions by status"}},{"name":"POST /hr/actions/{id}/withdraw — Withdraw an action before the vote","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/actions/{id}/withdraw","host":["{{baseUrl}}"],"path":["hr","actions","{id}","withdraw"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Withdraw an action before the vote"}},{"name":"POST /hr/resolutions — Put pending actions on a board meeting as one personnel resolution","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/resolutions","host":["{{baseUrl}}"],"path":["hr","resolutions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Put pending actions on a board meeting as one personnel resolution"}},{"name":"GET /hr/resolutions/{id} — A personnel resolution and its actions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/resolutions/{id}","host":["{{baseUrl}}"],"path":["hr","resolutions","{id}"]},"description":"A personnel resolution and its actions"}},{"name":"POST /hr/resolutions/{id}/decide — Record the vote; approved actions are applied to the employee files","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/resolutions/{id}/decide","host":["{{baseUrl}}"],"path":["hr","resolutions","{id}","decide"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record the vote; approved actions are applied to the employee files"}},{"name":"GET /hr/postings — Job postings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/postings","host":["{{baseUrl}}"],"path":["hr","postings"]},"description":"Job postings"}},{"name":"POST /hr/postings — Create a posting (as a draft unless postedOn is given)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/postings","host":["{{baseUrl}}"],"path":["hr","postings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a posting (as a draft unless postedOn is given)"}},{"name":"GET /hr/postings/{id} — A posting with its applicants","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/postings/{id}","host":["{{baseUrl}}"],"path":["hr","postings","{id}"]},"description":"A posting with its applicants"}},{"name":"PATCH /hr/postings/{id} — Edit a posting or change its status","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/postings/{id}","host":["{{baseUrl}}"],"path":["hr","postings","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a posting or change its status"}},{"name":"POST /hr/postings/{id}/applicants — Add an applicant","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/postings/{id}/applicants","host":["{{baseUrl}}"],"path":["hr","postings","{id}","applicants"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an applicant"}},{"name":"PATCH /hr/applicants/{id} — Move an applicant along, add an interview, or close them out","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/applicants/{id}","host":["{{baseUrl}}"],"path":["hr","applicants","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move an applicant along, add an interview, or close them out"}},{"name":"POST /hr/applicants/{id}/recommend — Recommend for hire: the offer goes to the board (or applies now when already approved)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/applicants/{id}/recommend","host":["{{baseUrl}}"],"path":["hr","applicants","{id}","recommend"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Recommend for hire: the offer goes to the board (or applies now when already approved)"}},{"name":"POST /hr/hires — Hire without a posting: person details plus the offer; board switch as elsewhere","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/hires","host":["{{baseUrl}}"],"path":["hr","hires"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Hire without a posting: person details plus the offer; board switch as elsewhere"}},{"name":"GET /hr/onboarding/template — The onboarding checklist template","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/onboarding/template","host":["{{baseUrl}}"],"path":["hr","onboarding","template"]},"description":"The onboarding checklist template"}},{"name":"GET /hr/onboarding — Everyone with an open onboarding item","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/onboarding","host":["{{baseUrl}}"],"path":["hr","onboarding"]},"description":"Everyone with an open onboarding item"}},{"name":"GET /hr/employees/{personId}/onboarding — One person’s checklist","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/onboarding","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","onboarding"]},"description":"One person’s checklist"}},{"name":"POST /hr/employees/{personId}/onboarding — Start the checklist for a person","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/onboarding","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","onboarding"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start the checklist for a person"}},{"name":"POST /hr/employees/{personId}/onboarding/tasks — Add a one-off task to a person’s checklist","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/onboarding/tasks","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","onboarding","tasks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a one-off task to a person’s checklist"}},{"name":"PATCH /hr/onboarding/tasks/{id} — Complete, reopen, waive or annotate a task","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/onboarding/tasks/{id}","host":["{{baseUrl}}"],"path":["hr","onboarding","tasks","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Complete, reopen, waive or annotate a task"}},{"name":"GET /hr/leave/policies — Leave policies by bargaining unit","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/leave/policies","host":["{{baseUrl}}"],"path":["hr","leave","policies"]},"description":"Leave policies by bargaining unit"}},{"name":"PUT /hr/leave/policies — Create or update policies (matched on unit + type)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/leave/policies","host":["{{baseUrl}}"],"path":["hr","leave","policies"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create or update policies (matched on unit + type)"}},{"name":"POST /hr/leave/policies/defaults — Load a New Jersey starting set for the default unit (*); existing rows are kept","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/hr/leave/policies/defaults","host":["{{baseUrl}}"],"path":["hr","leave","policies","defaults"]},"description":"Load a New Jersey starting set for the default unit (*); existing rows are kept"}},{"name":"DELETE /hr/leave/policies/{id} — Remove a policy","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/hr/leave/policies/{id}","host":["{{baseUrl}}"],"path":["hr","leave","policies","{id}"]},"description":"Remove a policy"}},{"name":"GET /hr/leave/balances — Balances for everyone, one row per person","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/leave/balances","host":["{{baseUrl}}"],"path":["hr","leave","balances"]},"description":"Balances for everyone, one row per person"}},{"name":"POST /hr/leave/open-year — Grant the year’s days to every active employee (safe to rerun)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/leave/open-year","host":["{{baseUrl}}"],"path":["hr","leave","open-year"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Grant the year’s days to every active employee (safe to rerun)"}},{"name":"POST /hr/leave/accrue — Post monthly accruals through a date","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/leave/accrue","host":["{{baseUrl}}"],"path":["hr","leave","accrue"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Post monthly accruals through a date"}},{"name":"POST /hr/leave/backfill — Post uses for absences approved before leave tracking existed","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/hr/leave/backfill","host":["{{baseUrl}}"],"path":["hr","leave","backfill"]},"description":"Post uses for absences approved before leave tracking existed"}},{"name":"GET /hr/employees/{personId}/leave — Balances, transactions, leaves of absence and FMLA/NJFLA use for one person","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/leave","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","leave"]},"description":"Balances, transactions, leaves of absence and FMLA/NJFLA use for one person"}},{"name":"POST /hr/employees/{personId}/leave/adjust — Add or remove days with a reason (opening balance, correction, payout)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/leave/adjust","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","leave","adjust"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add or remove days with a reason (opening balance, correction, payout)"}},{"name":"GET /hr/leaves — Leaves of absence","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/leaves","host":["{{baseUrl}}"],"path":["hr","leaves"]},"description":"Leaves of absence"}},{"name":"POST /hr/employees/{personId}/leaves — Record a leave of absence; board.approved=false files it for the next meeting","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/leaves","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","leaves"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a leave of absence; board.approved=false files it for the next meeting"}},{"name":"PATCH /hr/leaves/{id} — Update a leave: dates, return, end it, withdraw it","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/leaves/{id}","host":["{{baseUrl}}"],"path":["hr","leaves","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a leave: dates, return, end it, withdraw it"}},{"name":"GET /hr/equipment/summary — Equipment and offboarding figures","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/equipment/summary","host":["{{baseUrl}}"],"path":["hr","equipment","summary"]},"description":"Equipment and offboarding figures"}},{"name":"GET /hr/equipment/available — Inventory that can be issued (active, unassigned)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/equipment/available","host":["{{baseUrl}}"],"path":["hr","equipment","available"]},"description":"Inventory that can be issued (active, unassigned)"}},{"name":"GET /hr/equipment/issued — Everything issued and still out","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/equipment/issued","host":["{{baseUrl}}"],"path":["hr","equipment","issued"]},"description":"Everything issued and still out"}},{"name":"GET /hr/equipment/onboarding — New hires and where their equipment stands","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/equipment/onboarding","host":["{{baseUrl}}"],"path":["hr","equipment","onboarding"]},"description":"New hires and where their equipment stands"}},{"name":"GET /hr/employees/{personId}/equipment — What a person holds, what they returned, and their offboarding file","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/equipment","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","equipment"]},"description":"What a person holds, what they returned, and their offboarding file"}},{"name":"POST /hr/employees/{personId}/equipment — Issue an item to an employee (existing asset or a new one)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/equipment","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","equipment"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Issue an item to an employee (existing asset or a new one)"}},{"name":"POST /hr/equipment/issues/{id}/acknowledge — Record the employee signing for an item","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/equipment/issues/{id}/acknowledge","host":["{{baseUrl}}"],"path":["hr","equipment","issues","{id}","acknowledge"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record the employee signing for an item"}},{"name":"POST /hr/equipment/issues/{id}/return — An item comes back while the person is still employed","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/equipment/issues/{id}/return","host":["{{baseUrl}}"],"path":["hr","equipment","issues","{id}","return"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"An item comes back while the person is still employed"}},{"name":"POST /hr/employees/{personId}/onboarding/accounts-request — Ask the technology team to create a new hire’s accounts","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/onboarding/accounts-request","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","onboarding","accounts-request"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask the technology team to create a new hire’s accounts"}},{"name":"GET /hr/offboarding — Offboarding files","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/offboarding","host":["{{baseUrl}}"],"path":["hr","offboarding"]},"description":"Offboarding files"}},{"name":"POST /hr/employees/{personId}/offboarding — Open an offboarding file by hand (for a separation recorded before this existed)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/employees/{personId}/offboarding","host":["{{baseUrl}}"],"path":["hr","employees","{personId}","offboarding"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Open an offboarding file by hand (for a separation recorded before this existed)"}},{"name":"GET /hr/offboarding/{id} — One offboarding file","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/offboarding/{id}","host":["{{baseUrl}}"],"path":["hr","offboarding","{id}"]},"description":"One offboarding file"}},{"name":"PATCH /hr/offboarding/{id} — Notes on an offboarding file","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/offboarding/{id}","host":["{{baseUrl}}"],"path":["hr","offboarding","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Notes on an offboarding file"}},{"name":"POST /hr/offboarding/{id}/tasks — Add a task to an offboarding file","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/offboarding/{id}/tasks","host":["{{baseUrl}}"],"path":["hr","offboarding","{id}","tasks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a task to an offboarding file"}},{"name":"POST /hr/offboarding/{id}/clear — Mark the file cleared and closed (every task must be closed)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/offboarding/{id}/clear","host":["{{baseUrl}}"],"path":["hr","offboarding","{id}","clear"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark the file cleared and closed (every task must be closed)"}},{"name":"POST /hr/offboarding/{id}/reopen — Reopen a cleared file","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/offboarding/{id}/reopen","host":["{{baseUrl}}"],"path":["hr","offboarding","{id}","reopen"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reopen a cleared file"}},{"name":"POST /hr/offboarding/tasks/{id}/complete — Mark a task done","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/offboarding/tasks/{id}/complete","host":["{{baseUrl}}"],"path":["hr","offboarding","tasks","{id}","complete"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark a task done"}},{"name":"POST /hr/offboarding/tasks/{id}/waive — Waive a task, with the reason","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/offboarding/tasks/{id}/waive","host":["{{baseUrl}}"],"path":["hr","offboarding","tasks","{id}","waive"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Waive a task, with the reason"}},{"name":"POST /hr/offboarding/tasks/{id}/return — Equipment returned: condition, who received it, when","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/offboarding/tasks/{id}/return","host":["{{baseUrl}}"],"path":["hr","offboarding","tasks","{id}","return"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Equipment returned: condition, who received it, when"}},{"name":"POST /hr/offboarding/tasks/{id}/write-off — Write an item off, with the reason and approver","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/offboarding/tasks/{id}/write-off","host":["{{baseUrl}}"],"path":["hr","offboarding","tasks","{id}","write-off"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Write an item off, with the reason and approver"}},{"name":"POST /hr/offboarding/tasks/{id}/charge — Charge the former employee for an unreturned item (never deducted from pay)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/offboarding/tasks/{id}/charge","host":["{{baseUrl}}"],"path":["hr","offboarding","tasks","{id}","charge"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Charge the former employee for an unreturned item (never deducted from pay)"}},{"name":"POST /hr/offboarding/tasks/{id}/settle — Record payment of a charge","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/offboarding/tasks/{id}/settle","host":["{{baseUrl}}"],"path":["hr","offboarding","tasks","{id}","settle"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record payment of a charge"}},{"name":"POST /hr/offboarding/tasks/{id}/reopen — Reopen a closed task","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/hr/offboarding/tasks/{id}/reopen","host":["{{baseUrl}}"],"path":["hr","offboarding","tasks","{id}","reopen"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reopen a closed task"}},{"name":"GET /hr/offboarding/tasks/{id}/charge-document — The repayment agreement or invoice for a charge, for printing","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/hr/offboarding/tasks/{id}/charge-document","host":["{{baseUrl}}"],"path":["hr","offboarding","tasks","{id}","charge-document"]},"description":"The repayment agreement or invoice for a charge, for printing"}}]},{"name":"Facilities","item":[{"name":"GET /facilities/settings — Get the district facilities settings (SLAs, ticket format, depreciation defaults)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facilities/settings","host":["{{baseUrl}}"],"path":["facilities","settings"]},"description":"Get the district facilities settings (SLAs, ticket format, depreciation defaults)"}},{"name":"PATCH /facilities/settings — Update the district facilities settings (emits FacilitiesSettingsUpdated)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/facilities/settings","host":["{{baseUrl}}"],"path":["facilities","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update the district facilities settings (emits FacilitiesSettingsUpdated)"}},{"name":"GET /work-orders — List work orders (board view)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/work-orders","host":["{{baseUrl}}"],"path":["work-orders"]},"description":"List work orders (board view)"}},{"name":"POST /work-orders — Open a work order (emits WorkOrderOpened)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/work-orders","host":["{{baseUrl}}"],"path":["work-orders"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Open a work order (emits WorkOrderOpened)"}},{"name":"GET /work-orders/{id} — Get a work order with its full event thread","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/work-orders/{id}","host":["{{baseUrl}}"],"path":["work-orders","{id}"]},"description":"Get a work order with its full event thread"}},{"name":"PATCH /work-orders/{id} — Edit a work order (title / description / category / priority / room / SLA)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/work-orders/{id}","host":["{{baseUrl}}"],"path":["work-orders","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a work order (title / description / category / priority / room / SLA)"}},{"name":"POST /work-orders/{id}/assign — Assign or reassign the ticket (emits WorkOrderAssigned)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/work-orders/{id}/assign","host":["{{baseUrl}}"],"path":["work-orders","{id}","assign"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assign or reassign the ticket (emits WorkOrderAssigned)"}},{"name":"POST /work-orders/{id}/status — Transition ticket status (emits WorkOrderStatusChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/work-orders/{id}/status","host":["{{baseUrl}}"],"path":["work-orders","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Transition ticket status (emits WorkOrderStatusChanged)"}},{"name":"POST /work-orders/{id}/comments — Comment on a work-order thread (emits WorkOrderCommented)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/work-orders/{id}/comments","host":["{{baseUrl}}"],"path":["work-orders","{id}","comments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Comment on a work-order thread (emits WorkOrderCommented)"}},{"name":"POST /work-orders/{id}/resolve — Resolve a work order (emits WorkOrderResolved)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/work-orders/{id}/resolve","host":["{{baseUrl}}"],"path":["work-orders","{id}","resolve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Resolve a work order (emits WorkOrderResolved)"}},{"name":"POST /work-orders/{id}/cancel — Cancel a work order (emits WorkOrderCancelled)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/work-orders/{id}/cancel","host":["{{baseUrl}}"],"path":["work-orders","{id}","cancel"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Cancel a work order (emits WorkOrderCancelled)"}},{"name":"GET /assets — List assets","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/assets","host":["{{baseUrl}}"],"path":["assets"]},"description":"List assets"}},{"name":"POST /assets — Register a new asset (emits AssetRegistered)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/assets","host":["{{baseUrl}}"],"path":["assets"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Register a new asset (emits AssetRegistered)"}},{"name":"GET /assets/reports/depreciation — Roll-up of book value by asset category","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/assets/reports/depreciation","host":["{{baseUrl}}"],"path":["assets","reports","depreciation"]},"description":"Roll-up of book value by asset category"}},{"name":"GET /assets/{id} — Get an asset with its adjustment history","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/assets/{id}","host":["{{baseUrl}}"],"path":["assets","{id}"]},"description":"Get an asset with its adjustment history"}},{"name":"PATCH /assets/{id} — Edit an asset","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/assets/{id}","host":["{{baseUrl}}"],"path":["assets","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an asset"}},{"name":"POST /assets/{id}/move — Move an asset between rooms (emits AssetMoved)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/assets/{id}/move","host":["{{baseUrl}}"],"path":["assets","{id}","move"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move an asset between rooms (emits AssetMoved)"}},{"name":"POST /assets/{id}/assign — Assign / unassign custody of an asset (emits AssetAssigned)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/assets/{id}/assign","host":["{{baseUrl}}"],"path":["assets","{id}","assign"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assign / unassign custody of an asset (emits AssetAssigned)"}},{"name":"POST /assets/{id}/status — Change asset status (emits AssetStatusChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/assets/{id}/status","host":["{{baseUrl}}"],"path":["assets","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change asset status (emits AssetStatusChanged)"}},{"name":"POST /assets/{id}/revalue — Apply a valuation adjustment (write-down, revaluation, etc.)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/assets/{id}/revalue","host":["{{baseUrl}}"],"path":["assets","{id}","revalue"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Apply a valuation adjustment (write-down, revaluation, etc.)"}},{"name":"POST /assets/{id}/retire — Retire an asset (soft-delete, emits AssetRetired)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/assets/{id}/retire","host":["{{baseUrl}}"],"path":["assets","{id}","retire"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Retire an asset (soft-delete, emits AssetRetired)"}},{"name":"GET /buildings/sites — Buildings a facilities user can pick between, with the work waiting at each","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/buildings/sites","host":["{{baseUrl}}"],"path":["buildings","sites"]},"description":"Buildings a facilities user can pick between, with the work waiting at each"}},{"name":"GET /buildings — List buildings (room + open work-order roll-ups)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/buildings","host":["{{baseUrl}}"],"path":["buildings"]},"description":"List buildings (room + open work-order roll-ups)"}},{"name":"POST /buildings — Create a building (emits BuildingCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/buildings","host":["{{baseUrl}}"],"path":["buildings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a building (emits BuildingCreated)"}},{"name":"GET /buildings/{id} — Get a building with its rooms","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/buildings/{id}","host":["{{baseUrl}}"],"path":["buildings","{id}"]},"description":"Get a building with its rooms"}},{"name":"PATCH /buildings/{id} — Edit a building (emits BuildingUpdated when fields change)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/buildings/{id}","host":["{{baseUrl}}"],"path":["buildings","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a building (emits BuildingUpdated when fields change)"}},{"name":"POST /buildings/{id}/retire — Retire a building (soft-delete; ?force=true detaches linked rooms)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/buildings/{id}/retire","host":["{{baseUrl}}"],"path":["buildings","{id}","retire"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Retire a building (soft-delete; ?force=true detaches linked rooms)"}},{"name":"GET /buildings/{buildingId}/documents — List the files held for a building","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/buildings/{buildingId}/documents","host":["{{baseUrl}}"],"path":["buildings","{buildingId}","documents"]},"description":"List the files held for a building"}},{"name":"POST /buildings/{buildingId}/documents — Attach a file to a building","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/buildings/{buildingId}/documents","host":["{{baseUrl}}"],"path":["buildings","{buildingId}","documents"]},"description":"Attach a file to a building"}},{"name":"GET /buildings/documents/{id}/download — Download a building file","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/buildings/documents/{id}/download","host":["{{baseUrl}}"],"path":["buildings","documents","{id}","download"]},"description":"Download a building file"}},{"name":"GET /buildings/documents/{id}/view — View a building file in the browser","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/buildings/documents/{id}/view","host":["{{baseUrl}}"],"path":["buildings","documents","{id}","view"]},"description":"View a building file in the browser"}},{"name":"DELETE /buildings/documents/{id} — Remove a building file","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/buildings/documents/{id}","host":["{{baseUrl}}"],"path":["buildings","documents","{id}"]},"description":"Remove a building file"}},{"name":"GET /facility-assignments/assignees — Staff who can be assigned work orders and maintenance","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facility-assignments/assignees","host":["{{baseUrl}}"],"path":["facility-assignments","assignees"]},"description":"Staff who can be assigned work orders and maintenance"}},{"name":"GET /facility-assignments/user-search — Find district users to assign to buildings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facility-assignments/user-search","host":["{{baseUrl}}"],"path":["facility-assignments","user-search"]},"description":"Find district users to assign to buildings"}},{"name":"GET /facility-assignments — List facility assignments","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facility-assignments","host":["{{baseUrl}}"],"path":["facility-assignments"]},"description":"List facility assignments"}},{"name":"POST /facility-assignments — Assign a person to buildings (also grants the Facilities module)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/facility-assignments","host":["{{baseUrl}}"],"path":["facility-assignments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assign a person to buildings (also grants the Facilities module)"}},{"name":"GET /facility-assignments/personnel — Roster of everyone with facilities access and the buildings they cover","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facility-assignments/personnel","host":["{{baseUrl}}"],"path":["facility-assignments","personnel"]},"description":"Roster of everyone with facilities access and the buildings they cover"}},{"name":"GET /facility-assignments/my-scope — The caller's own building scope","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facility-assignments/my-scope","host":["{{baseUrl}}"],"path":["facility-assignments","my-scope"]},"description":"The caller's own building scope"}},{"name":"GET /facility-assignments/{id} — Get one facility assignment","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facility-assignments/{id}","host":["{{baseUrl}}"],"path":["facility-assignments","{id}"]},"description":"Get one facility assignment"}},{"name":"PATCH /facility-assignments/{id}/role — Change the level someone holds at one building","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/facility-assignments/{id}/role","host":["{{baseUrl}}"],"path":["facility-assignments","{id}","role"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change the level someone holds at one building"}},{"name":"POST /facility-assignments/{id}/revoke — Revoke one facility assignment","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/facility-assignments/{id}/revoke","host":["{{baseUrl}}"],"path":["facility-assignments","{id}","revoke"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Revoke one facility assignment"}},{"name":"POST /facility-assignments/users/{userId}/revoke-all — Revoke a person's entire facilities access","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/facility-assignments/users/{userId}/revoke-all","host":["{{baseUrl}}"],"path":["facility-assignments","users","{userId}","revoke-all"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Revoke a person's entire facilities access"}},{"name":"GET /inspection-templates — List inspection templates","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/inspection-templates","host":["{{baseUrl}}"],"path":["inspection-templates"]},"description":"List inspection templates"}},{"name":"POST /inspection-templates — Create an inspection template (emits InspectionTemplateCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/inspection-templates","host":["{{baseUrl}}"],"path":["inspection-templates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an inspection template (emits InspectionTemplateCreated)"}},{"name":"GET /inspection-templates/{id} — Get an inspection template with its checklist","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/inspection-templates/{id}","host":["{{baseUrl}}"],"path":["inspection-templates","{id}"]},"description":"Get an inspection template with its checklist"}},{"name":"PATCH /inspection-templates/{id} — Edit a template; sending `items` replaces the whole checklist","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/inspection-templates/{id}","host":["{{baseUrl}}"],"path":["inspection-templates","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a template; sending `items` replaces the whole checklist"}},{"name":"POST /inspection-templates/{id}/retire — Retire a template (refuses while inspections against it are open)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/inspection-templates/{id}/retire","host":["{{baseUrl}}"],"path":["inspection-templates","{id}","retire"]},"description":"Retire a template (refuses while inspections against it are open)"}},{"name":"GET /inspections — List inspections (scoped to the buildings you cover)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/inspections","host":["{{baseUrl}}"],"path":["inspections"]},"description":"List inspections (scoped to the buildings you cover)"}},{"name":"POST /inspections — Schedule an inspection (emits InspectionScheduled)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/inspections","host":["{{baseUrl}}"],"path":["inspections"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Schedule an inspection (emits InspectionScheduled)"}},{"name":"GET /inspections/{id} — Get an inspection with its checklist answers","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/inspections/{id}","host":["{{baseUrl}}"],"path":["inspections","{id}"]},"description":"Get an inspection with its checklist answers"}},{"name":"PATCH /inspections/{id} — Reschedule or reassign an inspection","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/inspections/{id}","host":["{{baseUrl}}"],"path":["inspections","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reschedule or reassign an inspection"}},{"name":"POST /inspections/{id}/start — Begin working through the checklist","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/inspections/{id}/start","host":["{{baseUrl}}"],"path":["inspections","{id}","start"]},"description":"Begin working through the checklist"}},{"name":"POST /inspections/{id}/results — Record or update checklist answers","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/inspections/{id}/results","host":["{{baseUrl}}"],"path":["inspections","{id}","results"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record or update checklist answers"}},{"name":"POST /inspections/{id}/complete — Complete an inspection; failed lines spawn work orders","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/inspections/{id}/complete","host":["{{baseUrl}}"],"path":["inspections","{id}","complete"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Complete an inspection; failed lines spawn work orders"}},{"name":"POST /inspections/{id}/cancel — Cancel a scheduled inspection","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/inspections/{id}/cancel","host":["{{baseUrl}}"],"path":["inspections","{id}","cancel"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Cancel a scheduled inspection"}},{"name":"GET /inspection-certificates — List certificates and permits (use expiringWithinDays for renewals)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/inspection-certificates","host":["{{baseUrl}}"],"path":["inspection-certificates"]},"description":"List certificates and permits (use expiringWithinDays for renewals)"}},{"name":"POST /inspection-certificates — File a certificate or permit (emits InspectionCertificateRecorded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/inspection-certificates","host":["{{baseUrl}}"],"path":["inspection-certificates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"File a certificate or permit (emits InspectionCertificateRecorded)"}},{"name":"GET /inspection-certificates/{id} — Get a certificate","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/inspection-certificates/{id}","host":["{{baseUrl}}"],"path":["inspection-certificates","{id}"]},"description":"Get a certificate"}},{"name":"PATCH /inspection-certificates/{id} — Correct a filed certificate, including its expiry","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/inspection-certificates/{id}","host":["{{baseUrl}}"],"path":["inspection-certificates","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Correct a filed certificate, including its expiry"}},{"name":"POST /inspection-certificates/{id}/retire — Retire a certificate filed in error","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/inspection-certificates/{id}/retire","host":["{{baseUrl}}"],"path":["inspection-certificates","{id}","retire"]},"description":"Retire a certificate filed in error"}},{"name":"GET /checklist-workers — List the checklist roster","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/checklist-workers","host":["{{baseUrl}}"],"path":["checklist-workers"]},"description":"List the checklist roster"}},{"name":"POST /checklist-workers — Add a worker to the checklist roster (emits ChecklistWorkerRegistered)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/checklist-workers","host":["{{baseUrl}}"],"path":["checklist-workers"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a worker to the checklist roster (emits ChecklistWorkerRegistered)"}},{"name":"GET /checklist-workers/{id} — Get one checklist worker","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/checklist-workers/{id}","host":["{{baseUrl}}"],"path":["checklist-workers","{id}"]},"description":"Get one checklist worker"}},{"name":"PATCH /checklist-workers/{id} — Edit a worker, set or clear their kiosk PIN","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/checklist-workers/{id}","host":["{{baseUrl}}"],"path":["checklist-workers","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a worker, set or clear their kiosk PIN"}},{"name":"POST /checklist-workers/{id}/deactivate — Retire a worker (refuses while assignments still name them)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/checklist-workers/{id}/deactivate","host":["{{baseUrl}}"],"path":["checklist-workers","{id}","deactivate"]},"description":"Retire a worker (refuses while assignments still name them)"}},{"name":"GET /checklist-assignments — List standing checklist assignments","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/checklist-assignments","host":["{{baseUrl}}"],"path":["checklist-assignments"]},"description":"List standing checklist assignments"}},{"name":"POST /checklist-assignments — Assign a recurring checklist to a worker or a crew","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/checklist-assignments","host":["{{baseUrl}}"],"path":["checklist-assignments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Pass `buildingIds` to assign the same checklist across many schools in one action. Returns one assignment per building. Emits ChecklistAssigned for each."}},{"name":"GET /checklist-assignments/{id} — Get one standing assignment","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/checklist-assignments/{id}","host":["{{baseUrl}}"],"path":["checklist-assignments","{id}"]},"description":"Get one standing assignment"}},{"name":"PATCH /checklist-assignments/{id} — Reassign, reschedule, or pause a standing assignment","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/checklist-assignments/{id}","host":["{{baseUrl}}"],"path":["checklist-assignments","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reassign, reschedule, or pause a standing assignment"}},{"name":"POST /checklist-assignments/{id}/end — End a standing assignment; already-generated checklists are kept","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/checklist-assignments/{id}/end","host":["{{baseUrl}}"],"path":["checklist-assignments","{id}","end"]},"description":"End a standing assignment; already-generated checklists are kept"}},{"name":"GET /checklists/dashboard — Checklist compliance by person: done, late, missed, score","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/checklists/dashboard","host":["{{baseUrl}}"],"path":["checklists","dashboard"]},"description":"Checklist compliance by person: done, late, missed, score"}},{"name":"GET /checklists/menu — My checklist menu","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/checklists/menu","host":["{{baseUrl}}"],"path":["checklists","menu"]},"description":"My checklist menu"}},{"name":"GET /checklists/my-day — A worker's checklists for one service day","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/checklists/my-day","host":["{{baseUrl}}"],"path":["checklists","my-day"]},"description":"A worker's checklists for one service day"}},{"name":"GET /checklists — Checklist history, filterable by worker, building, and date","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/checklists","host":["{{baseUrl}}"],"path":["checklists"]},"description":"Checklist history, filterable by worker, building, and date"}},{"name":"GET /checklists/{id} — One checklist with every question and answer, ready to fill out","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/checklists/{id}","host":["{{baseUrl}}"],"path":["checklists","{id}"]},"description":"One checklist with every question and answer, ready to fill out"}},{"name":"POST /checklists/{id}/start — Begin a checklist; claims it when a crew owes it","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/checklists/{id}/start","host":["{{baseUrl}}"],"path":["checklists","{id}","start"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"On a crew checklist nobody has picked up, this stamps the worker who did. Pass `workerId` from a kiosk, where the signed-in account is the tablet rather than the person."}},{"name":"POST /checklists/{id}/results — Save answers as the worker goes; safe to call repeatedly","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/checklists/{id}/results","host":["{{baseUrl}}"],"path":["checklists","{id}","results"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save answers as the worker goes; safe to call repeatedly"}},{"name":"POST /checklists/{id}/submit — File the checklist; failed lines spawn work orders","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/checklists/{id}/submit","host":["{{baseUrl}}"],"path":["checklists","{id}","submit"]},"description":"File the checklist; failed lines spawn work orders"}},{"name":"GET /checklists/kiosk/workers — Crew on a shared tablet, with what each still owes today","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/checklists/kiosk/workers","host":["{{baseUrl}}"],"path":["checklists","kiosk","workers"]},"description":"Crew on a shared tablet, with what each still owes today"}},{"name":"POST /checklists/kiosk/verify-pin — Confirm which worker on a shared tablet is filing","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/checklists/kiosk/verify-pin","host":["{{baseUrl}}"],"path":["checklists","kiosk","verify-pin"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Attribution, not authentication — the tablet is already signed in as a district kiosk account. Rate limited per worker."}},{"name":"GET /checklist-teams — List crews","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/checklist-teams","host":["{{baseUrl}}"],"path":["checklist-teams"]},"description":"List crews"}},{"name":"POST /checklist-teams — Create a crew (emits ChecklistTeamCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/checklist-teams","host":["{{baseUrl}}"],"path":["checklist-teams"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a crew (emits ChecklistTeamCreated)"}},{"name":"GET /checklist-teams/{id} — Get one crew with its roster","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/checklist-teams/{id}","host":["{{baseUrl}}"],"path":["checklist-teams","{id}"]},"description":"Get one crew with its roster"}},{"name":"PATCH /checklist-teams/{id} — Rename a crew, move it, or replace its roster","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/checklist-teams/{id}","host":["{{baseUrl}}"],"path":["checklist-teams","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Sending `workerIds` replaces the whole roster."}},{"name":"POST /checklist-teams/{id}/deactivate — Retire a crew (refuses while assignments still point at it)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/checklist-teams/{id}/deactivate","host":["{{baseUrl}}"],"path":["checklist-teams","{id}","deactivate"]},"description":"Retire a crew (refuses while assignments still point at it)"}},{"name":"GET /facilities/quality-trends — Quality score trends, building rankings, declining areas, inspector analytics","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facilities/quality-trends","host":["{{baseUrl}}"],"path":["facilities","quality-trends"]},"description":"Quality score trends, building rankings, declining areas, inspector analytics"}},{"name":"POST /facilities/quality-report/send-now — Queue the weekly quality report email immediately","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/facilities/quality-report/send-now","host":["{{baseUrl}}"],"path":["facilities","quality-report","send-now"]},"description":"Queue the weekly quality report email immediately"}},{"name":"GET /work-orders/{workOrderId}/costs — List cost lines on a work order, with live totals","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/work-orders/{workOrderId}/costs","host":["{{baseUrl}}"],"path":["work-orders","{workOrderId}","costs"]},"description":"List cost lines on a work order, with live totals"}},{"name":"POST /work-orders/{workOrderId}/costs — Post a labor, parts, or contract cost against a work order","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/work-orders/{workOrderId}/costs","host":["{{baseUrl}}"],"path":["work-orders","{workOrderId}","costs"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Post a labor, parts, or contract cost against a work order"}},{"name":"POST /work-order-costs/{id}/remove — Remove a cost line (soft delete; re-syncs the ticket total)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/work-order-costs/{id}/remove","host":["{{baseUrl}}"],"path":["work-order-costs","{id}","remove"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Remove a cost line (soft delete; re-syncs the ticket total)"}},{"name":"GET /facilities/cost-summary — Cost roll-up by building, with cost per square foot","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facilities/cost-summary","host":["{{baseUrl}}"],"path":["facilities","cost-summary"]},"description":"Cost roll-up by building, with cost per square foot"}},{"name":"GET /facilities/invoices — Vendor invoices reachable through your work-order costs (read-only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facilities/invoices","host":["{{baseUrl}}"],"path":["facilities","invoices"]},"description":"Vendor invoices reachable through your work-order costs (read-only)"}},{"name":"GET /building-conditions — List condition assessments (latestPerBuilding for the current picture)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/building-conditions","host":["{{baseUrl}}"],"path":["building-conditions"]},"description":"List condition assessments (latestPerBuilding for the current picture)"}},{"name":"POST /building-conditions — File a condition assessment (emits BuildingConditionAssessed)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/building-conditions","host":["{{baseUrl}}"],"path":["building-conditions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"File a condition assessment (emits BuildingConditionAssessed)"}},{"name":"GET /building-conditions/{id} — Get a condition assessment with its Facility Condition Index","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/building-conditions/{id}","host":["{{baseUrl}}"],"path":["building-conditions","{id}"]},"description":"Get a condition assessment with its Facility Condition Index"}},{"name":"GET /capital-projects — List capital projects","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/capital-projects","host":["{{baseUrl}}"],"path":["capital-projects"]},"description":"List capital projects"}},{"name":"POST /capital-projects — Create a capital project (emits CapitalProjectCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/capital-projects","host":["{{baseUrl}}"],"path":["capital-projects"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a capital project (emits CapitalProjectCreated)"}},{"name":"GET /capital-projects/{id} — Get a capital project with its multi-year funding spread","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/capital-projects/{id}","host":["{{baseUrl}}"],"path":["capital-projects","{id}"]},"description":"Get a capital project with its multi-year funding spread"}},{"name":"PATCH /capital-projects/{id} — Edit a project; sending planYears replaces the funding spread","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/capital-projects/{id}","host":["{{baseUrl}}"],"path":["capital-projects","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a project; sending planYears replaces the funding spread"}},{"name":"POST /capital-projects/{id}/status — Move a project between proposed / approved / funded / complete","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/capital-projects/{id}/status","host":["{{baseUrl}}"],"path":["capital-projects","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move a project between proposed / approved / funded / complete"}},{"name":"GET /capital-plan — Multi-year capital plan with per-building Facility Condition Index","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/capital-plan","host":["{{baseUrl}}"],"path":["capital-plan"]},"description":"Multi-year capital plan with per-building Facility Condition Index"}},{"name":"GET /facility-review-questions — List the year-end review checklist","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facility-review-questions","host":["{{baseUrl}}"],"path":["facility-review-questions"]},"description":"List the year-end review checklist"}},{"name":"PUT /facility-review-questions — Save the year-end review checklist (emits FacilityReviewQuestionsUpdated)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/facility-review-questions","host":["{{baseUrl}}"],"path":["facility-review-questions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save the year-end review checklist (emits FacilityReviewQuestionsUpdated)"}},{"name":"POST /facility-review-questions/load-standard — Load the standard FCA questions into an empty checklist","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/facility-review-questions/load-standard","host":["{{baseUrl}}"],"path":["facility-review-questions","load-standard"]},"description":"Load the standard FCA questions into an empty checklist"}},{"name":"GET /facility-reviews — List year-end facility reviews","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facility-reviews","host":["{{baseUrl}}"],"path":["facility-reviews"]},"description":"List year-end facility reviews"}},{"name":"POST /facility-reviews — Start a year-end facility review (emits FacilityReviewStarted)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/facility-reviews","host":["{{baseUrl}}"],"path":["facility-reviews"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a year-end facility review (emits FacilityReviewStarted)"}},{"name":"GET /facility-reviews/{id} — Get a year-end facility review","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facility-reviews/{id}","host":["{{baseUrl}}"],"path":["facility-reviews","{id}"]},"description":"Get a year-end facility review"}},{"name":"PATCH /facility-reviews/{id} — Edit a draft review (emits FacilityReviewUpdated)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/facility-reviews/{id}","host":["{{baseUrl}}"],"path":["facility-reviews","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a draft review (emits FacilityReviewUpdated)"}},{"name":"DELETE /facility-reviews/{id} — Delete a draft review (emits FacilityReviewDeleted)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/facility-reviews/{id}","host":["{{baseUrl}}"],"path":["facility-reviews","{id}"]},"description":"Delete a draft review (emits FacilityReviewDeleted)"}},{"name":"POST /facility-reviews/{id}/sync-questions — Bring a draft review in line with the current checklist (emits FacilityReviewUpdated)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/facility-reviews/{id}/sync-questions","host":["{{baseUrl}}"],"path":["facility-reviews","{id}","sync-questions"]},"description":"Bring a draft review in line with the current checklist (emits FacilityReviewUpdated)"}},{"name":"POST /facility-reviews/{id}/publish — Publish a review for public viewing (emits FacilityReviewPublished)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/facility-reviews/{id}/publish","host":["{{baseUrl}}"],"path":["facility-reviews","{id}","publish"]},"description":"Publish a review for public viewing (emits FacilityReviewPublished)"}},{"name":"POST /facility-reviews/{id}/unpublish — Take a review down from public view (emits FacilityReviewUnpublished)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/facility-reviews/{id}/unpublish","host":["{{baseUrl}}"],"path":["facility-reviews","{id}","unpublish"]},"description":"Take a review down from public view (emits FacilityReviewUnpublished)"}},{"name":"GET /facility-reviews/{id}/pdf — Download a review as a PDF","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facility-reviews/{id}/pdf","host":["{{baseUrl}}"],"path":["facility-reviews","{id}","pdf"]},"description":"Binary response, content-type application/pdf."}},{"name":"GET /facilities/reports/work-order-throughput — Work-order volume, SLA compliance, and time to resolve","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facilities/reports/work-order-throughput","host":["{{baseUrl}}"],"path":["facilities","reports","work-order-throughput"]},"description":"Work-order volume, SLA compliance, and time to resolve"}},{"name":"GET /facilities/reports/pm-compliance — Preventive-maintenance schedule adherence","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facilities/reports/pm-compliance","host":["{{baseUrl}}"],"path":["facilities","reports","pm-compliance"]},"description":"Preventive-maintenance schedule adherence"}},{"name":"GET /facilities/reports/inspection-status — Inspection pass rates, overdue inspections, expiring certificates","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facilities/reports/inspection-status","host":["{{baseUrl}}"],"path":["facilities","reports","inspection-status"]},"description":"Inspection pass rates, overdue inspections, expiring certificates"}},{"name":"GET /facilities/reports/deferred-maintenance — Facility Condition Index and the unfunded deficiency backlog","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facilities/reports/deferred-maintenance","host":["{{baseUrl}}"],"path":["facilities","reports","deferred-maintenance"]},"description":"Facility Condition Index and the unfunded deficiency backlog"}},{"name":"GET /maintenance-schedules — List preventive-maintenance schedules (due-soonest first)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/maintenance-schedules","host":["{{baseUrl}}"],"path":["maintenance-schedules"]},"description":"List preventive-maintenance schedules (due-soonest first)"}},{"name":"POST /maintenance-schedules — Create a schedule (emits MaintenanceScheduleCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/maintenance-schedules","host":["{{baseUrl}}"],"path":["maintenance-schedules"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a schedule (emits MaintenanceScheduleCreated)"}},{"name":"PATCH /maintenance-schedules/{id} — Edit a schedule (emits MaintenanceScheduleUpdated when fields change)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/maintenance-schedules/{id}","host":["{{baseUrl}}"],"path":["maintenance-schedules","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a schedule (emits MaintenanceScheduleUpdated when fields change)"}},{"name":"POST /maintenance-schedules/{id}/deactivate — Deactivate a schedule (emits MaintenanceScheduleDeactivated)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/maintenance-schedules/{id}/deactivate","host":["{{baseUrl}}"],"path":["maintenance-schedules","{id}","deactivate"]},"description":"Deactivate a schedule (emits MaintenanceScheduleDeactivated)"}},{"name":"POST /maintenance-schedules/{id}/activate — Re-activate a schedule (emits MaintenanceScheduleUpdated)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/maintenance-schedules/{id}/activate","host":["{{baseUrl}}"],"path":["maintenance-schedules","{id}","activate"]},"description":"Re-activate a schedule (emits MaintenanceScheduleUpdated)"}},{"name":"POST /maintenance-schedules/{id}/generate-now — Materialize a work order from this schedule immediately (emits MaintenanceWorkOrderGenerated)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/maintenance-schedules/{id}/generate-now","host":["{{baseUrl}}"],"path":["maintenance-schedules","{id}","generate-now"]},"description":"Materialize a work order from this schedule immediately (emits MaintenanceWorkOrderGenerated)"}},{"name":"GET /room-reservations — List room reservations (filter by status, room, school, date range)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/room-reservations","host":["{{baseUrl}}"],"path":["room-reservations"]},"description":"List room reservations (filter by status, room, school, date range)"}},{"name":"POST /room-reservations — Request a room reservation (emits ReservationRequested; 409 when an approved reservation overlaps, pending overlaps returned as warnings)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/room-reservations","host":["{{baseUrl}}"],"path":["room-reservations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Request a room reservation (emits ReservationRequested; 409 when an approved reservation overlaps, pending overlaps returned as warnings)"}},{"name":"GET /room-reservations/mine — List the caller's own reservation requests","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/room-reservations/mine","host":["{{baseUrl}}"],"path":["room-reservations","mine"]},"description":"List the caller's own reservation requests"}},{"name":"POST /room-reservations/{id}/approve — Approve a pending reservation (re-checks approved overlaps; emits ReservationApproved)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/room-reservations/{id}/approve","host":["{{baseUrl}}"],"path":["room-reservations","{id}","approve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve a pending reservation (re-checks approved overlaps; emits ReservationApproved)"}},{"name":"POST /room-reservations/{id}/decline — Decline a pending reservation with notes (emits ReservationDeclined)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/room-reservations/{id}/decline","host":["{{baseUrl}}"],"path":["room-reservations","{id}","decline"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Decline a pending reservation with notes (emits ReservationDeclined)"}},{"name":"POST /room-reservations/{id}/cancel — Cancel a reservation — requester or facilities manager (emits ReservationCancelled)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/room-reservations/{id}/cancel","host":["{{baseUrl}}"],"path":["room-reservations","{id}","cancel"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Cancel a reservation — requester or facilities manager (emits ReservationCancelled)"}},{"name":"GET /rooms — List rooms (filter by school, type, bookability)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/rooms","host":["{{baseUrl}}"],"path":["rooms"]},"description":"List rooms (filter by school, type, bookability)"}},{"name":"POST /rooms — Create a room (emits RoomCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/rooms","host":["{{baseUrl}}"],"path":["rooms"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a room (emits RoomCreated)"}},{"name":"GET /rooms/{id} — Get a room","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/rooms/{id}","host":["{{baseUrl}}"],"path":["rooms","{id}"]},"description":"Get a room"}},{"name":"PATCH /rooms/{id} — Edit a room (emits RoomUpdated when fields change)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/rooms/{id}","host":["{{baseUrl}}"],"path":["rooms","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a room (emits RoomUpdated when fields change)"}},{"name":"POST /rooms/{id}/retire — Retire a room (soft-delete, emits RoomRetired)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/rooms/{id}/retire","host":["{{baseUrl}}"],"path":["rooms","{id}","retire"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Retire a room (soft-delete, emits RoomRetired)"}},{"name":"GET /facilities/report-info — Names for the public QR issue-report page","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/facilities/report-info","host":["{{baseUrl}}"],"path":["facilities","report-info"]},"description":"Names for the public QR issue-report page"}},{"name":"POST /facilities/report-issue — Submit a facilities issue from a room QR code (creates a work order)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/facilities/report-issue","host":["{{baseUrl}}"],"path":["facilities","report-issue"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Submit a facilities issue from a room QR code (creates a work order)"}},{"name":"GET /public/facility-reviews — A district's published year-end facility reviews","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/public/facility-reviews","host":["{{baseUrl}}"],"path":["public","facility-reviews"]},"description":"A district's published year-end facility reviews"}},{"name":"GET /public/facility-reviews/{token} — A published year-end facility review","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/public/facility-reviews/{token}","host":["{{baseUrl}}"],"path":["public","facility-reviews","{token}"]},"description":"A published year-end facility review"}},{"name":"GET /public/facility-reviews/{token}/pdf — Download a published year-end facility review as a PDF","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/public/facility-reviews/{token}/pdf","host":["{{baseUrl}}"],"path":["public","facility-reviews","{token}","pdf"]},"description":"Download a published year-end facility review as a PDF"}}]},{"name":"Finance","item":[{"name":"GET /finance/settings/depreciation — Depreciation defaults per asset category","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/finance/settings/depreciation","host":["{{baseUrl}}"],"path":["finance","settings","depreciation"]},"description":"Depreciation defaults per asset category"}},{"name":"PATCH /finance/settings/depreciation — Update the depreciation defaults","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/finance/settings/depreciation","host":["{{baseUrl}}"],"path":["finance","settings","depreciation"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update the depreciation defaults"}}]},{"name":"My day","item":[{"name":"GET /me/day — Today at a glance: entries, open tasks, pending reminders, counts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/me/day","host":["{{baseUrl}}"],"path":["me","day"]},"description":"Today at a glance: entries, open tasks, pending reminders, counts"}},{"name":"GET /me/calendar — My calendar entries in a window (defaults to the next 14 days)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/me/calendar","host":["{{baseUrl}}"],"path":["me","calendar"]},"description":"My calendar entries in a window (defaults to the next 14 days)"}},{"name":"POST /me/calendar — Add an entry to my calendar","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/me/calendar","host":["{{baseUrl}}"],"path":["me","calendar"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an entry to my calendar"}},{"name":"PATCH /me/calendar/{id} — Change one of my calendar entries","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/me/calendar/{id}","host":["{{baseUrl}}"],"path":["me","calendar","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change one of my calendar entries"}},{"name":"DELETE /me/calendar/{id} — Remove one of my calendar entries","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/me/calendar/{id}","host":["{{baseUrl}}"],"path":["me","calendar","{id}"]},"description":"Remove one of my calendar entries"}},{"name":"GET /me/tasks — My tasks (open only unless asked otherwise), soonest due first","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/me/tasks","host":["{{baseUrl}}"],"path":["me","tasks"]},"description":"My tasks (open only unless asked otherwise), soonest due first"}},{"name":"POST /me/tasks — Add a task to my list","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/me/tasks","host":["{{baseUrl}}"],"path":["me","tasks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a task to my list"}},{"name":"PATCH /me/tasks/{id} — Change one of my tasks, or tick it off","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/me/tasks/{id}","host":["{{baseUrl}}"],"path":["me","tasks","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change one of my tasks, or tick it off"}},{"name":"DELETE /me/tasks/{id} — Remove one of my tasks","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/me/tasks/{id}","host":["{{baseUrl}}"],"path":["me","tasks","{id}"]},"description":"Remove one of my tasks"}},{"name":"GET /me/reminders — My reminders from now on (or the whole history with includePast)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/me/reminders","host":["{{baseUrl}}"],"path":["me","reminders"]},"description":"My reminders from now on (or the whole history with includePast)"}},{"name":"POST /me/reminders — Set a reminder, on its own or against one of my tasks or entries","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/me/reminders","host":["{{baseUrl}}"],"path":["me","reminders"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set a reminder, on its own or against one of my tasks or entries"}},{"name":"PATCH /me/reminders/{id} — Snooze, retitle or dismiss one of my reminders","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/me/reminders/{id}","host":["{{baseUrl}}"],"path":["me","reminders","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Snooze, retitle or dismiss one of my reminders"}},{"name":"DELETE /me/reminders/{id} — Remove one of my reminders","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/me/reminders/{id}","host":["{{baseUrl}}"],"path":["me","reminders","{id}"]},"description":"Remove one of my reminders"}},{"name":"GET /me/profile — My profile: the district record about me, and what I can change","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/me/profile","host":["{{baseUrl}}"],"path":["me","profile"]},"description":"My profile: the district record about me, and what I can change"}},{"name":"PATCH /me/profile — Change my preferred name, pronouns or mobile phone","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/me/profile","host":["{{baseUrl}}"],"path":["me","profile"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change my preferred name, pronouns or mobile phone"}}]},{"name":"Work Orders","item":[{"name":"GET /work-orders/sites — Schools and buildings to filter work orders by, with counts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/work-orders/sites","host":["{{baseUrl}}"],"path":["work-orders","sites"]},"description":"Schools and buildings to filter work orders by, with counts"}},{"name":"GET /work-orders/contractors — Active vendors that can be named as the outside contractor","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/work-orders/contractors","host":["{{baseUrl}}"],"path":["work-orders","contractors"]},"description":"Active vendors that can be named as the outside contractor"}},{"name":"GET /work-orders/assets — A school's assets, for naming the equipment a work order is about","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/work-orders/assets","host":["{{baseUrl}}"],"path":["work-orders","assets"]},"description":"A school's assets, for naming the equipment a work order is about"}}]},{"name":"Construction","item":[{"name":"GET /construction/lookups — Pickers for the create and edit forms, plus the next project code","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/lookups","host":["{{baseUrl}}"],"path":["construction","lookups"]},"description":"Pickers for the create and edit forms, plus the next project code"}},{"name":"GET /construction/projects — List construction projects with derived cost, schedule and health","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects","host":["{{baseUrl}}"],"path":["construction","projects"]},"description":"List construction projects with derived cost, schedule and health"}},{"name":"POST /construction/projects — Create a construction project","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects","host":["{{baseUrl}}"],"path":["construction","projects"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a construction project"}},{"name":"GET /construction/projects/{id} — One project, with everything derived from its records","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{id}","host":["{{baseUrl}}"],"path":["construction","projects","{id}"]},"description":"One project, with everything derived from its records"}},{"name":"PATCH /construction/projects/{id} — Update a construction project","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{id}","host":["{{baseUrl}}"],"path":["construction","projects","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a construction project"}},{"name":"DELETE /construction/projects/{id} — Archive a construction project","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{id}","host":["{{baseUrl}}"],"path":["construction","projects","{id}"]},"description":"Archive a construction project"}},{"name":"GET /construction/projects/{projectId}/schedule — The Gantt: tasks flattened depth-first, with float and the critical path","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/schedule","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","schedule"]},"description":"The Gantt: tasks flattened depth-first, with float and the critical path"}},{"name":"POST /construction/projects/{projectId}/tasks — Add a phase, task or milestone","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/tasks","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","tasks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a phase, task or milestone"}},{"name":"PATCH /construction/projects/{projectId}/tasks/{id} — Update a schedule row","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/tasks/{id}","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","tasks","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a schedule row"}},{"name":"DELETE /construction/projects/{projectId}/tasks/{id} — Remove a schedule row; its children are re-parented, not orphaned","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/tasks/{id}","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","tasks","{id}"]},"description":"Remove a schedule row; its children are re-parented, not orphaned"}},{"name":"POST /construction/projects/{projectId}/dependencies — Link two tasks; a link that would close a loop is refused","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/dependencies","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","dependencies"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Link two tasks; a link that would close a loop is refused"}},{"name":"DELETE /construction/projects/{projectId}/dependencies — Unlink two tasks","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/dependencies","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","dependencies"]},"description":"Unlink two tasks"}},{"name":"POST /construction/projects/{projectId}/baseline — Freeze the current plan as the baseline slip is measured against","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/baseline","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","baseline"]},"description":"Freeze the current plan as the baseline slip is measured against"}},{"name":"GET /construction/analytics/portfolio — Programme totals, health mix, and the projects that need attention","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/analytics/portfolio","host":["{{baseUrl}}"],"path":["construction","analytics","portfolio"]},"description":"Programme totals, health mix, and the projects that need attention"}},{"name":"GET /construction/analytics/spend — Money certified per month across the programme","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/analytics/spend","host":["{{baseUrl}}"],"path":["construction","analytics","spend"]},"description":"Money certified per month across the programme"}},{"name":"GET /construction/analytics/completion — Delivery record by year, measured against the baseline","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/analytics/completion","host":["{{baseUrl}}"],"path":["construction","analytics","completion"]},"description":"Delivery record by year, measured against the baseline"}},{"name":"GET /construction/analytics/change-orders — Change order volume and value by quarter","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/analytics/change-orders","host":["{{baseUrl}}"],"path":["construction","analytics","change-orders"]},"description":"Change order volume and value by quarter"}},{"name":"GET /construction/projects/{projectId}/burn — Planned S-curve against money actually certified","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/burn","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","burn"]},"description":"Planned S-curve against money actually certified"}},{"name":"GET /construction/projects/{projectId}/cost-breakdown — Estimate against actual, by labour, material, equipment and subcontract","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/cost-breakdown","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","cost-breakdown"]},"description":"Estimate against actual, by labour, material, equipment and subcontract"}},{"name":"GET /construction/client — Read-only project status for school leadership","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/client","host":["{{baseUrl}}"],"path":["construction","client"]},"description":"Read-only project status for school leadership"}},{"name":"GET /construction/client/{id}/contracts — Contracts on a project, for the district-side workspace","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/client/{id}/contracts","host":["{{baseUrl}}"],"path":["construction","client","{id}","contracts"]},"description":"Contracts on a project, for the district-side workspace"}},{"name":"GET /construction/activity — Recent construction activity, district-wide","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/activity","host":["{{baseUrl}}"],"path":["construction","activity"]},"description":"Recent construction activity, district-wide"}},{"name":"GET /construction/projects/{projectId}/activity — Activity log for one project","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/activity","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","activity"]},"description":"Activity log for one project"}},{"name":"GET /construction/approval-policies — Sign-off routing per record type","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/approval-policies","host":["{{baseUrl}}"],"path":["construction","approval-policies"]},"description":"Sign-off routing per record type"}},{"name":"PUT /construction/approval-policies/{entityType} — Set the sign-off steps for a record type","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/approval-policies/{entityType}","host":["{{baseUrl}}"],"path":["construction","approval-policies","{entityType}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set the sign-off steps for a record type"}},{"name":"POST /construction/approval-policies/seed-defaults — Load the default NJ sign-off routing","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/construction/approval-policies/seed-defaults","host":["{{baseUrl}}"],"path":["construction","approval-policies","seed-defaults"]},"description":"Load the default NJ sign-off routing"}},{"name":"GET /construction/approvals/{entityType}/{entityId} — Sign-off steps for one record","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/approvals/{entityType}/{entityId}","host":["{{baseUrl}}"],"path":["construction","approvals","{entityType}","{entityId}"]},"description":"Sign-off steps for one record"}},{"name":"POST /construction/approvals/{entityType}/{entityId}/steps/{stepIndex}/decide — Sign (or reject) one routing step","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/approvals/{entityType}/{entityId}/steps/{stepIndex}/decide","host":["{{baseUrl}}"],"path":["construction","approvals","{entityType}","{entityId}","steps","{stepIndex}","decide"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Sign (or reject) one routing step"}},{"name":"GET /construction/approvals/pending — Everything waiting for a signature, district-wide","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/approvals/pending","host":["{{baseUrl}}"],"path":["construction","approvals","pending"]},"description":"Everything waiting for a signature, district-wide"}},{"name":"GET /construction/projects/{projectId}/compliance — Compliance checklist for a project","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/compliance","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","compliance"]},"description":"Compliance checklist for a project"}},{"name":"POST /construction/projects/{projectId}/compliance — Add a checklist item","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/compliance","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","compliance"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a checklist item"}},{"name":"POST /construction/projects/{projectId}/compliance/seed-nj — Load the NJ public-works checklist onto this project","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/compliance/seed-nj","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","compliance","seed-nj"]},"description":"Load the NJ public-works checklist onto this project"}},{"name":"PATCH /construction/projects/{projectId}/compliance/{id} — Update a checklist item: status, due date, evidence document, notes","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/compliance/{id}","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","compliance","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a checklist item: status, due date, evidence document, notes"}},{"name":"GET /construction/dashboard — Construction Management dashboard","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/dashboard","host":["{{baseUrl}}"],"path":["construction","dashboard"]},"description":"Construction Management dashboard"}},{"name":"GET /construction/projects/{projectId}/contracts — Every contract on a job, with what it has billed","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/contracts","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","contracts"]},"description":"Every contract on a job, with what it has billed"}},{"name":"POST /construction/projects/{projectId}/contracts — Award a contract","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/contracts","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","contracts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Award a contract"}},{"name":"GET /construction/projects/{projectId}/change-orders — Change orders on a project","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/change-orders","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","change-orders"]},"description":"Change orders on a project"}},{"name":"POST /construction/projects/{projectId}/change-orders — Raise a change order","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/change-orders","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","change-orders"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Raise a change order"}},{"name":"POST /construction/projects/{projectId}/change-orders/{id}/decide — Approve or reject a change order","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/change-orders/{id}/decide","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","change-orders","{id}","decide"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve or reject a change order"}},{"name":"GET /construction/projects/{projectId}/pay-applications — Applications for payment, newest first","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/pay-applications","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","pay-applications"]},"description":"Applications for payment, newest first"}},{"name":"POST /construction/projects/{projectId}/pay-applications — Record an application for payment","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/pay-applications","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","pay-applications"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record an application for payment"}},{"name":"POST /construction/projects/{projectId}/pay-applications/{id}/decide — Certify, reject or mark an application paid","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/pay-applications/{id}/decide","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","pay-applications","{id}","decide"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Certify, reject or mark an application paid"}},{"name":"GET /construction/projects/{projectId}/daily-reports — Daily reports, newest first","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/daily-reports","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","daily-reports"]},"description":"Daily reports, newest first"}},{"name":"POST /construction/projects/{projectId}/daily-reports — File a daily report","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/daily-reports","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","daily-reports"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"File a daily report"}},{"name":"POST /construction/projects/{projectId}/daily-reports/{id}/acknowledge — Countersign a daily report","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/daily-reports/{id}/acknowledge","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","daily-reports","{id}","acknowledge"]},"description":"Countersign a daily report"}},{"name":"GET /construction/projects/{projectId}/estimates — Estimates, newest version first","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/estimates","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","estimates"]},"description":"Estimates, newest version first"}},{"name":"POST /construction/projects/{projectId}/estimates — Start a new estimate version","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/estimates","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","estimates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a new estimate version"}},{"name":"POST /construction/projects/{projectId}/estimates/{id}/lines — Add an estimate line","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/estimates/{id}/lines","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","estimates","{id}","lines"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an estimate line"}},{"name":"GET /construction/projects/{projectId}/time — Hours booked to a project","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/time","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","time"]},"description":"Hours booked to a project"}},{"name":"POST /construction/projects/{projectId}/time — Book hours to a project","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/time","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","time"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Book hours to a project"}},{"name":"POST /construction/projects/{projectId}/time/{id}/approve — Approve booked hours so they count against the job","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/time/{id}/approve","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","time","{id}","approve"]},"description":"Approve booked hours so they count against the job"}},{"name":"GET /construction/projects/{projectId}/costs — Direct costs booked to a project","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/costs","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","costs"]},"description":"Direct costs booked to a project"}},{"name":"POST /construction/projects/{projectId}/costs — Book a direct cost","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/costs","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","costs"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Book a direct cost"}},{"name":"GET /construction/projects/{projectId}/stakeholders — Who on the district side follows this project","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/stakeholders","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","stakeholders"]},"description":"Who on the district side follows this project"}},{"name":"POST /construction/projects/{projectId}/stakeholders — Add a stakeholder to a project","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/stakeholders","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","stakeholders"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a stakeholder to a project"}},{"name":"GET /construction/estimates — All estimates — per project and standalone","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/estimates","host":["{{baseUrl}}"],"path":["construction","estimates"]},"description":"All estimates — per project and standalone"}},{"name":"POST /construction/estimates — Start a standalone estimate (no project yet)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/estimates","host":["{{baseUrl}}"],"path":["construction","estimates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a standalone estimate (no project yet)"}},{"name":"GET /construction/estimates/{id} — One estimate with lines and totals","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/estimates/{id}","host":["{{baseUrl}}"],"path":["construction","estimates","{id}"]},"description":"One estimate with lines and totals"}},{"name":"PATCH /construction/estimates/{id} — Edit estimate header (draft only, except notes and change note)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/estimates/{id}","host":["{{baseUrl}}"],"path":["construction","estimates","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit estimate header (draft only, except notes and change note)"}},{"name":"DELETE /construction/estimates/{id} — Delete a draft estimate","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/construction/estimates/{id}","host":["{{baseUrl}}"],"path":["construction","estimates","{id}"]},"description":"Delete a draft estimate"}},{"name":"POST /construction/estimates/{id}/convert-to-project — Turn a standalone estimate into a construction project","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/estimates/{id}/convert-to-project","host":["{{baseUrl}}"],"path":["construction","estimates","{id}","convert-to-project"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Turn a standalone estimate into a construction project"}},{"name":"POST /construction/estimates/{id}/approve — Approve an estimate as the current basis; earlier approved versions become superseded","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/construction/estimates/{id}/approve","host":["{{baseUrl}}"],"path":["construction","estimates","{id}","approve"]},"description":"Approve an estimate as the current basis; earlier approved versions become superseded"}},{"name":"POST /construction/estimates/{id}/revise — Start the next version from this one, carrying every line, with a note saying why","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/estimates/{id}/revise","host":["{{baseUrl}}"],"path":["construction","estimates","{id}","revise"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start the next version from this one, carrying every line, with a note saying why"}},{"name":"GET /construction/estimates/{id}/compare — Line-by-line difference between two versions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/estimates/{id}/compare","host":["{{baseUrl}}"],"path":["construction","estimates","{id}","compare"]},"description":"Line-by-line difference between two versions"}},{"name":"POST /construction/estimates/{id}/lines — Add a line","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/estimates/{id}/lines","host":["{{baseUrl}}"],"path":["construction","estimates","{id}","lines"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a line"}},{"name":"PATCH /construction/estimates/{id}/lines/{lineId} — Edit a line","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/estimates/{id}/lines/{lineId}","host":["{{baseUrl}}"],"path":["construction","estimates","{id}","lines","{lineId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a line"}},{"name":"DELETE /construction/estimates/{id}/lines/{lineId} — Remove a line","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/construction/estimates/{id}/lines/{lineId}","host":["{{baseUrl}}"],"path":["construction","estimates","{id}","lines","{lineId}"]},"description":"Remove a line"}},{"name":"POST /construction/estimates/{id}/lines/from-library — Add a line priced from the cost library","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/estimates/{id}/lines/from-library","host":["{{baseUrl}}"],"path":["construction","estimates","{id}","lines","from-library"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a line priced from the cost library"}},{"name":"POST /construction/estimates/{id}/lines/from-assembly — Expand an assembly into lines","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/estimates/{id}/lines/from-assembly","host":["{{baseUrl}}"],"path":["construction","estimates","{id}","lines","from-assembly"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Expand an assembly into lines"}},{"name":"GET /construction/estimates/{id}/export.pdf — Estimate as a PDF for the board packet","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/estimates/{id}/export.pdf","host":["{{baseUrl}}"],"path":["construction","estimates","{id}","export.pdf"]},"description":"Estimate as a PDF for the board packet"}},{"name":"GET /construction/cost-items — District cost library","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/cost-items","host":["{{baseUrl}}"],"path":["construction","cost-items"]},"description":"District cost library"}},{"name":"POST /construction/cost-items — Add a library item","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/cost-items","host":["{{baseUrl}}"],"path":["construction","cost-items"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a library item"}},{"name":"PATCH /construction/cost-items/{id} — Update a library item (existing estimate lines keep their price)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/cost-items/{id}","host":["{{baseUrl}}"],"path":["construction","cost-items","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a library item (existing estimate lines keep their price)"}},{"name":"GET /construction/cost-assemblies — Assemblies (bundles of library items per unit of work)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/cost-assemblies","host":["{{baseUrl}}"],"path":["construction","cost-assemblies"]},"description":"Assemblies (bundles of library items per unit of work)"}},{"name":"POST /construction/cost-assemblies — Create an assembly","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/cost-assemblies","host":["{{baseUrl}}"],"path":["construction","cost-assemblies"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an assembly"}},{"name":"PUT /construction/cost-assemblies/{id} — Replace an assembly definition","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/cost-assemblies/{id}","host":["{{baseUrl}}"],"path":["construction","cost-assemblies","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Replace an assembly definition"}},{"name":"GET /construction/projects/{projectId}/documents — Documents on a project","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/documents","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","documents"]},"description":"Documents on a project"}},{"name":"POST /construction/projects/{projectId}/documents — Upload a document (multipart/form-data)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/documents","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","documents"]},"description":"Upload a document (multipart/form-data)"}},{"name":"GET /construction/client/{projectId}/documents — Documents a project has shared with school leadership","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/client/{projectId}/documents","host":["{{baseUrl}}"],"path":["construction","client","{projectId}","documents"]},"description":"Documents a project has shared with school leadership"}},{"name":"GET /construction/documents/{id}/download — Download a document","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/documents/{id}/download","host":["{{baseUrl}}"],"path":["construction","documents","{id}","download"]},"description":"Download a document"}},{"name":"DELETE /construction/documents/{id} — Remove a document","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/construction/documents/{id}","host":["{{baseUrl}}"],"path":["construction","documents","{id}"]},"description":"Remove a document"}},{"name":"GET /construction/projects/{projectId}/bid-packages — Bid packages on a project","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/bid-packages","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","bid-packages"]},"description":"Bid packages on a project"}},{"name":"POST /construction/projects/{projectId}/bid-packages — Create a bid package","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/bid-packages","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","bid-packages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a bid package"}},{"name":"GET /construction/bid-packages/{packageId}/tabulation — The bid tab, with responsiveness evaluated against N.J.S.A. 18A:18A","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/bid-packages/{packageId}/tabulation","host":["{{baseUrl}}"],"path":["construction","bid-packages","{packageId}","tabulation"]},"description":"The bid tab, with responsiveness evaluated against N.J.S.A. 18A:18A"}},{"name":"POST /construction/bid-packages/{packageId}/addenda — Issue an addendum","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/bid-packages/{packageId}/addenda","host":["{{baseUrl}}"],"path":["construction","bid-packages","{packageId}","addenda"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Issue an addendum"}},{"name":"POST /construction/bid-packages/{packageId}/alternates — Add a bid alternate","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/bid-packages/{packageId}/alternates","host":["{{baseUrl}}"],"path":["construction","bid-packages","{packageId}","alternates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a bid alternate"}},{"name":"PATCH /construction/bid-packages/{packageId}/alternates/{id} — Accept or drop an alternate, which changes who is low","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/bid-packages/{packageId}/alternates/{id}","host":["{{baseUrl}}"],"path":["construction","bid-packages","{packageId}","alternates","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Accept or drop an alternate, which changes who is low"}},{"name":"POST /construction/bid-packages/{packageId}/open — Record the public bid opening","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/construction/bid-packages/{packageId}/open","host":["{{baseUrl}}"],"path":["construction","bid-packages","{packageId}","open"]},"description":"Record the public bid opening"}},{"name":"POST /construction/bid-packages/{packageId}/bidders — Record a bid received","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/bid-packages/{packageId}/bidders","host":["{{baseUrl}}"],"path":["construction","bid-packages","{packageId}","bidders"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a bid received"}},{"name":"PATCH /construction/bid-packages/{packageId}/bidders/{id} — Update a bid — compliance items, price, or rejection","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/bid-packages/{packageId}/bidders/{id}","host":["{{baseUrl}}"],"path":["construction","bid-packages","{packageId}","bidders","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a bid — compliance items, price, or rejection"}},{"name":"PUT /construction/bid-packages/{packageId}/bidders/{id}/alternates — Set a bidder's alternate prices","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/bid-packages/{packageId}/bidders/{id}/alternates","host":["{{baseUrl}}"],"path":["construction","bid-packages","{packageId}","bidders","{id}","alternates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set a bidder's alternate prices"}},{"name":"POST /construction/bid-packages/{packageId}/award — Award to the lowest responsible bidder, creating the contract","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/bid-packages/{packageId}/award","host":["{{baseUrl}}"],"path":["construction","bid-packages","{packageId}","award"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Award to the lowest responsible bidder, creating the contract"}},{"name":"GET /construction/funding-sources — Every funding source, with what is authorised, allocated, drawn and claimed","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/funding-sources","host":["{{baseUrl}}"],"path":["construction","funding-sources"]},"description":"Every funding source, with what is authorised, allocated, drawn and claimed"}},{"name":"POST /construction/funding-sources — Add a funding source","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/funding-sources","host":["{{baseUrl}}"],"path":["construction","funding-sources"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a funding source"}},{"name":"GET /construction/projects/{projectId}/funding — How a project is funded, and how much of each source it has drawn","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/funding","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","funding"]},"description":"How a project is funded, and how much of each source it has drawn"}},{"name":"POST /construction/projects/{projectId}/funding — Allocate a source to a project","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/funding","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","funding"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Allocate a source to a project"}},{"name":"GET /construction/projects/{projectId}/draws — Every draw against this project, newest first","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/draws","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","draws"]},"description":"Every draw against this project, newest first"}},{"name":"POST /construction/projects/{projectId}/draws — Draw an amount, spread across the sources in draw order","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/draws","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","draws"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Draw an amount, spread across the sources in draw order"}},{"name":"POST /construction/funding-sources/{id}/claim — Claim drawn amounts back from the state","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/funding-sources/{id}/claim","host":["{{baseUrl}}"],"path":["construction","funding-sources","{id}","claim"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Claim drawn amounts back from the state"}},{"name":"GET /construction/my-work — Everything waiting on somebody, across every live project","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/my-work","host":["{{baseUrl}}"],"path":["construction","my-work"]},"description":"Everything waiting on somebody, across every live project"}},{"name":"GET /construction/projects/{projectId}/action-items — Action items on a project","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/action-items","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","action-items"]},"description":"Action items on a project"}},{"name":"POST /construction/projects/{projectId}/action-items — Raise an action item","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/action-items","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","action-items"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Raise an action item"}},{"name":"PATCH /construction/projects/{projectId}/action-items/{id} — Update or close an action item","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/action-items/{id}","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","action-items","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update or close an action item"}},{"name":"GET /construction/projects/{projectId}/rfis — The RFI log","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/rfis","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","rfis"]},"description":"The RFI log"}},{"name":"POST /construction/projects/{projectId}/rfis — Log an RFI","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/rfis","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","rfis"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Log an RFI"}},{"name":"POST /construction/projects/{projectId}/rfis/{id}/answer — Answer an RFI, recording whether it moved money or time","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/rfis/{id}/answer","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","rfis","{id}","answer"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Answer an RFI, recording whether it moved money or time"}},{"name":"GET /construction/projects/{projectId}/submittals — The submittal log","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/submittals","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","submittals"]},"description":"The submittal log"}},{"name":"POST /construction/projects/{projectId}/submittals — Log a submittal, or a resubmission of one","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/submittals","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","submittals"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Log a submittal, or a resubmission of one"}},{"name":"POST /construction/projects/{projectId}/submittals/{id}/review — Return a submittal with a review action","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/construction/projects/{projectId}/submittals/{id}/review","host":["{{baseUrl}}"],"path":["construction","projects","{projectId}","submittals","{id}","review"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Return a submittal with a review action"}}]},{"name":"Food service","item":[{"name":"GET /food/items — Food catalog","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/items","host":["{{baseUrl}}"],"path":["food","items"]},"description":"Food catalog"}},{"name":"POST /food/items — Add a food item","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/items","host":["{{baseUrl}}"],"path":["food","items"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a food item"}},{"name":"PATCH /food/items/{id} — Edit a food item","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/items/{id}","host":["{{baseUrl}}"],"path":["food","items","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a food item"}},{"name":"GET /food/vendors — Food vendors","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/vendors","host":["{{baseUrl}}"],"path":["food","vendors"]},"description":"Food vendors"}},{"name":"POST /food/vendors — Add a vendor","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/vendors","host":["{{baseUrl}}"],"path":["food","vendors"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a vendor"}},{"name":"PATCH /food/vendors/{id} — Edit a vendor","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/vendors/{id}","host":["{{baseUrl}}"],"path":["food","vendors","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a vendor"}},{"name":"GET /food/cycles — Menu cycles","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/cycles","host":["{{baseUrl}}"],"path":["food","cycles"]},"description":"Menu cycles"}},{"name":"POST /food/cycles — Create a cycle","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/cycles","host":["{{baseUrl}}"],"path":["food","cycles"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a cycle"}},{"name":"GET /food/cycles/{id} — A cycle with its grid","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/cycles/{id}","host":["{{baseUrl}}"],"path":["food","cycles","{id}"]},"description":"A cycle with its grid"}},{"name":"PATCH /food/cycles/{id} — Edit a cycle","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/cycles/{id}","host":["{{baseUrl}}"],"path":["food","cycles","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a cycle"}},{"name":"PUT /food/cycles/{id}/days — Set the whole cycle grid","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/cycles/{id}/days","host":["{{baseUrl}}"],"path":["food","cycles","{id}","days"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set the whole cycle grid"}},{"name":"POST /food/cycles/{id}/apply — Write daily menus from the cycle over a date range (weekdays; existing published days are kept)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/cycles/{id}/apply","host":["{{baseUrl}}"],"path":["food","cycles","{id}","apply"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Write daily menus from the cycle over a date range (weekdays; existing published days are kept)"}},{"name":"GET /food/menus — Menus for a date range; drafts only with menu.manage","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/menus","host":["{{baseUrl}}"],"path":["food","menus"]},"description":"Menus for a date range; drafts only with menu.manage"}},{"name":"PUT /food/menus — Set one day","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/menus","host":["{{baseUrl}}"],"path":["food","menus"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set one day"}},{"name":"POST /food/menus/publish — Publish (or unpublish) a range","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/menus/publish","host":["{{baseUrl}}"],"path":["food","menus","publish"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Publish (or unpublish) a range"}},{"name":"GET /food/orders — Purchase orders","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/orders","host":["{{baseUrl}}"],"path":["food","orders"]},"description":"Purchase orders"}},{"name":"POST /food/orders — Create an order (draft)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/orders","host":["{{baseUrl}}"],"path":["food","orders"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an order (draft)"}},{"name":"PATCH /food/orders/{id} — Edit lines, submit, receive (with quantities), cancel","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/orders/{id}","host":["{{baseUrl}}"],"path":["food","orders","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit lines, submit, receive (with quantities), cancel"}},{"name":"POST /food/orders/suggest — Suggested lines for a vendor from the published menus and planned counts in a range","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/orders/suggest","host":["{{baseUrl}}"],"path":["food","orders","suggest"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Suggested lines for a vendor from the published menus and planned counts in a range"}},{"name":"GET /food/production — The production record for a school/meal/date, or a prefilled draft","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/production","host":["{{baseUrl}}"],"path":["food","production"]},"description":"The production record for a school/meal/date, or a prefilled draft"}},{"name":"PUT /food/production — Save a draft production record","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/production","host":["{{baseUrl}}"],"path":["food","production"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save a draft production record"}},{"name":"POST /food/production/{id}/finalize — Finalize; posts inventory use for catalog items","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/food/production/{id}/finalize","host":["{{baseUrl}}"],"path":["food","production","{id}","finalize"]},"description":"Finalize; posts inventory use for catalog items"}},{"name":"POST /food/production/{id}/reopen — Reopen a final record; reverses its inventory use","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/food/production/{id}/reopen","host":["{{baseUrl}}"],"path":["food","production","{id}","reopen"]},"description":"Reopen a final record; reverses its inventory use"}},{"name":"GET /food/production/list — Production records in a range","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/production/list","host":["{{baseUrl}}"],"path":["food","production","list"]},"description":"Production records in a range"}},{"name":"GET /food/inventory — Stock on hand at a location","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/inventory","host":["{{baseUrl}}"],"path":["food","inventory"]},"description":"Stock on hand at a location"}},{"name":"PATCH /food/inventory/{id} — Set a par level","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/inventory/{id}","host":["{{baseUrl}}"],"path":["food","inventory","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set a par level"}},{"name":"POST /food/inventory/transactions — Adjust, count, record waste, or transfer between locations","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/inventory/transactions","host":["{{baseUrl}}"],"path":["food","inventory","transactions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Adjust, count, record waste, or transfer between locations"}},{"name":"GET /food/inventory/transactions — Stock movements","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/inventory/transactions","host":["{{baseUrl}}"],"path":["food","inventory","transactions"]},"description":"Stock movements"}},{"name":"GET /food/payments — Online top-ups","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/payments","host":["{{baseUrl}}"],"path":["food","payments"]},"description":"Online top-ups"}},{"name":"GET /food/accounts/low-balance — Accounts at or below their alert level","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/accounts/low-balance","host":["{{baseUrl}}"],"path":["food","accounts","low-balance"]},"description":"Accounts at or below their alert level"}},{"name":"POST /food/accounts/low-balance/notify — Email guardians of low or negative balances (dryRun previews)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/accounts/low-balance/notify","host":["{{baseUrl}}"],"path":["food","accounts","low-balance","notify"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Email guardians of low or negative balances (dryRun previews)"}},{"name":"GET /food/claims/settings — Claim settings: rates and sites","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/claims/settings","host":["{{baseUrl}}"],"path":["food","claims","settings"]},"description":"Claim settings: rates and sites"}},{"name":"PUT /food/claims/settings — Save claim settings","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/claims/settings","host":["{{baseUrl}}"],"path":["food","claims","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save claim settings"}},{"name":"GET /food/claims/days — Daily counts for a school and month","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/claims/days","host":["{{baseUrl}}"],"path":["food","claims","days"]},"description":"Daily counts for a school and month"}},{"name":"PUT /food/claims/days — Enter or correct one day of counts (closes the day)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/claims/days","host":["{{baseUrl}}"],"path":["food","claims","days"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Enter or correct one day of counts (closes the day)"}},{"name":"POST /food/claims/build — Build or refresh draft claims for a month","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/claims/build","host":["{{baseUrl}}"],"path":["food","claims","build"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Build or refresh draft claims for a month"}},{"name":"GET /food/claims — Claims for a month","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/claims","host":["{{baseUrl}}"],"path":["food","claims"]},"description":"Claims for a month"}},{"name":"PATCH /food/claims/{id} — Submit, mark paid, or return to draft","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/food/claims/{id}","host":["{{baseUrl}}"],"path":["food","claims","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Submit, mark paid, or return to draft"}},{"name":"GET /food/claims/export — SNEARS entry sheet for a month (CSV)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/food/claims/export","host":["{{baseUrl}}"],"path":["food","claims","export"]},"description":"SNEARS entry sheet for a month (CSV)"}}]},{"name":"Schools","item":[{"name":"GET /school-context — Schools the caller may open, and where to send them by default","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-context","host":["{{baseUrl}}"],"path":["school-context"]},"description":"Schools the caller may open, and where to send them by default"}},{"name":"GET /school-context/{organizationId} — One school by organization id, refused unless in the caller’s scope","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-context/{organizationId}","host":["{{baseUrl}}"],"path":["school-context","{organizationId}"]},"description":"One school by organization id, refused unless in the caller’s scope"}},{"name":"GET /school-page/{organizationId}/profile — Header strip and branding for a school","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-page/{organizationId}/profile","host":["{{baseUrl}}"],"path":["school-page","{organizationId}","profile"]},"description":"Header strip and branding for a school"}},{"name":"PATCH /school-page/{organizationId}/profile — Edit a school’s header strip and branding","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/school-page/{organizationId}/profile","host":["{{baseUrl}}"],"path":["school-page","{organizationId}","profile"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a school’s header strip and branding"}},{"name":"GET /school-page/{organizationId}/glance — Today at a Glance for one school — every figure school-scoped","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-page/{organizationId}/glance","host":["{{baseUrl}}"],"path":["school-page","{organizationId}","glance"]},"description":"Today at a Glance for one school — every figure school-scoped"}},{"name":"GET /school-page/{organizationId}/links — Quick Launch tiles and Principal Resources for a school","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-page/{organizationId}/links","host":["{{baseUrl}}"],"path":["school-page","{organizationId}","links"]},"description":"Quick Launch tiles and Principal Resources for a school"}},{"name":"POST /school-page/{organizationId}/links — Add a link tile (district-wide, or specific to this school)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/school-page/{organizationId}/links","host":["{{baseUrl}}"],"path":["school-page","{organizationId}","links"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a link tile (district-wide, or specific to this school)"}},{"name":"PATCH /school-page/{organizationId}/links/{linkId} — Edit a link tile","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/school-page/{organizationId}/links/{linkId}","host":["{{baseUrl}}"],"path":["school-page","{organizationId}","links","{linkId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a link tile"}},{"name":"GET /school-sections/{organizationId}/daily-operations — Daily Operations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/daily-operations","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","daily-operations"]},"description":"Daily Operations"}},{"name":"GET /school-sections/{organizationId}/staff — Staff roster with today’s absences","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/staff","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","staff"]},"description":"Staff roster with today’s absences"}},{"name":"GET /school-sections/{organizationId}/academics — Sections, courses, class sizes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/academics","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","academics"]},"description":"Sections, courses, class sizes"}},{"name":"GET /school-sections/{organizationId}/safety — Drills, visitors, incidents","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/safety","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","safety"]},"description":"Drills, visitors, incidents"}},{"name":"GET /school-sections/{organizationId}/facilities — Work orders, maintenance, reservations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/facilities","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","facilities"]},"description":"Work orders, maintenance, reservations"}},{"name":"GET /school-sections/{organizationId}/technology — Tech work orders and asset inventory","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/technology","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","technology"]},"description":"Tech work orders and asset inventory"}},{"name":"GET /school-sections/{organizationId}/communications — Announcements reaching this school","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/communications","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","communications"]},"description":"Announcements reaching this school"}},{"name":"GET /school-sections/{organizationId}/calendar — District calendar with school overrides","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/calendar","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","calendar"]},"description":"District calendar with school overrides"}},{"name":"GET /school-sections/{organizationId}/documents — Recent documents (district-wide)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/documents","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","documents"]},"description":"Recent documents (district-wide)"}},{"name":"GET /school-sections/{organizationId}/forms — Surveys and forms (district-wide)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/forms","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","forms"]},"description":"Surveys and forms (district-wide)"}},{"name":"GET /school-sections/{organizationId}/reports — School trend data for charts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/reports","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","reports"]},"description":"School trend data for charts"}},{"name":"GET /school-sections/{organizationId}/weather — Current weather for the district’s town","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/weather","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","weather"]},"description":"Current weather for the district’s town"}},{"name":"GET /school-sections/{organizationId}/students — Student roster with search and grade filter","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/students","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","students"]},"description":"Student roster with search and grade filter"}},{"name":"GET /school-sections/{organizationId}/students/{personId} — One student’s attendance, classes, incidents, guardians","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/students/{personId}","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","students","{personId}"]},"description":"One student’s attendance, classes, incidents, guardians"}},{"name":"POST /school-sections/{organizationId}/ask — Ask Omni Forge AI about this school","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/ask","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","ask"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask Omni Forge AI about this school"}},{"name":"POST /school-sections/{organizationId}/report-pdf — Produce the building report for this school as a PDF","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/report-pdf","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","report-pdf"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Produce the building report for this school as a PDF"}},{"name":"POST /school-sections/{organizationId}/email-report — Email the building report for this school (PDF attached)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/school-sections/{organizationId}/email-report","host":["{{baseUrl}}"],"path":["school-sections","{organizationId}","email-report"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Email the building report for this school (PDF attached)"}}]},{"name":"Board","item":[{"name":"GET /commission/dashboard — Commission Dashboard: events, updates, incidents (with HIB), attendance, alerts, committee reports, communications, calendars, athletics","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/commission/dashboard","host":["{{baseUrl}}"],"path":["commission","dashboard"]},"description":"Commission Dashboard: events, updates, incidents (with HIB), attendance, alerts, committee reports, communications, calendars, athletics"}},{"name":"GET /commission/committee-reports/{id} — One committee report (drafts only for editors)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/commission/committee-reports/{id}","host":["{{baseUrl}}"],"path":["commission","committee-reports","{id}"]},"description":"One committee report (drafts only for editors)"}},{"name":"PATCH /commission/committee-reports/{id} — Edit a committee report","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/commission/committee-reports/{id}","host":["{{baseUrl}}"],"path":["commission","committee-reports","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a committee report"}},{"name":"DELETE /commission/committee-reports/{id} — Delete a committee report","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/commission/committee-reports/{id}","host":["{{baseUrl}}"],"path":["commission","committee-reports","{id}"]},"description":"Delete a committee report"}},{"name":"POST /commission/committee-reports — File a committee report (draft or published)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/commission/committee-reports","host":["{{baseUrl}}"],"path":["commission","committee-reports"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"File a committee report (draft or published)"}},{"name":"GET /commission/events/{id} — One district event, for editing","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/commission/events/{id}","host":["{{baseUrl}}"],"path":["commission","events","{id}"]},"description":"One district event, for editing"}},{"name":"PATCH /commission/events/{id} — Edit a district event","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/commission/events/{id}","host":["{{baseUrl}}"],"path":["commission","events","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a district event"}},{"name":"DELETE /commission/events/{id} — Delete a district event","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/commission/events/{id}","host":["{{baseUrl}}"],"path":["commission","events","{id}"]},"description":"Delete a district event"}},{"name":"POST /commission/events — Add a district event","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/commission/events","host":["{{baseUrl}}"],"path":["commission","events"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a district event"}},{"name":"GET /commission/updates/{id} — One update, for editing","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/commission/updates/{id}","host":["{{baseUrl}}"],"path":["commission","updates","{id}"]},"description":"One update, for editing"}},{"name":"PATCH /commission/updates/{id} — Edit an update","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/commission/updates/{id}","host":["{{baseUrl}}"],"path":["commission","updates","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an update"}},{"name":"DELETE /commission/updates/{id} — Delete an update","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/commission/updates/{id}","host":["{{baseUrl}}"],"path":["commission","updates","{id}"]},"description":"Delete an update"}},{"name":"POST /commission/updates — Post an update to the board","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/commission/updates","host":["{{baseUrl}}"],"path":["commission","updates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Post an update to the board"}},{"name":"GET /commission/games/{id} — One athletic game, for editing","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/commission/games/{id}","host":["{{baseUrl}}"],"path":["commission","games","{id}"]},"description":"One athletic game, for editing"}},{"name":"PATCH /commission/games/{id} — Edit an athletic game, including the final score and status","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/commission/games/{id}","host":["{{baseUrl}}"],"path":["commission","games","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an athletic game, including the final score and status"}},{"name":"DELETE /commission/games/{id} — Delete an athletic game","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/commission/games/{id}","host":["{{baseUrl}}"],"path":["commission","games","{id}"]},"description":"Delete an athletic game"}},{"name":"POST /commission/games — Add an athletic game","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/commission/games","host":["{{baseUrl}}"],"path":["commission","games"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an athletic game"}},{"name":"GET /board/meetings — List board meetings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/board/meetings","host":["{{baseUrl}}"],"path":["board","meetings"]},"description":"List board meetings"}},{"name":"POST /board/meetings — Schedule a new board meeting","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/board/meetings","host":["{{baseUrl}}"],"path":["board","meetings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Schedule a new board meeting"}},{"name":"GET /board/meetings/{id} — Get a board meeting with agenda items and minutes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/board/meetings/{id}","host":["{{baseUrl}}"],"path":["board","meetings","{id}"]},"description":"Get a board meeting with agenda items and minutes"}},{"name":"PATCH /board/meetings/{id} — Update a board meeting","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/board/meetings/{id}","host":["{{baseUrl}}"],"path":["board","meetings","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a board meeting"}},{"name":"POST /board/meetings/{id}/agenda — Add an agenda item to a meeting","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/board/meetings/{id}/agenda","host":["{{baseUrl}}"],"path":["board","meetings","{id}","agenda"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an agenda item to a meeting"}},{"name":"PATCH /board/meetings/{id}/agenda/{itemId} — Update an agenda item","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/board/meetings/{id}/agenda/{itemId}","host":["{{baseUrl}}"],"path":["board","meetings","{id}","agenda","{itemId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update an agenda item"}},{"name":"DELETE /board/meetings/{id}/agenda/{itemId} — Remove an agenda item","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/board/meetings/{id}/agenda/{itemId}","host":["{{baseUrl}}"],"path":["board","meetings","{id}","agenda","{itemId}"]},"description":"Remove an agenda item"}},{"name":"POST /board/meetings/{id}/minutes — Create or update meeting minutes","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/board/meetings/{id}/minutes","host":["{{baseUrl}}"],"path":["board","meetings","{id}","minutes"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create or update meeting minutes"}},{"name":"POST /board/meetings/{id}/publish-minutes — Publish meeting minutes publicly","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/board/meetings/{id}/publish-minutes","host":["{{baseUrl}}"],"path":["board","meetings","{id}","publish-minutes"]},"description":"Publish meeting minutes publicly"}},{"name":"GET /public/board/meetings/{districtId} — Public: upcoming meetings with published minutes for a district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/public/board/meetings/{districtId}","host":["{{baseUrl}}"],"path":["public","board","meetings","{districtId}"]},"description":"Public: upcoming meetings with published minutes for a district"}}]},{"name":"Superintendent","item":[{"name":"GET /superintendent/glance — District glance for the Superintendent Command Center","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/superintendent/glance","host":["{{baseUrl}}"],"path":["superintendent","glance"]},"description":"District glance for the Superintendent Command Center"}},{"name":"GET /superintendent/schools — School comparison grid","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/superintendent/schools","host":["{{baseUrl}}"],"path":["superintendent","schools"]},"description":"School comparison grid"}},{"name":"GET /superintendent/academics — Superintendent Command Center: academics","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/superintendent/academics","host":["{{baseUrl}}"],"path":["superintendent","academics"]},"description":"Superintendent Command Center: academics"}},{"name":"GET /superintendent/students — Superintendent Command Center: students","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/superintendent/students","host":["{{baseUrl}}"],"path":["superintendent","students"]},"description":"Superintendent Command Center: students"}},{"name":"GET /superintendent/people — Superintendent Command Center: people","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/superintendent/people","host":["{{baseUrl}}"],"path":["superintendent","people"]},"description":"Superintendent Command Center: people"}},{"name":"GET /superintendent/operations — Superintendent Command Center: operations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/superintendent/operations","host":["{{baseUrl}}"],"path":["superintendent","operations"]},"description":"Superintendent Command Center: operations"}},{"name":"GET /superintendent/finance — Superintendent Command Center: finance","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/superintendent/finance","host":["{{baseUrl}}"],"path":["superintendent","finance"]},"description":"Superintendent Command Center: finance"}},{"name":"GET /superintendent/board — Superintendent Command Center: board","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/superintendent/board","host":["{{baseUrl}}"],"path":["superintendent","board"]},"description":"Superintendent Command Center: board"}},{"name":"GET /superintendent/weather — Current weather in the district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/superintendent/weather","host":["{{baseUrl}}"],"path":["superintendent","weather"]},"description":"Current weather in the district"}},{"name":"POST /superintendent/ask — Ask Omni Forge AI about the district (aggregate figures only)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/superintendent/ask","host":["{{baseUrl}}"],"path":["superintendent","ask"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask Omni Forge AI about the district (aggregate figures only)"}}]},{"name":"Safety","item":[{"name":"GET /safety-drills — List safety drills","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/safety-drills","host":["{{baseUrl}}"],"path":["safety-drills"]},"description":"List safety drills"}},{"name":"POST /safety-drills — Log a new safety drill (emits SafetyDrillLogged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/safety-drills","host":["{{baseUrl}}"],"path":["safety-drills"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Log a new safety drill (emits SafetyDrillLogged)"}},{"name":"GET /safety-drills/annual-report — Annual state-report roll-up (NJ category counts per school)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/safety-drills/annual-report","host":["{{baseUrl}}"],"path":["safety-drills","annual-report"]},"description":"Annual state-report roll-up (NJ category counts per school)"}},{"name":"GET /safety-drills/{id} — Get a safety drill","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/safety-drills/{id}","host":["{{baseUrl}}"],"path":["safety-drills","{id}"]},"description":"Get a safety drill"}},{"name":"PATCH /safety-drills/{id} — Correct a drill entry (emits SafetyDrillCorrected when fields change)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/safety-drills/{id}","host":["{{baseUrl}}"],"path":["safety-drills","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Correct a drill entry (emits SafetyDrillCorrected when fields change)"}},{"name":"POST /safety-drills/{id}/visibility — Toggle public (parent-page) visibility (emits SafetyDrillVisibilityChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/safety-drills/{id}/visibility","host":["{{baseUrl}}"],"path":["safety-drills","{id}","visibility"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Toggle public (parent-page) visibility (emits SafetyDrillVisibilityChanged)"}},{"name":"POST /safety-drills/report-filed — Mark all unreported drills for (school, schoolYear) as filed","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/safety-drills/report-filed","host":["{{baseUrl}}"],"path":["safety-drills","report-filed"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark all unreported drills for (school, schoolYear) as filed"}},{"name":"GET /schools/{schoolId}/safety/public-drills — Parent-facing drill list (date, type, duration only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/schools/{schoolId}/safety/public-drills","host":["{{baseUrl}}"],"path":["schools","{schoolId}","safety","public-drills"]},"description":"No authentication required. Caller supplies districtId via the X-District-Id header (same mechanism the other dev-header routes use). Only drills flagged publicVisible=true are returned."}},{"name":"GET /presence — Who is in every building right now","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/presence","host":["{{baseUrl}}"],"path":["presence"]},"description":"Students expected against attendance taken, staff expected against absences and sub coverage, and visitors still signed in — for every school the caller may open."}},{"name":"GET /presence/{organizationId} — One school, name by name","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/presence/{organizationId}","host":["{{baseUrl}}"],"path":["presence","{organizationId}"]},"description":"One school, name by name"}},{"name":"GET /safety/watchlist — List district watchlist entries","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/safety/watchlist","host":["{{baseUrl}}"],"path":["safety","watchlist"]},"description":"List district watchlist entries"}},{"name":"POST /safety/watchlist — Add a watchlist entry (emits WatchlistEntryAdded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/safety/watchlist","host":["{{baseUrl}}"],"path":["safety","watchlist"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a watchlist entry (emits WatchlistEntryAdded)"}},{"name":"PATCH /safety/watchlist/{id} — Edit or deactivate a watchlist entry (emits WatchlistEntryUpdated)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/safety/watchlist/{id}","host":["{{baseUrl}}"],"path":["safety","watchlist","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit or deactivate a watchlist entry (emits WatchlistEntryUpdated)"}},{"name":"GET /safety/visitors/dashboard — Visitor safety analytics for a date window","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/safety/visitors/dashboard","host":["{{baseUrl}}"],"path":["safety","visitors","dashboard"]},"description":"Visitor safety analytics for a date window"}},{"name":"GET /visitor/pre-registrations — List visitor pre-registrations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/visitor/pre-registrations","host":["{{baseUrl}}"],"path":["visitor","pre-registrations"]},"description":"List visitor pre-registrations"}},{"name":"POST /visitor/pre-registrations — Pre-register a visitor (emits VisitorPreRegistered)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/visitor/pre-registrations","host":["{{baseUrl}}"],"path":["visitor","pre-registrations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Pre-register a visitor (emits VisitorPreRegistered)"}},{"name":"GET /visitor/pre-registrations/lookup — Resolve a pre-registration fast-lane code","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/visitor/pre-registrations/lookup","host":["{{baseUrl}}"],"path":["visitor","pre-registrations","lookup"]},"description":"Resolve a pre-registration fast-lane code"}}]},{"name":"District Calendar","item":[{"name":"GET /district-calendar — List all calendar days for a school year (school overrides folded in if schoolId is passed)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/district-calendar","host":["{{baseUrl}}"],"path":["district-calendar"]},"description":"List all calendar days for a school year (school overrides folded in if schoolId is passed)"}},{"name":"POST /district-calendar/publish — Bulk-publish or re-publish the district calendar for a school year (emits CalendarPublished)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/district-calendar/publish","host":["{{baseUrl}}"],"path":["district-calendar","publish"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Bulk-publish or re-publish the district calendar for a school year (emits CalendarPublished)"}},{"name":"PATCH /district-calendar/days/{date} — Create or edit a single district calendar day (emits CalendarDaySet)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/district-calendar/days/{date}","host":["{{baseUrl}}"],"path":["district-calendar","days","{date}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create or edit a single district calendar day (emits CalendarDaySet)"}},{"name":"DELETE /district-calendar/days/{date} — Soft-delete a district calendar day (emits CalendarDayCleared)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/district-calendar/days/{date}","host":["{{baseUrl}}"],"path":["district-calendar","days","{date}"]},"description":"Soft-delete a district calendar day (emits CalendarDayCleared)"}},{"name":"POST /schools/{schoolId}/calendar-overrides — Create or replace a school-level calendar override (emits SchoolCalendarDayOverridden)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/schools/{schoolId}/calendar-overrides","host":["{{baseUrl}}"],"path":["schools","{schoolId}","calendar-overrides"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create or replace a school-level calendar override (emits SchoolCalendarDayOverridden)"}},{"name":"DELETE /schools/{schoolId}/calendar-overrides/{date} — Clear a school-level calendar override (emits SchoolCalendarOverrideCleared)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/schools/{schoolId}/calendar-overrides/{date}","host":["{{baseUrl}}"],"path":["schools","{schoolId}","calendar-overrides","{date}"]},"description":"Clear a school-level calendar override (emits SchoolCalendarOverrideCleared)"}},{"name":"GET /district-calendar/school-months — Enumerate NJDOE school months (20 consecutive instructional days)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/district-calendar/school-months","host":["{{baseUrl}}"],"path":["district-calendar","school-months"]},"description":"Enumerate NJDOE school months (20 consecutive instructional days)"}},{"name":"GET /district-calendar/nth-school-day — Compute the Nth instructional day from a starting date (HIB 10-school-day clock, truancy)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/district-calendar/nth-school-day","host":["{{baseUrl}}"],"path":["district-calendar","nth-school-day"]},"description":"Compute the Nth instructional day from a starting date (HIB 10-school-day clock, truancy)"}}]},{"name":"Feature Flags","item":[{"name":"GET /feature-flags — Effective feature flags for the current district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/feature-flags","host":["{{baseUrl}}"],"path":["feature-flags"]},"description":"Returns all platform feature flags resolved for this district. District-level overrides take precedence over platform defaults. Expired overrides are ignored."}}]},{"name":"Help Requests","item":[{"name":"GET /help-requests — My help requests, newest first","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/help-requests","host":["{{baseUrl}}"],"path":["help-requests"]},"description":"My help requests, newest first"}},{"name":"POST /help-requests — Ask YRC Support for help","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/help-requests","host":["{{baseUrl}}"],"path":["help-requests"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask YRC Support for help"}},{"name":"GET /help-requests/{id} — One of my help requests, with the conversation","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/help-requests/{id}","host":["{{baseUrl}}"],"path":["help-requests","{id}"]},"description":"One of my help requests, with the conversation"}},{"name":"POST /help-requests/{id}/replies — Reply on one of my help requests (reopens it if closed)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/help-requests/{id}/replies","host":["{{baseUrl}}"],"path":["help-requests","{id}","replies"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reply on one of my help requests (reopens it if closed)"}},{"name":"POST /help-requests/{id}/close — Close one of my help requests","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/help-requests/{id}/close","host":["{{baseUrl}}"],"path":["help-requests","{id}","close"]},"description":"Close one of my help requests"}}]},{"name":"Modules","item":[{"name":"GET /modules — Active modules for the current district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/modules","host":["{{baseUrl}}"],"path":["modules"]},"description":"Per-district module activation, resolved from the reserved `module.*` feature flags. Any authenticated district user may read this — it only reveals which product areas are on."}}]},{"name":"Extracurriculars","item":[{"name":"GET /extracurriculars — List extracurricular activities","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/extracurriculars","host":["{{baseUrl}}"],"path":["extracurriculars"]},"description":"List extracurricular activities"}},{"name":"POST /extracurriculars — Create an extracurricular activity","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/extracurriculars","host":["{{baseUrl}}"],"path":["extracurriculars"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an extracurricular activity"}},{"name":"GET /extracurriculars/{id} — Get a single extracurricular activity","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/extracurriculars/{id}","host":["{{baseUrl}}"],"path":["extracurriculars","{id}"]},"description":"Get a single extracurricular activity"}},{"name":"PATCH /extracurriculars/{id} — Update an extracurricular activity","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/extracurriculars/{id}","host":["{{baseUrl}}"],"path":["extracurriculars","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update an extracurricular activity"}},{"name":"GET /extracurriculars/{id}/roster — Get the roster for an extracurricular activity","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/extracurriculars/{id}/roster","host":["{{baseUrl}}"],"path":["extracurriculars","{id}","roster"]},"description":"Get the roster for an extracurricular activity"}},{"name":"POST /extracurriculars/{id}/roster — Add a student to the roster (runs eligibility check)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/extracurriculars/{id}/roster","host":["{{baseUrl}}"],"path":["extracurriculars","{id}","roster"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a student to the roster (runs eligibility check)"}},{"name":"DELETE /extracurriculars/{id}/roster/{studentId} — Drop a student from the roster","request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/extracurriculars/{id}/roster/{studentId}","host":["{{baseUrl}}"],"path":["extracurriculars","{id}","roster","{studentId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Drop a student from the roster"}},{"name":"GET /extracurriculars/{id}/eligibility/{studentId} — Check eligibility for a single student","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/extracurriculars/{id}/eligibility/{studentId}","host":["{{baseUrl}}"],"path":["extracurriculars","{id}","eligibility","{studentId}"]},"description":"Check eligibility for a single student"}},{"name":"POST /extracurriculars/{id}/consent/{studentId} — Record parental consent for a student","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/extracurriculars/{id}/consent/{studentId}","host":["{{baseUrl}}"],"path":["extracurriculars","{id}","consent","{studentId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record parental consent for a student"}},{"name":"GET /extracurriculars/{id}/eligibility-report — Run eligibility check for all rostered students and return report","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/extracurriculars/{id}/eligibility-report","host":["{{baseUrl}}"],"path":["extracurriculars","{id}","eligibility-report"]},"description":"Run eligibility check for all rostered students and return report"}}]},{"name":"Assessments","item":[{"name":"GET /assessments/results — List assessment results across the district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/assessments/results","host":["{{baseUrl}}"],"path":["assessments","results"]},"description":"List assessment results across the district"}},{"name":"GET /students/{studentId}/assessment-results — Get all assessment results for a student","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students/{studentId}/assessment-results","host":["{{baseUrl}}"],"path":["students","{studentId}","assessment-results"]},"description":"Get all assessment results for a student"}},{"name":"POST /assessments/import/preview — Preview a CSV import — parse and match students without persisting","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/assessments/import/preview","host":["{{baseUrl}}"],"path":["assessments","import","preview"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Preview a CSV import — parse and match students without persisting"}},{"name":"POST /assessments/import/apply — Apply a previewed import — persist assessment results","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/assessments/import/apply","host":["{{baseUrl}}"],"path":["assessments","import","apply"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Apply a previewed import — persist assessment results"}},{"name":"GET /assessments/imports — List assessment import history","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/assessments/imports","host":["{{baseUrl}}"],"path":["assessments","imports"]},"description":"List assessment import history"}},{"name":"GET /assessments/imports/{id} — Get an assessment import record","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/assessments/imports/{id}","host":["{{baseUrl}}"],"path":["assessments","imports","{id}"]},"description":"Get an assessment import record"}}]},{"name":"Transfers","item":[{"name":"GET /students/{studentId}/transfers — List transfer requests for a student","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/students/{studentId}/transfers","host":["{{baseUrl}}"],"path":["students","{studentId}","transfers"]},"description":"List transfer requests for a student"}},{"name":"POST /students/{studentId}/transfers — Initiate an outbound transfer for a student","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/students/{studentId}/transfers","host":["{{baseUrl}}"],"path":["students","{studentId}","transfers"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Initiate an outbound transfer for a student"}},{"name":"GET /transfers/{id} — Get a single transfer request","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/transfers/{id}","host":["{{baseUrl}}"],"path":["transfers","{id}"]},"description":"Get a single transfer request"}},{"name":"PATCH /transfers/{id} — Update status or notes on a transfer request","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transfers/{id}","host":["{{baseUrl}}"],"path":["transfers","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update status or notes on a transfer request"}},{"name":"POST /transfers/{id}/package-records — Package student records using the configured adapter","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/transfers/{id}/package-records","host":["{{baseUrl}}"],"path":["transfers","{id}","package-records"]},"description":"Package student records using the configured adapter"}},{"name":"POST /transfers/{id}/complete — Mark a transfer as completed","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/transfers/{id}/complete","host":["{{baseUrl}}"],"path":["transfers","{id}","complete"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark a transfer as completed"}}]},{"name":"Purchase Orders","item":[{"name":"GET /purchase-orders — List purchase orders","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/purchase-orders","host":["{{baseUrl}}"],"path":["purchase-orders"]},"description":"List purchase orders"}},{"name":"POST /purchase-orders — Create a purchase order draft","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/purchase-orders","host":["{{baseUrl}}"],"path":["purchase-orders"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a purchase order draft"}},{"name":"GET /purchase-orders/{id} — Get a single purchase order with line items and approvals","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/purchase-orders/{id}","host":["{{baseUrl}}"],"path":["purchase-orders","{id}"]},"description":"Get a single purchase order with line items and approvals"}},{"name":"PATCH /purchase-orders/{id} — Update PO metadata (only before approval)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/purchase-orders/{id}","host":["{{baseUrl}}"],"path":["purchase-orders","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update PO metadata (only before approval)"}},{"name":"POST /purchase-orders/{id}/line-items — Add a line item to a PO","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/purchase-orders/{id}/line-items","host":["{{baseUrl}}"],"path":["purchase-orders","{id}","line-items"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a line item to a PO"}},{"name":"PATCH /purchase-orders/{id}/line-items/{itemId} — Update a PO line item","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/purchase-orders/{id}/line-items/{itemId}","host":["{{baseUrl}}"],"path":["purchase-orders","{id}","line-items","{itemId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a PO line item"}},{"name":"DELETE /purchase-orders/{id}/line-items/{itemId} — Remove a line item from a PO","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/purchase-orders/{id}/line-items/{itemId}","host":["{{baseUrl}}"],"path":["purchase-orders","{id}","line-items","{itemId}"]},"description":"Remove a line item from a PO"}},{"name":"POST /purchase-orders/{id}/submit — Submit a draft PO for approval","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/purchase-orders/{id}/submit","host":["{{baseUrl}}"],"path":["purchase-orders","{id}","submit"]},"description":"Submit a draft PO for approval"}},{"name":"POST /purchase-orders/{id}/approve — Approve a submitted PO","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/purchase-orders/{id}/approve","host":["{{baseUrl}}"],"path":["purchase-orders","{id}","approve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve a submitted PO"}},{"name":"POST /purchase-orders/{id}/reject — Reject a submitted PO","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/purchase-orders/{id}/reject","host":["{{baseUrl}}"],"path":["purchase-orders","{id}","reject"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reject a submitted PO"}},{"name":"POST /purchase-orders/{id}/receive-items — Record received quantity for a line item","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/purchase-orders/{id}/receive-items","host":["{{baseUrl}}"],"path":["purchase-orders","{id}","receive-items"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record received quantity for a line item"}},{"name":"POST /purchase-orders/{id}/cancel — Cancel a purchase order","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/purchase-orders/{id}/cancel","host":["{{baseUrl}}"],"path":["purchase-orders","{id}","cancel"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Cancel a purchase order"}}]},{"name":"Professional Development","item":[{"name":"GET /pd/activities — List PD activities","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pd/activities","host":["{{baseUrl}}"],"path":["pd","activities"]},"description":"List PD activities"}},{"name":"POST /pd/activities — Create a PD activity","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pd/activities","host":["{{baseUrl}}"],"path":["pd","activities"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a PD activity"}},{"name":"GET /pd/activities/{id} — Get a PD activity with enrollment and completion counts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pd/activities/{id}","host":["{{baseUrl}}"],"path":["pd","activities","{id}"]},"description":"Get a PD activity with enrollment and completion counts"}},{"name":"PATCH /pd/activities/{id} — Update a PD activity","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pd/activities/{id}","host":["{{baseUrl}}"],"path":["pd","activities","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a PD activity"}},{"name":"POST /pd/activities/{id}/enroll — Enroll a staff member in a PD activity","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pd/activities/{id}/enroll","host":["{{baseUrl}}"],"path":["pd","activities","{id}","enroll"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Enroll a staff member in a PD activity"}},{"name":"DELETE /pd/activities/{id}/enroll/{staffPersonId} — Cancel enrollment for a staff member","request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pd/activities/{id}/enroll/{staffPersonId}","host":["{{baseUrl}}"],"path":["pd","activities","{id}","enroll","{staffPersonId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Cancel enrollment for a staff member"}},{"name":"POST /pd/activities/{id}/complete — Record completion for a staff member","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pd/activities/{id}/complete","host":["{{baseUrl}}"],"path":["pd","activities","{id}","complete"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record completion for a staff member"}},{"name":"GET /pd/staff/{personId}/history — All PD completions for a staff member","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pd/staff/{personId}/history","host":["{{baseUrl}}"],"path":["pd","staff","{personId}","history"]},"description":"All PD completions for a staff member"}},{"name":"GET /pd/staff/{personId}/credits-summary — PD credit hour totals by type and cert renewal category for a staff member","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pd/staff/{personId}/credits-summary","host":["{{baseUrl}}"],"path":["pd","staff","{personId}","credits-summary"]},"description":"PD credit hour totals by type and cert renewal category for a staff member"}},{"name":"GET /pd/staff-search — Find staff by name for PD enrollment and completion","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pd/staff-search","host":["{{baseUrl}}"],"path":["pd","staff-search"]},"description":"Find staff by name for PD enrollment and completion"}}]},{"name":"Volunteers","item":[{"name":"GET /volunteers/{personId}/clearances — List clearances for a volunteer","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/volunteers/{personId}/clearances","host":["{{baseUrl}}"],"path":["volunteers","{personId}","clearances"]},"description":"List clearances for a volunteer"}},{"name":"POST /volunteers/{personId}/clearances — Record a new clearance for a volunteer","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/volunteers/{personId}/clearances","host":["{{baseUrl}}"],"path":["volunteers","{personId}","clearances"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a new clearance for a volunteer"}},{"name":"GET /volunteers/clearances/expiring-soon — List active clearances expiring within 30 days","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/volunteers/clearances/expiring-soon","host":["{{baseUrl}}"],"path":["volunteers","clearances","expiring-soon"]},"description":"List active clearances expiring within 30 days"}},{"name":"PATCH /volunteers/clearances/{id} — Update a clearance record","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/volunteers/clearances/{id}","host":["{{baseUrl}}"],"path":["volunteers","clearances","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a clearance record"}},{"name":"POST /volunteers/clearances/{id}/revoke — Revoke a volunteer clearance","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/volunteers/clearances/{id}/revoke","host":["{{baseUrl}}"],"path":["volunteers","clearances","{id}","revoke"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Revoke a volunteer clearance"}}]},{"name":"OPRA","item":[{"name":"GET /opra/requests — List OPRA requests","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/opra/requests","host":["{{baseUrl}}"],"path":["opra","requests"]},"description":"List OPRA requests"}},{"name":"POST /opra/requests — Record a new OPRA request (auto-computes 7-business-day deadline)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/opra/requests","host":["{{baseUrl}}"],"path":["opra","requests"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a new OPRA request (auto-computes 7-business-day deadline)"}},{"name":"GET /opra/requests/overdue — List overdue OPRA requests (past due date, not fulfilled or denied)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/opra/requests/overdue","host":["{{baseUrl}}"],"path":["opra","requests","overdue"]},"description":"List overdue OPRA requests (past due date, not fulfilled or denied)"}},{"name":"GET /opra/requests/{id} — Get a single OPRA request","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/opra/requests/{id}","host":["{{baseUrl}}"],"path":["opra","requests","{id}"]},"description":"Get a single OPRA request"}},{"name":"PATCH /opra/requests/{id} — Update an OPRA request status, response, notes, or assignment","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/opra/requests/{id}","host":["{{baseUrl}}"],"path":["opra","requests","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update an OPRA request status, response, notes, or assignment"}}]},{"name":"Records","item":[{"name":"GET /time-machine/students/{personId} — Rebuild a student record as it stood on a given date","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time-machine/students/{personId}","host":["{{baseUrl}}"],"path":["time-machine","students","{personId}"]},"description":"Rows that carry effective dates are filtered to the as-of date, which is a true reconstruction. Demographics have no history table and are returned as current values, with every event since the as-of date listed so the reader can see what moved."}},{"name":"GET /time-machine/students/{personId}/timeline — Every recorded change to one student, oldest first","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time-machine/students/{personId}/timeline","host":["{{baseUrl}}"],"path":["time-machine","students","{personId}","timeline"]},"description":"Every recorded change to one student, oldest first"}},{"name":"POST /time-machine/packet — Assemble a records-request packet with a release decision per section","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time-machine/packet","host":["{{baseUrl}}"],"path":["time-machine","packet"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rebuilds each named student as of the date, then classifies every section against the FERPA/OPRA rule table. Nothing is redacted silently: the clerk gets a list of what is releasable, what needs a look and what is exempt, each with the authority it rests on."}}]},{"name":"ChildFind","item":[{"name":"GET /child-find/referrals — List Child Find referrals","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/child-find/referrals","host":["{{baseUrl}}"],"path":["child-find","referrals"]},"description":"List Child Find referrals"}},{"name":"POST /child-find/referrals — Record a new Child Find referral (validates IDEA age window)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/child-find/referrals","host":["{{baseUrl}}"],"path":["child-find","referrals"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a new Child Find referral (validates IDEA age window)"}},{"name":"GET /child-find/referrals/evaluation-due-soon — List referrals with evaluation deadlines within 14 days","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/child-find/referrals/evaluation-due-soon","host":["{{baseUrl}}"],"path":["child-find","referrals","evaluation-due-soon"]},"description":"List referrals with evaluation deadlines within 14 days"}},{"name":"GET /child-find/referrals/{id} — Get a Child Find referral","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/child-find/referrals/{id}","host":["{{baseUrl}}"],"path":["child-find","referrals","{id}"]},"description":"Get a Child Find referral"}},{"name":"PATCH /child-find/referrals/{id} — Update a Child Find referral","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/child-find/referrals/{id}","host":["{{baseUrl}}"],"path":["child-find","referrals","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a Child Find referral"}},{"name":"POST /child-find/referrals/{id}/determine-eligibility — Record eligibility determination for a referral","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/child-find/referrals/{id}/determine-eligibility","host":["{{baseUrl}}"],"path":["child-find","referrals","{id}","determine-eligibility"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record eligibility determination for a referral"}},{"name":"POST /child-find/referrals/{id}/create-iep — Mark IEP as created from this referral","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/child-find/referrals/{id}/create-iep","host":["{{baseUrl}}"],"path":["child-find","referrals","{id}","create-iep"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark IEP as created from this referral"}}]},{"name":"Visitor","item":[{"name":"GET /visitor/kiosk-info — Return district/school branding for the public kiosk","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/visitor/kiosk-info","host":["{{baseUrl}}"],"path":["visitor","kiosk-info"]},"description":"Return district/school branding for the public kiosk"}},{"name":"POST /visitor/check-in — Check a visitor in (emits VisitorCheckedIn)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/visitor/check-in","host":["{{baseUrl}}"],"path":["visitor","check-in"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Check a visitor in (emits VisitorCheckedIn)"}},{"name":"GET /visitor/active — List visitors currently checked in","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/visitor/active","host":["{{baseUrl}}"],"path":["visitor","active"]},"description":"List visitors currently checked in"}},{"name":"GET /visitor — List visitor log entries (paginated)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/visitor","host":["{{baseUrl}}"],"path":["visitor"]},"description":"List visitor log entries (paginated)"}},{"name":"GET /visitor/{id} — Get a single visitor log entry","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/visitor/{id}","host":["{{baseUrl}}"],"path":["visitor","{id}"]},"description":"Get a single visitor log entry"}},{"name":"DELETE /visitor/{id} — Permanently delete a visitor log entry (emits VisitorDeleted)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/visitor/{id}","host":["{{baseUrl}}"],"path":["visitor","{id}"]},"description":"Permanently delete a visitor log entry (emits VisitorDeleted)"}},{"name":"POST /visitor/{id}/check-out — Check a visitor out (emits VisitorCheckedOut)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/visitor/{id}/check-out","host":["{{baseUrl}}"],"path":["visitor","{id}","check-out"]},"description":"Check a visitor out (emits VisitorCheckedOut)"}},{"name":"POST /visitor/{id}/screening-verdict — Record the result of a manual registry review (emits VisitorScreeningResolved)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/visitor/{id}/screening-verdict","host":["{{baseUrl}}"],"path":["visitor","{id}","screening-verdict"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record the result of a manual registry review (emits VisitorScreeningResolved)"}},{"name":"POST /visitor/{id}/deny — Deny a visitor entry (emits VisitorDenied)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/visitor/{id}/deny","host":["{{baseUrl}}"],"path":["visitor","{id}","deny"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Deny a visitor entry (emits VisitorDenied)"}}]},{"name":"Surveys","item":[{"name":"GET /surveys — List surveys with response counts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/surveys","host":["{{baseUrl}}"],"path":["surveys"]},"description":"List surveys with response counts"}},{"name":"POST /surveys — Create a survey (status = DRAFT)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/surveys","host":["{{baseUrl}}"],"path":["surveys"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a survey (status = DRAFT)"}},{"name":"GET /surveys/{id} — Get a survey with its questions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/surveys/{id}","host":["{{baseUrl}}"],"path":["surveys","{id}"]},"description":"Get a survey with its questions"}},{"name":"PATCH /surveys/{id} — Update a survey (active surveys: only dates may change)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/surveys/{id}","host":["{{baseUrl}}"],"path":["surveys","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a survey (active surveys: only dates may change)"}},{"name":"DELETE /surveys/{id} — Delete a DRAFT survey (hard delete — only if 0 responses)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/surveys/{id}","host":["{{baseUrl}}"],"path":["surveys","{id}"]},"description":"Delete a DRAFT survey (hard delete — only if 0 responses)"}},{"name":"POST /surveys/{id}/publish — Publish a survey (must have ≥1 question)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/surveys/{id}/publish","host":["{{baseUrl}}"],"path":["surveys","{id}","publish"]},"description":"Publish a survey (must have ≥1 question)"}},{"name":"POST /surveys/{id}/close — Close a survey","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/surveys/{id}/close","host":["{{baseUrl}}"],"path":["surveys","{id}","close"]},"description":"Close a survey"}},{"name":"POST /surveys/{id}/questions — Add a question to a survey","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/surveys/{id}/questions","host":["{{baseUrl}}"],"path":["surveys","{id}","questions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a question to a survey"}},{"name":"PATCH /surveys/{id}/questions/{qid} — Update a survey question","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/surveys/{id}/questions/{qid}","host":["{{baseUrl}}"],"path":["surveys","{id}","questions","{qid}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a survey question"}},{"name":"DELETE /surveys/{id}/questions/{qid} — Delete a question (only on DRAFT surveys)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/surveys/{id}/questions/{qid}","host":["{{baseUrl}}"],"path":["surveys","{id}","questions","{qid}"]},"description":"Delete a question (only on DRAFT surveys)"}},{"name":"GET /surveys/respond-eligible — List active surveys the calling user can respond to","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/surveys/respond-eligible","host":["{{baseUrl}}"],"path":["surveys","respond-eligible"]},"description":"List active surveys the calling user can respond to"}},{"name":"GET /surveys/{id}/respond — Get survey questions for responding (audience-gated)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/surveys/{id}/respond","host":["{{baseUrl}}"],"path":["surveys","{id}","respond"]},"description":"Get survey questions for responding (audience-gated)"}},{"name":"POST /surveys/{id}/responses — Submit a survey response","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/surveys/{id}/responses","host":["{{baseUrl}}"],"path":["surveys","{id}","responses"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Submit a survey response"}},{"name":"GET /surveys/{id}/responses — List individual responses (admin only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/surveys/{id}/responses","host":["{{baseUrl}}"],"path":["surveys","{id}","responses"]},"description":"List individual responses (admin only)"}},{"name":"GET /surveys/{id}/results — Aggregate results by question","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/surveys/{id}/results","host":["{{baseUrl}}"],"path":["surveys","{id}","results"]},"description":"Aggregate results by question"}}]},{"name":"ITW","item":[{"name":"GET /itw/walkthroughs/{id}/summary — The walkthrough’s AI Summary, suggested recipients and send history","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/summary","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","summary"]},"description":"The walkthrough’s AI Summary, suggested recipients and send history"}},{"name":"PUT /itw/walkthroughs/{id}/summary — Save an edit to the summary, or mark it final / back to draft","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/summary","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","summary"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save an edit to the summary, or mark it final / back to draft"}},{"name":"POST /itw/walkthroughs/{id}/summary/generate — Have the AI write the summary from what was recorded","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/summary/generate","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","summary","generate"]},"description":"Have the AI write the summary from what was recorded"}},{"name":"POST /itw/walkthroughs/{id}/summary/send — Email the summary to people in the district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/summary/send","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","summary","send"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Email the summary to people in the district"}},{"name":"GET /itw/walkthroughs/{id}/evidence — Flags and attached files for a walkthrough, keyed by question","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/evidence","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","evidence"]},"description":"Flags and attached files for a walkthrough, keyed by question"}},{"name":"POST /itw/walkthroughs/{id}/questions/{questionId}/flag — Flag or Commend one answer (pressing the set one again clears it)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/questions/{questionId}/flag","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","questions","{questionId}","flag"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Flag or Commend one answer (pressing the set one again clears it)"}},{"name":"POST /itw/walkthroughs/{id}/questions/{questionId}/attachments — Attach an image or PDF to an answer (multipart \"file\", 5 MB)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/questions/{questionId}/attachments","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","questions","{questionId}","attachments"]},"description":"Attach an image or PDF to an answer (multipart \"file\", 5 MB)"}},{"name":"POST /itw/answer-flags/{id}/resolve — Close a flag","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/answer-flags/{id}/resolve","host":["{{baseUrl}}"],"path":["itw","answer-flags","{id}","resolve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Close a flag"}},{"name":"GET /itw/answer-attachments/{id}/file — Open an attached file","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/answer-attachments/{id}/file","host":["{{baseUrl}}"],"path":["itw","answer-attachments","{id}","file"]},"description":"Open an attached file"}},{"name":"DELETE /itw/answer-attachments/{id} — Remove an attached file","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/itw/answer-attachments/{id}","host":["{{baseUrl}}"],"path":["itw","answer-attachments","{id}"]},"description":"Remove an attached file"}},{"name":"POST /itw/follow-up-walkthroughs — Start a follow-up walkthrough from a completed walkthrough or a coaching follow-up","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/follow-up-walkthroughs","host":["{{baseUrl}}"],"path":["itw","follow-up-walkthroughs"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a follow-up walkthrough from a completed walkthrough or a coaching follow-up"}},{"name":"GET /itw/walkthroughs/{id}/follow-up — The follow-up chain of a walkthrough","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/follow-up","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","follow-up"]},"description":"The follow-up chain of a walkthrough"}},{"name":"PUT /itw/walkthroughs/{id}/follow-up-remarks — Overall remarks on a follow-up visit","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/follow-up-remarks","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","follow-up-remarks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Overall remarks on a follow-up visit"}},{"name":"POST /itw/answer-flags/{id}/review — Remark on a flagged item of the visit being followed up","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/answer-flags/{id}/review","host":["{{baseUrl}}"],"path":["itw","answer-flags","{id}","review"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Remark on a flagged item of the visit being followed up"}}]},{"name":"Instructional Technology Walkthroughs","item":[{"name":"GET /itw/context — ITW: your access, rubric level names and school years","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/context","host":["{{baseUrl}}"],"path":["itw","context"]},"description":"ITW: your access, rubric level names and school years"}},{"name":"GET /itw/menu — ITW: the sidebar items your ITW role shows (null when you are not on the team)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/menu","host":["{{baseUrl}}"],"path":["itw","menu"]},"description":"ITW: the sidebar items your ITW role shows (null when you are not on the team)"}},{"name":"GET /itw/dashboard — ITW dashboard figures","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/dashboard","host":["{{baseUrl}}"],"path":["itw","dashboard"]},"description":"ITW dashboard figures"}},{"name":"GET /itw/walkthroughs — List walkthroughs","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/walkthroughs","host":["{{baseUrl}}"],"path":["itw","walkthroughs"]},"description":"List walkthroughs"}},{"name":"POST /itw/walkthroughs — Start a walkthrough (emits ItwWalkthroughStarted)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/walkthroughs","host":["{{baseUrl}}"],"path":["itw","walkthroughs"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a walkthrough (emits ItwWalkthroughStarted)"}},{"name":"GET /itw/walkthroughs/new-options — Schools and teachers for a new walkthrough","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/new-options","host":["{{baseUrl}}"],"path":["itw","walkthroughs","new-options"]},"description":"Schools and teachers for a new walkthrough"}},{"name":"GET /itw/walkthroughs/{id} — A walkthrough with its responses","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}"]},"description":"A walkthrough with its responses"}},{"name":"DELETE /itw/walkthroughs/{id} — Delete a walkthrough (emits ItwWalkthroughDeleted)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}"]},"description":"Delete a walkthrough (emits ItwWalkthroughDeleted)"}},{"name":"GET /itw/walkthroughs/{id}/form — The observation form for a draft walkthrough","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/form","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","form"]},"description":"The observation form for a draft walkthrough"}},{"name":"PUT /itw/walkthroughs/{id}/answers — Save answers; with submit=true, complete the walkthrough (emits ItwWalkthroughDraftSaved / ItwWalkthroughCompleted)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/answers","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","answers"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save answers; with submit=true, complete the walkthrough (emits ItwWalkthroughDraftSaved / ItwWalkthroughCompleted)"}},{"name":"POST /itw/walkthroughs/{id}/reopen — Reopen a walkthrough (emits ItwWalkthroughStatusChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/reopen","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","reopen"]},"description":"Reopen a walkthrough (emits ItwWalkthroughStatusChanged)"}},{"name":"POST /itw/walkthroughs/{id}/lock — Lock a walkthrough (emits ItwWalkthroughStatusChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/lock","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","lock"]},"description":"Lock a walkthrough (emits ItwWalkthroughStatusChanged)"}},{"name":"POST /itw/walkthroughs/{id}/unlock — Unlock a walkthrough (emits ItwWalkthroughStatusChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/unlock","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","unlock"]},"description":"Unlock a walkthrough (emits ItwWalkthroughStatusChanged)"}},{"name":"POST /itw/walkthroughs/{id}/followups — Create a follow-up visit from a walkthrough (emits ItwFollowUpCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/walkthroughs/{id}/followups","host":["{{baseUrl}}"],"path":["itw","walkthroughs","{id}","followups"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a follow-up visit from a walkthrough (emits ItwFollowUpCreated)"}},{"name":"GET /itw/followups — The coaching follow-up queue","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/followups","host":["{{baseUrl}}"],"path":["itw","followups"]},"description":"The coaching follow-up queue"}},{"name":"POST /itw/followups — Add a follow-up by hand (emits ItwFollowUpCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/followups","host":["{{baseUrl}}"],"path":["itw","followups"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a follow-up by hand (emits ItwFollowUpCreated)"}},{"name":"GET /itw/followups/options — Teachers and team for a new follow-up","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/followups/options","host":["{{baseUrl}}"],"path":["itw","followups","options"]},"description":"Teachers and team for a new follow-up"}},{"name":"PATCH /itw/followups/{id}/status — Change a follow-up’s status (emits ItwFollowUpUpdated)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/followups/{id}/status","host":["{{baseUrl}}"],"path":["itw","followups","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a follow-up’s status (emits ItwFollowUpUpdated)"}},{"name":"POST /itw/followups/{id}/schedule — Schedule a follow-up visit (emits ItwFollowUpUpdated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/followups/{id}/schedule","host":["{{baseUrl}}"],"path":["itw","followups","{id}","schedule"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Schedule a follow-up visit (emits ItwFollowUpUpdated)"}},{"name":"DELETE /itw/followups/{id} — Delete a follow-up (supervisor; emits ItwFollowUpUpdated)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/itw/followups/{id}","host":["{{baseUrl}}"],"path":["itw","followups","{id}"]},"description":"Delete a follow-up (supervisor; emits ItwFollowUpUpdated)"}},{"name":"GET /itw/form — The walkthrough form, for the Form Builder","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/form","host":["{{baseUrl}}"],"path":["itw","form"]},"description":"The walkthrough form, for the Form Builder"}},{"name":"GET /itw/form/sections — Active form sections","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/form/sections","host":["{{baseUrl}}"],"path":["itw","form","sections"]},"description":"Active form sections"}},{"name":"POST /itw/form/sections — Add a form section (emits ItwFormChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/form/sections","host":["{{baseUrl}}"],"path":["itw","form","sections"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a form section (emits ItwFormChanged)"}},{"name":"PATCH /itw/form/sections/{id} — Rename a section (emits ItwFormChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/form/sections/{id}","host":["{{baseUrl}}"],"path":["itw","form","sections","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rename a section (emits ItwFormChanged)"}},{"name":"POST /itw/form/sections/{id}/remove — Remove a section and its questions (emits ItwFormChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itw/form/sections/{id}/remove","host":["{{baseUrl}}"],"path":["itw","form","sections","{id}","remove"]},"description":"Remove a section and its questions (emits ItwFormChanged)"}},{"name":"POST /itw/form/sections/{id}/restore — Restore a removed section (emits ItwFormChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itw/form/sections/{id}/restore","host":["{{baseUrl}}"],"path":["itw","form","sections","{id}","restore"]},"description":"Restore a removed section (emits ItwFormChanged)"}},{"name":"POST /itw/form/sections/{id}/move — Move a section up or down (emits ItwFormChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/form/sections/{id}/move","host":["{{baseUrl}}"],"path":["itw","form","sections","{id}","move"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move a section up or down (emits ItwFormChanged)"}},{"name":"GET /itw/form/questions/{id} — One question, for the editor","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/form/questions/{id}","host":["{{baseUrl}}"],"path":["itw","form","questions","{id}"]},"description":"One question, for the editor"}},{"name":"PUT /itw/form/questions/{id} — Save a question (emits ItwFormChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/form/questions/{id}","host":["{{baseUrl}}"],"path":["itw","form","questions","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save a question (emits ItwFormChanged)"}},{"name":"POST /itw/form/questions — Add a question (emits ItwFormChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/form/questions","host":["{{baseUrl}}"],"path":["itw","form","questions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a question (emits ItwFormChanged)"}},{"name":"POST /itw/form/questions/{id}/remove — Remove a question (emits ItwFormChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itw/form/questions/{id}/remove","host":["{{baseUrl}}"],"path":["itw","form","questions","{id}","remove"]},"description":"Remove a question (emits ItwFormChanged)"}},{"name":"POST /itw/form/questions/{id}/restore — Restore a question (emits ItwFormChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itw/form/questions/{id}/restore","host":["{{baseUrl}}"],"path":["itw","form","questions","{id}","restore"]},"description":"Restore a question (emits ItwFormChanged)"}},{"name":"POST /itw/form/questions/{id}/move — Move a question (emits ItwFormChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/form/questions/{id}/move","host":["{{baseUrl}}"],"path":["itw","form","questions","{id}","move"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move a question (emits ItwFormChanged)"}},{"name":"POST /itw/form/reset — Reset the form to the default template (only before any answers; emits ItwFormChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itw/form/reset","host":["{{baseUrl}}"],"path":["itw","form","reset"]},"description":"Reset the form to the default template (only before any answers; emits ItwFormChanged)"}},{"name":"POST /itw/form/add-standard — Add missing standard questions (emits ItwFormChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itw/form/add-standard","host":["{{baseUrl}}"],"path":["itw","form","add-standard"]},"description":"Add missing standard questions (emits ItwFormChanged)"}},{"name":"GET /itw/team — The walkthrough team","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/team","host":["{{baseUrl}}"],"path":["itw","team"]},"description":"The walkthrough team"}},{"name":"POST /itw/team — Add or update a team member (emits ItwTeamChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/team","host":["{{baseUrl}}"],"path":["itw","team"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add or update a team member (emits ItwTeamChanged)"}},{"name":"GET /itw/team/candidates — Find DEP users to add to the team","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/team/candidates","host":["{{baseUrl}}"],"path":["itw","team","candidates"]},"description":"Find DEP users to add to the team"}},{"name":"POST /itw/team/{id}/invite — Send a team member their invitation email","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itw/team/{id}/invite","host":["{{baseUrl}}"],"path":["itw","team","{id}","invite"]},"description":"Send a team member their invitation email"}},{"name":"POST /itw/team/invite-pending — Send the invitation to every member who has not accepted one","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itw/team/invite-pending","host":["{{baseUrl}}"],"path":["itw","team","invite-pending"]},"description":"Send the invitation to every member who has not accepted one"}},{"name":"PATCH /itw/team/{id}/active — Activate or deactivate a team member (emits ItwTeamChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/team/{id}/active","host":["{{baseUrl}}"],"path":["itw","team","{id}","active"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Activate or deactivate a team member (emits ItwTeamChanged)"}},{"name":"PUT /itw/team/{id}/schools — Set the schools an observer covers (emits ItwTeamChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/team/{id}/schools","host":["{{baseUrl}}"],"path":["itw","team","{id}","schools"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set the schools an observer covers (emits ItwTeamChanged)"}},{"name":"POST /itw/team/import — Import team members from CSV (emits ItwTeamChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/team/import","host":["{{baseUrl}}"],"path":["itw","team","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Import team members from CSV (emits ItwTeamChanged)"}},{"name":"GET /itw/settings — ITW settings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/settings","host":["{{baseUrl}}"],"path":["itw","settings"]},"description":"ITW settings"}},{"name":"PUT /itw/settings/level-names — Rename rubric levels 1–4 (emits ItwSettingsUpdated)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/settings/level-names","host":["{{baseUrl}}"],"path":["itw","settings","level-names"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rename rubric levels 1–4 (emits ItwSettingsUpdated)"}},{"name":"PUT /itw/settings/ai — Turn the ITW assistant on or off (emits ItwSettingsUpdated)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/settings/ai","host":["{{baseUrl}}"],"path":["itw","settings","ai"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Turn the ITW assistant on or off (emits ItwSettingsUpdated)"}},{"name":"GET /itw/compare — Compare results between visits across a school year","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/compare","host":["{{baseUrl}}"],"path":["itw","compare"]},"description":"A visit is one completed walkthrough. ?basis=round compares each classroom’s nth visit of the year; ?basis=period compares two windows of the year. ?grain=indicator|teacher|classroom|school. Scoped to the caller’s own ITW role and assigned schools."}},{"name":"GET /itw/compare/visits — Visits to choose two of for a side-by-side comparison","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/compare/visits","host":["{{baseUrl}}"],"path":["itw","compare","visits"]},"description":"Visits to choose two of for a side-by-side comparison"}},{"name":"GET /itw/compare/pair — Two visits side by side, question by question, with the observer’s evidence","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/compare/pair","host":["{{baseUrl}}"],"path":["itw","compare","pair"]},"description":"Two visits side by side, question by question, with the observer’s evidence"}},{"name":"GET /itw/compare/export — The visit comparison as CSV (emits ItwWalkthroughsExported)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/compare/export","host":["{{baseUrl}}"],"path":["itw","compare","export"]},"description":"text/csv. Takes the same query as GET /v1/itw/compare."}},{"name":"GET /itw/reports — Reports index: school reports and saved AI reports","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/reports","host":["{{baseUrl}}"],"path":["itw","reports"]},"description":"Reports index: school reports and saved AI reports"}},{"name":"GET /itw/reports/school/{id} — A printable school report","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/reports/school/{id}","host":["{{baseUrl}}"],"path":["itw","reports","school","{id}"]},"description":"A printable school report"}},{"name":"GET /itw/reports/ai/{id} — A saved AI report","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/reports/ai/{id}","host":["{{baseUrl}}"],"path":["itw","reports","ai","{id}"]},"description":"A saved AI report"}},{"name":"GET /itw/export/walkthroughs — Completed walkthroughs as CSV (emits ItwWalkthroughsExported)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/export/walkthroughs","host":["{{baseUrl}}"],"path":["itw","export","walkthroughs"]},"description":"text/csv. ?year=<school year id>|all; default the current year."}},{"name":"GET /itw/rubric — How scoring works: the live rubric","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/rubric","host":["{{baseUrl}}"],"path":["itw","rubric"]},"description":"How scoring works: the live rubric"}},{"name":"GET /itw/schools — Schools with teacher and walkthrough counts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/schools","host":["{{baseUrl}}"],"path":["itw","schools"]},"description":"Schools with teacher and walkthrough counts"}},{"name":"GET /itw/teachers — Teachers (DEP staff) with walkthrough counts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/teachers","host":["{{baseUrl}}"],"path":["itw","teachers"]},"description":"Teachers (DEP staff) with walkthrough counts"}},{"name":"GET /itw/teachers/{personId}/walkthroughs — One teacher’s walkthroughs and follow-ups","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/teachers/{personId}/walkthroughs","host":["{{baseUrl}}"],"path":["itw","teachers","{personId}","walkthroughs"]},"description":"One teacher’s walkthroughs and follow-ups"}},{"name":"POST /itw/assistant/messages — Ask the ITW assistant; returns at once, poll the message","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itw/assistant/messages","host":["{{baseUrl}}"],"path":["itw","assistant","messages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask the ITW assistant; returns at once, poll the message"}},{"name":"GET /itw/assistant/messages/{id} — An assistant answer, as far as it has got","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/assistant/messages/{id}","host":["{{baseUrl}}"],"path":["itw","assistant","messages","{id}"]},"description":"An assistant answer, as far as it has got"}},{"name":"GET /itw/assistant/conversation — Your most recent assistant conversation (last 12 hours)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itw/assistant/conversation","host":["{{baseUrl}}"],"path":["itw","assistant","conversation"]},"description":"Your most recent assistant conversation (last 12 hours)"}},{"name":"DELETE /itw/assistant/conversations/{id} — Clear an assistant conversation (emits ItwAiActivity)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/itw/assistant/conversations/{id}","host":["{{baseUrl}}"],"path":["itw","assistant","conversations","{id}"]},"description":"Clear an assistant conversation (emits ItwAiActivity)"}},{"name":"POST /itw/assistant/email-drafts/{id}/send — Send an email the assistant drafted (emits ItwAiActivity)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itw/assistant/email-drafts/{id}/send","host":["{{baseUrl}}"],"path":["itw","assistant","email-drafts","{id}","send"]},"description":"Send an email the assistant drafted (emits ItwAiActivity)"}}]},{"name":"Instructional Review Walkthroughs","item":[{"name":"GET /irw/context — IRW: your IRW role, flags and menu, school years and the current round","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/context","host":["{{baseUrl}}"],"path":["irw","context"]},"description":"IRW: your IRW role, flags and menu, school years and the current round"}},{"name":"GET /irw/menu — IRW: the sidebar items your IRW role shows (null when you are not a member)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/menu","host":["{{baseUrl}}"],"path":["irw","menu"]},"description":"IRW: the sidebar items your IRW role shows (null when you are not a member)"}},{"name":"GET /irw/app-feedback — Feedback about IRW: your own notes, and the inbox for those who hold it","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/app-feedback","host":["{{baseUrl}}"],"path":["irw","app-feedback"]},"description":"Feedback about IRW: your own notes, and the inbox for those who hold it"}},{"name":"POST /irw/app-feedback — Send feedback about IRW","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/app-feedback","host":["{{baseUrl}}"],"path":["irw","app-feedback"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send feedback about IRW"}},{"name":"PATCH /irw/app-feedback/{id} — Set a feedback note’s status, or reply to it","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/app-feedback/{id}","host":["{{baseUrl}}"],"path":["irw","app-feedback","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set a feedback note’s status, or reply to it"}},{"name":"POST /irw/assistant/messages — Ask the IRW assistant; returns at once, poll the message","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/assistant/messages","host":["{{baseUrl}}"],"path":["irw","assistant","messages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask the IRW assistant; returns at once, poll the message"}},{"name":"GET /irw/assistant/messages/{id} — An assistant answer, as far as it has got","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/assistant/messages/{id}","host":["{{baseUrl}}"],"path":["irw","assistant","messages","{id}"]},"description":"An assistant answer, as far as it has got"}},{"name":"GET /irw/assistant/conversation — Your most recent assistant conversation (last 12 hours)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/assistant/conversation","host":["{{baseUrl}}"],"path":["irw","assistant","conversation"]},"description":"Your most recent assistant conversation (last 12 hours)"}},{"name":"DELETE /irw/assistant/conversations/{id} — Clear an assistant conversation (emits IrwAiActivity)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/assistant/conversations/{id}","host":["{{baseUrl}}"],"path":["irw","assistant","conversations","{id}"]},"description":"Clear an assistant conversation (emits IrwAiActivity)"}},{"name":"POST /irw/assistant/email-drafts/{id}/send — Send an email the assistant drafted (held unless assistant email is on; emits IrwAiActivity)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/irw/assistant/email-drafts/{id}/send","host":["{{baseUrl}}"],"path":["irw","assistant","email-drafts","{id}","send"]},"description":"Send an email the assistant drafted (held unless assistant email is on; emits IrwAiActivity)"}},{"name":"GET /irw/reports/ai/{id} — A saved AI report","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/reports/ai/{id}","host":["{{baseUrl}}"],"path":["irw","reports","ai","{id}"]},"description":"A saved AI report"}},{"name":"GET /irw/members — IRW members and their roles","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/members","host":["{{baseUrl}}"],"path":["irw","members"]},"description":"IRW members and their roles"}},{"name":"POST /irw/members — Add or update an IRW member (emits IrwMemberChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/members","host":["{{baseUrl}}"],"path":["irw","members"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add or update an IRW member (emits IrwMemberChanged)"}},{"name":"GET /irw/members/candidates — Find DEP users to add to IRW","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/members/candidates","host":["{{baseUrl}}"],"path":["irw","members","candidates"]},"description":"Find DEP users to add to IRW"}},{"name":"PATCH /irw/members/{id}/active — Activate or deactivate an IRW member (emits IrwMemberChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/members/{id}/active","host":["{{baseUrl}}"],"path":["irw","members","{id}","active"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Activate or deactivate an IRW member (emits IrwMemberChanged)"}},{"name":"POST /irw/members/import — Import IRW members from CSV (emits IrwMemberChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/members/import","host":["{{baseUrl}}"],"path":["irw","members","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Import IRW members from CSV (emits IrwMemberChanged)"}},{"name":"GET /irw/settings — IRW settings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/settings","host":["{{baseUrl}}"],"path":["irw","settings"]},"description":"IRW settings"}},{"name":"PUT /irw/settings/letterhead — Save the report letterhead (emits IrwSettingsUpdated)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/settings/letterhead","host":["{{baseUrl}}"],"path":["irw","settings","letterhead"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save the report letterhead (emits IrwSettingsUpdated)"}},{"name":"PUT /irw/settings/rounds — Set the current round and rating bands (emits IrwSettingsUpdated)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/settings/rounds","host":["{{baseUrl}}"],"path":["irw","settings","rounds"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set the current round and rating bands (emits IrwSettingsUpdated)"}},{"name":"PUT /irw/settings/sandbox — Mark sandbox schools for testers (emits IrwSettingsUpdated)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/settings/sandbox","host":["{{baseUrl}}"],"path":["irw","settings","sandbox"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark sandbox schools for testers (emits IrwSettingsUpdated)"}},{"name":"PUT /irw/settings/walkthrough — Academic Excellence form options: required fields, and the district half of the feedback-send switch (emits IrwSettingsUpdated)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/settings/walkthrough","host":["{{baseUrl}}"],"path":["irw","settings","walkthrough"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Academic Excellence form options: required fields, and the district half of the feedback-send switch (emits IrwSettingsUpdated)"}},{"name":"PUT /irw/settings/ai — Turn the IRW assistant, and assistant email, on or off (emits IrwSettingsUpdated)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/settings/ai","host":["{{baseUrl}}"],"path":["irw","settings","ai"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Turn the IRW assistant, and assistant email, on or off (emits IrwSettingsUpdated)"}},{"name":"GET /irw/new-year — New-year wizard: readiness, years, templates, schools","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/new-year","host":["{{baseUrl}}"],"path":["irw","new-year"]},"description":"New-year wizard: readiness, years, templates, schools"}},{"name":"POST /irw/new-year — Start a new walkthrough year (emits IrwTemplateCloned, IrwNewYearStarted, IrwVisitScheduled)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/new-year","host":["{{baseUrl}}"],"path":["irw","new-year"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a new walkthrough year (emits IrwTemplateCloned, IrwNewYearStarted, IrwVisitScheduled)"}},{"name":"GET /irw/schools — Schools in this district, with their walkthrough history","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/schools","host":["{{baseUrl}}"],"path":["irw","schools"]},"description":"Schools in this district, with their walkthrough history"}},{"name":"POST /irw/schools — Add a school to the district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/schools","host":["{{baseUrl}}"],"path":["irw","schools"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a school to the district"}},{"name":"PATCH /irw/schools/{id} — Edit a school, deactivate it, or mark it a sandbox school","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/schools/{id}","host":["{{baseUrl}}"],"path":["irw","schools","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a school, deactivate it, or mark it a sandbox school"}},{"name":"GET /irw/templates — Walkthrough templates","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/templates","host":["{{baseUrl}}"],"path":["irw","templates"]},"description":"Walkthrough templates"}},{"name":"POST /irw/templates — Create a template (emits IrwTemplateCreated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/templates","host":["{{baseUrl}}"],"path":["irw","templates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a template (emits IrwTemplateCreated)"}},{"name":"GET /irw/templates/{id} — One template with its teams, sections and indicators","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/templates/{id}","host":["{{baseUrl}}"],"path":["irw","templates","{id}"]},"description":"One template with its teams, sections and indicators"}},{"name":"PUT /irw/templates/{id} — Save a template (409 when locked; emits IrwTemplateUpdated)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/templates/{id}","host":["{{baseUrl}}"],"path":["irw","templates","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save a template (409 when locked; emits IrwTemplateUpdated)"}},{"name":"DELETE /irw/templates/{id} — Delete a template with no visits (soft; emits IrwTemplateDeleted)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/templates/{id}","host":["{{baseUrl}}"],"path":["irw","templates","{id}"]},"description":"Delete a template with no visits (soft; emits IrwTemplateDeleted)"}},{"name":"POST /irw/templates/{id}/clone — Clone a template into a school year, with rosters (emits IrwTemplateCloned)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/templates/{id}/clone","host":["{{baseUrl}}"],"path":["irw","templates","{id}","clone"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Clone a template into a school year, with rosters (emits IrwTemplateCloned)"}},{"name":"GET /irw/schools/{schoolId}/files — Files kept for a school (IRW school files)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/schools/{schoolId}/files","host":["{{baseUrl}}"],"path":["irw","schools","{schoolId}","files"]},"description":"Files kept for a school (IRW school files)"}},{"name":"POST /irw/schools/{schoolId}/files — Upload a school file (multipart \"file\", optional \"title\", \"description\"; emits IrwSchoolFileUploaded)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/irw/schools/{schoolId}/files","host":["{{baseUrl}}"],"path":["irw","schools","{schoolId}","files"]},"description":"Upload a school file (multipart \"file\", optional \"title\", \"description\"; emits IrwSchoolFileUploaded)"}},{"name":"GET /irw/school-files/{id}/file — Open a school file (inline; byte ranges for audio)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/school-files/{id}/file","host":["{{baseUrl}}"],"path":["irw","school-files","{id}","file"]},"description":"Open a school file (inline; byte ranges for audio)"}},{"name":"DELETE /irw/school-files/{id} — Delete a school file (emits IrwSchoolFileDeleted)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/school-files/{id}","host":["{{baseUrl}}"],"path":["irw","school-files","{id}"]},"description":"Delete a school file (emits IrwSchoolFileDeleted)"}},{"name":"GET /irw/visits — Walkthrough visits for a year and round","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/visits","host":["{{baseUrl}}"],"path":["irw","visits"]},"description":"Walkthrough visits for a year and round"}},{"name":"POST /irw/visits — Schedule one visit (locks the template; emits IrwVisitScheduled)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visits","host":["{{baseUrl}}"],"path":["irw","visits"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Schedule one visit (locks the template; emits IrwVisitScheduled)"}},{"name":"GET /irw/visits/options — Schools, templates and already-scheduled schools for the new-visit and schedule screens","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/visits/options","host":["{{baseUrl}}"],"path":["irw","visits","options"]},"description":"Schools, templates and already-scheduled schools for the new-visit and schedule screens"}},{"name":"POST /irw/visits/bulk — Schedule the same template at many schools (skips schools already visited this round)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visits/bulk","host":["{{baseUrl}}"],"path":["irw","visits","bulk"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Schedule the same template at many schools (skips schools already visited this round)"}},{"name":"GET /irw/visits/{id} — One visit: teams, progress, removed teams, review state","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/visits/{id}","host":["{{baseUrl}}"],"path":["irw","visits","{id}"]},"description":"One visit: teams, progress, removed teams, review state"}},{"name":"PATCH /irw/visits/{id} — Change a visit’s date or notes (emits IrwVisitUpdated)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visits/{id}","host":["{{baseUrl}}"],"path":["irw","visits","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a visit’s date or notes (emits IrwVisitUpdated)"}},{"name":"DELETE /irw/visits/{id} — Delete a visit (soft; emits IrwVisitDeleted)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/visits/{id}","host":["{{baseUrl}}"],"path":["irw","visits","{id}"]},"description":"Delete a visit (soft; emits IrwVisitDeleted)"}},{"name":"PATCH /irw/visits/{id}/status — Start a visit (completion goes through lock-review)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visits/{id}/status","host":["{{baseUrl}}"],"path":["irw","visits","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a visit (completion goes through lock-review)"}},{"name":"POST /irw/visits/{id}/lock-review — Lock the review: the visit is completed","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/irw/visits/{id}/lock-review","host":["{{baseUrl}}"],"path":["irw","visits","{id}","lock-review"]},"description":"Lock the review: the visit is completed"}},{"name":"POST /irw/visits/{id}/reopen-review — Re-open a locked review (back to Under Review)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/irw/visits/{id}/reopen-review","host":["{{baseUrl}}"],"path":["irw","visits","{id}","reopen-review"]},"description":"Re-open a locked review (back to Under Review)"}},{"name":"POST /irw/visits/{id}/reset — Reset a visit: clear every score and result (emits IrwVisitReset)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/irw/visits/{id}/reset","host":["{{baseUrl}}"],"path":["irw","visits","{id}","reset"]},"description":"Reset a visit: clear every score and result (emits IrwVisitReset)"}},{"name":"GET /irw/teachers — The PER_TEACHER walkthrough roster of every school","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/teachers","host":["{{baseUrl}}"],"path":["irw","teachers"]},"description":"The PER_TEACHER walkthrough roster of every school"}},{"name":"POST /irw/teachers/roster — Take a person off a school’s walkthrough roster, or put them back on","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/teachers/roster","host":["{{baseUrl}}"],"path":["irw","teachers","roster"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Take a person off a school’s walkthrough roster, or put them back on"}},{"name":"GET /irw/teams — Who is on which team, per template (standing rosters)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/teams","host":["{{baseUrl}}"],"path":["irw","teams"]},"description":"Who is on which team, per template (standing rosters)"}},{"name":"POST /irw/teams/assignments — Put a member on a team for every visit of its template (emits IrwTeamRosterChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/teams/assignments","host":["{{baseUrl}}"],"path":["irw","teams","assignments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Put a member on a team for every visit of its template (emits IrwTeamRosterChanged)"}},{"name":"DELETE /irw/teams/assignments — Take a member off a team (emits IrwTeamRosterChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/teams/assignments","host":["{{baseUrl}}"],"path":["irw","teams","assignments"]},"description":"Take a member off a team (emits IrwTeamRosterChanged)"}},{"name":"GET /irw/visit-teams/{id}/members — A visit team’s members and who can be added","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/members","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","members"]},"description":"A visit team’s members and who can be added"}},{"name":"POST /irw/visit-teams/{id}/members — Add a member to a visit team (also the template roster and open visits)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/members","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","members"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a member to a visit team (also the template roster and open visits)"}},{"name":"PATCH /irw/visit-teams/{id}/members/{memberId} — \"Walking now\" toggle","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/members/{memberId}","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","members","{memberId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"\"Walking now\" toggle"}},{"name":"DELETE /irw/visit-teams/{id}/members/{memberId} — Remove a member from a visit team (and the template roster)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/members/{memberId}","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","members","{memberId}"]},"description":"Remove a member from a visit team (and the template roster)"}},{"name":"GET /irw/visit-teams/{id}/sections — Who scores which section","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/sections","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","sections"]},"description":"Who scores which section"}},{"name":"PUT /irw/visit-teams/{id}/sections — Replace the section assignments (emits IrwSectionsAssigned)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/sections","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","sections"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Replace the section assignments (emits IrwSectionsAssigned)"}},{"name":"PATCH /irw/visit-teams/{id} — Save the narrative or mark the team complete / incomplete","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save the narrative or mark the team complete / incomplete"}},{"name":"GET /irw/visit-teams/{id} — The scoring screen: questions, rooms/teachers, answers, locks, flags, evidence","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}"]},"description":"The scoring screen: questions, rooms/teachers, answers, locks, flags, evidence"}},{"name":"POST /irw/visit-teams/{id}/lock — Lock Team: % met written, AI narrative drafted (emits IrwTeamLocked)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/lock","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","lock"]},"description":"Lock Team: % met written, AI narrative drafted (emits IrwTeamLocked)"}},{"name":"DELETE /irw/visit-teams/{id}/lock — Unlock a team for editing (emits IrwTeamUnlocked)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/lock","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","lock"]},"description":"Unlock a team for editing (emits IrwTeamUnlocked)"}},{"name":"POST /irw/visit-teams/{id}/remove — Remove a team from this walkthrough (data kept)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/remove","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","remove"]},"description":"Remove a team from this walkthrough (data kept)"}},{"name":"POST /irw/visit-teams/{id}/restore — Restore a removed team","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/restore","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","restore"]},"description":"Restore a removed team"}},{"name":"POST /irw/visit-teams/{id}/reset — Reset Team: clear its scores and flags, keep rooms/teachers (emits IrwTeamReset)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/reset","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","reset"]},"description":"Reset Team: clear its scores and flags, keep rooms/teachers (emits IrwTeamReset)"}},{"name":"POST /irw/visit-teams/{id}/entities — Add a room or a teacher (from the school’s DEP staff roster)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/entities","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","entities"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a room or a teacher (from the school’s DEP staff roster)"}},{"name":"DELETE /irw/visit-teams/{id}/entities/{entityId} — Remove a room or teacher and its answers","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/entities/{entityId}","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","entities","{entityId}"]},"description":"Remove a room or teacher and its answers"}},{"name":"POST /irw/visit-teams/{id}/scores — Save one answer (emits IrwScoresSaved)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/scores","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","scores"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save one answer (emits IrwScoresSaved)"}},{"name":"PATCH /irw/visit-teams/{id}/entities/{entityId}/header — Save the observation header: observer, content area, grade levels, Evidence and Next Steps (emits IrwScoresSaved)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/entities/{entityId}/header","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","entities","{entityId}","header"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save the observation header: observer, content area, grade levels, Evidence and Next Steps (emits IrwScoresSaved)"}},{"name":"POST /irw/visit-teams/{id}/lock-mine — Lock My Scores (emits IrwScoresLocked)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/lock-mine","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","lock-mine"]},"description":"Lock My Scores (emits IrwScoresLocked)"}},{"name":"DELETE /irw/visit-teams/{id}/scores/{scoreId}/lock — Unlock one answer (emits IrwScoreUnlocked)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/scores/{scoreId}/lock","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","scores","{scoreId}","lock"]},"description":"Unlock one answer (emits IrwScoreUnlocked)"}},{"name":"GET /irw/visit-teams/{id}/previous — Last school year’s answers for this team at this school","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/previous","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","previous"]},"description":"Last school year’s answers for this team at this school"}},{"name":"POST /irw/visit-teams/{id}/email-summary — Email this team’s review summary (PDF) to anyone, at any time","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/email-summary","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","email-summary"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Email this team’s review summary (PDF) to anyone, at any time"}},{"name":"GET /irw/visit-teams/{id}/summary-pdf — This team’s review summary as a PDF","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/summary-pdf","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","summary-pdf"]},"description":"This team’s review summary as a PDF"}},{"name":"POST /irw/visit-teams/{id}/generate-summary — Draft the team narrative with AI (preview, or save)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/generate-summary","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","generate-summary"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Draft the team narrative with AI (preview, or save)"}},{"name":"POST /irw/visit-teams/{id}/entities/{entityId}/indicators/{indicatorId}/attachments — Attach a photo or PDF to an answer (multipart \"file\"; emits IrwEvidenceUploaded)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/entities/{entityId}/indicators/{indicatorId}/attachments","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","entities","{entityId}","indicators","{indicatorId}","attachments"]},"description":"Attach a photo or PDF to an answer (multipart \"file\"; emits IrwEvidenceUploaded)"}},{"name":"GET /irw/score-attachments/{id}/file — Open an evidence file","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/score-attachments/{id}/file","host":["{{baseUrl}}"],"path":["irw","score-attachments","{id}","file"]},"description":"Open an evidence file"}},{"name":"DELETE /irw/score-attachments/{id} — Remove evidence from an answer (emits IrwEvidenceDeleted)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/score-attachments/{id}","host":["{{baseUrl}}"],"path":["irw","score-attachments","{id}"]},"description":"Remove evidence from an answer (emits IrwEvidenceDeleted)"}},{"name":"GET /irw/visits/{id}/flags — Flagged and commended answers on a visit (Remediation Review)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/visits/{id}/flags","host":["{{baseUrl}}"],"path":["irw","visits","{id}","flags"]},"description":"Flagged and commended answers on a visit (Remediation Review)"}},{"name":"POST /irw/visit-teams/{id}/flags — Flag for remediation, commend, switch or clear an answer","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/flags","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","flags"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Flag for remediation, commend, switch or clear an answer"}},{"name":"POST /irw/visits/{id}/flags/resolve — Resolve flags with notes (remediation answers become Yes; emits IrwFlagsResolved)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visits/{id}/flags/resolve","host":["{{baseUrl}}"],"path":["irw","visits","{id}","flags","resolve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Resolve flags with notes (remediation answers become Yes; emits IrwFlagsResolved)"}},{"name":"GET /irw/review-cycles — Is this round’s review open or closed","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/review-cycles","host":["{{baseUrl}}"],"path":["irw","review-cycles"]},"description":"Is this round’s review open or closed"}},{"name":"POST /irw/review-cycles/close — Close a round’s review: its data is frozen (emits IrwReviewCycleClosed)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/review-cycles/close","host":["{{baseUrl}}"],"path":["irw","review-cycles","close"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Close a round’s review: its data is frozen (emits IrwReviewCycleClosed)"}},{"name":"POST /irw/review-cycles/reopen — Reopen a closed round (emits IrwReviewCycleReopened)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/review-cycles/reopen","host":["{{baseUrl}}"],"path":["irw","review-cycles","reopen"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reopen a closed round (emits IrwReviewCycleReopened)"}},{"name":"GET /irw/reports — IRW reports: review management, superintendent and school reports by year and round","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/reports","host":["{{baseUrl}}"],"path":["irw","reports"]},"description":"IRW reports: review management, superintendent and school reports by year and round"}},{"name":"GET /irw/reports/summary — School summaries: schools with a school report in a round","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/reports/summary","host":["{{baseUrl}}"],"path":["irw","reports","summary"]},"description":"School summaries: schools with a school report in a round"}},{"name":"GET /irw/reports/summary/{visitId} — One school summary: live overall score, rating, team scores, overview, next steps","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/reports/summary/{visitId}","host":["{{baseUrl}}"],"path":["irw","reports","summary","{visitId}"]},"description":"One school summary: live overall score, rating, team scores, overview, next steps"}},{"name":"POST /irw/reports/summary/{visitId}/email — Email the school visit summary at any time: the approved report summary, or the live scores before one exists","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/reports/summary/{visitId}/email","host":["{{baseUrl}}"],"path":["irw","reports","summary","{visitId}","email"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Email the school visit summary at any time: the approved report summary, or the live scores before one exists"}},{"name":"GET /irw/reports/summary/{visitId}/live-pdf — School visit summary PDF at any time (the approved report summary, or the live scores)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/reports/summary/{visitId}/live-pdf","host":["{{baseUrl}}"],"path":["irw","reports","summary","{visitId}","live-pdf"]},"description":"School visit summary PDF at any time (the approved report summary, or the live scores)"}},{"name":"GET /irw/reports/visit/{visitId} — Report state for a visit (for the visit page buttons)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/reports/visit/{visitId}","host":["{{baseUrl}}"],"path":["irw","reports","visit","{visitId}"]},"description":"Report state for a visit (for the visit page buttons)"}},{"name":"POST /irw/reports/school — Generate the school report for a visit (emits IrwReportGenerated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/reports/school","host":["{{baseUrl}}"],"path":["irw","reports","school"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generate the school report for a visit (emits IrwReportGenerated)"}},{"name":"POST /irw/reports/superintendent — Generate the superintendent report for a year and round (emits IrwReportGenerated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/reports/superintendent","host":["{{baseUrl}}"],"path":["irw","reports","superintendent"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generate the superintendent report for a year and round (emits IrwReportGenerated)"}},{"name":"GET /irw/reports/{id} — One report for the editor","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/reports/{id}","host":["{{baseUrl}}"],"path":["irw","reports","{id}"]},"description":"One report for the editor"}},{"name":"PATCH /irw/reports/{id} — Edit a report, or approve / publish / revert it (emits IrwReportUpdated / IrwReportStatusChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/reports/{id}","host":["{{baseUrl}}"],"path":["irw","reports","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a report, or approve / publish / revert it (emits IrwReportUpdated / IrwReportStatusChanged)"}},{"name":"DELETE /irw/reports/{id} — Delete a report (current year, open round; soft; emits IrwReportDeleted)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/reports/{id}","host":["{{baseUrl}}"],"path":["irw","reports","{id}"]},"description":"Delete a report (current year, open round; soft; emits IrwReportDeleted)"}},{"name":"POST /irw/reports/{id}/next-steps — Draft next steps with AI (preview by default)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/reports/{id}/next-steps","host":["{{baseUrl}}"],"path":["irw","reports","{id}","next-steps"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Draft next steps with AI (preview by default)"}},{"name":"POST /irw/reports/{id}/addendum-file — Attach the addendum document (multipart field \"file\"; PDF, DOCX or image)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/irw/reports/{id}/addendum-file","host":["{{baseUrl}}"],"path":["irw","reports","{id}","addendum-file"]},"description":"Attach the addendum document (multipart field \"file\"; PDF, DOCX or image)"}},{"name":"GET /irw/reports/{id}/addendum-file — View or download the addendum document (binary)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/reports/{id}/addendum-file","host":["{{baseUrl}}"],"path":["irw","reports","{id}","addendum-file"]},"description":"View or download the addendum document (binary)"}},{"name":"DELETE /irw/reports/{id}/addendum-file — Remove the addendum document","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/reports/{id}/addendum-file","host":["{{baseUrl}}"],"path":["irw","reports","{id}","addendum-file"]},"description":"Remove the addendum document"}},{"name":"POST /irw/reports/{id}/email — Email the report PDF to the principal (approved or published; emits IrwReportEmailed)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/reports/{id}/email","host":["{{baseUrl}}"],"path":["irw","reports","{id}","email"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Email the report PDF to the principal (approved or published; emits IrwReportEmailed)"}},{"name":"GET /irw/reports/{id}/pdf — Report PDF (school: comprehensive / condensed / summary; superintendent)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/reports/{id}/pdf","host":["{{baseUrl}}"],"path":["irw","reports","{id}","pdf"]},"description":"Binary application/pdf."}},{"name":"GET /irw/reports/summary/{visitId}/pdf — School summary PDF with the live overall score","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/reports/summary/{visitId}/pdf","host":["{{baseUrl}}"],"path":["irw","reports","summary","{visitId}","pdf"]},"description":"School summary PDF with the live overall score"}},{"name":"GET /irw/pdf/flagged-items/{visitId} — Flagged items report for a visit (PDF)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/pdf/flagged-items/{visitId}","host":["{{baseUrl}}"],"path":["irw","pdf","flagged-items","{visitId}"]},"description":"Flagged items report for a visit (PDF)"}},{"name":"POST /irw/pdf/escalation/{visitId} — Escalation report (Round 2+): escalates still-open Round 1 items, then renders the PDF (emits IrwFlagsEscalated)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/irw/pdf/escalation/{visitId}","host":["{{baseUrl}}"],"path":["irw","pdf","escalation","{visitId}"]},"description":"Escalation report (Round 2+): escalates still-open Round 1 items, then renders the PDF (emits IrwFlagsEscalated)"}},{"name":"GET /irw/status/pdf — Audit status PDF with the current filters","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/status/pdf","host":["{{baseUrl}}"],"path":["irw","status","pdf"]},"description":"Audit status PDF with the current filters"}},{"name":"GET /irw/dashboard — IRW home dashboard (executive or standard, by IRW role)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/dashboard","host":["{{baseUrl}}"],"path":["irw","dashboard"]},"description":"IRW home dashboard (executive or standard, by IRW role)"}},{"name":"GET /irw/status — Audit status: one row per active team this school year","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/status","host":["{{baseUrl}}"],"path":["irw","status"]},"description":"Audit status: one row per active team this school year"}},{"name":"POST /irw/status/email — Email the audit status PDF (emits IrwReportEmailed)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/status/email","host":["{{baseUrl}}"],"path":["irw","status","email"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Email the audit status PDF (emits IrwReportEmailed)"}},{"name":"GET /irw/compare — Year-over-year comparison of completed walkthroughs","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/compare","host":["{{baseUrl}}"],"path":["irw","compare"]},"description":"Year-over-year comparison of completed walkthroughs"}},{"name":"GET /irw/usage — IRW usage for this district (admin roles)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/usage","host":["{{baseUrl}}"],"path":["irw","usage"]},"description":"IRW usage for this district (admin roles)"}},{"name":"GET /irw/usage/users/{userId} — One member’s IRW activity in a date range","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/usage/users/{userId}","host":["{{baseUrl}}"],"path":["irw","usage","users","{userId}"]},"description":"One member’s IRW activity in a date range"}},{"name":"GET /irw/activity — IRW activity log (event log, Irw* events)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/activity","host":["{{baseUrl}}"],"path":["irw","activity"]},"description":"IRW activity log (event log, Irw* events)"}},{"name":"GET /irw/builder/meta — Report builder sources, dimensions, measures and rounds","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/builder/meta","host":["{{baseUrl}}"],"path":["irw","builder","meta"]},"description":"Report builder sources, dimensions, measures and rounds"}},{"name":"POST /irw/builder/run — Run a report builder config","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/builder/run","host":["{{baseUrl}}"],"path":["irw","builder","run"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Run a report builder config"}},{"name":"POST /irw/builder/pdf — Report builder results as a PDF (binary)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/builder/pdf","host":["{{baseUrl}}"],"path":["irw","builder","pdf"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Report builder results as a PDF (binary)"}},{"name":"POST /irw/builder/email — Email report builder results (table + PDF; emits IrwReportEmailed)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/builder/email","host":["{{baseUrl}}"],"path":["irw","builder","email"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Email report builder results (table + PDF; emits IrwReportEmailed)"}},{"name":"GET /irw/builder/saved — Your saved reports and the ones shared in this district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/builder/saved","host":["{{baseUrl}}"],"path":["irw","builder","saved"]},"description":"Your saved reports and the ones shared in this district"}},{"name":"POST /irw/builder/saved — Save a report (emits IrwSavedReportChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/builder/saved","host":["{{baseUrl}}"],"path":["irw","builder","saved"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save a report (emits IrwSavedReportChanged)"}},{"name":"GET /irw/builder/saved/{id} — One saved report","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/builder/saved/{id}","host":["{{baseUrl}}"],"path":["irw","builder","saved","{id}"]},"description":"One saved report"}},{"name":"PATCH /irw/builder/saved/{id} — Rename, re-share or update a saved report (owner)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/builder/saved/{id}","host":["{{baseUrl}}"],"path":["irw","builder","saved","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rename, re-share or update a saved report (owner)"}},{"name":"DELETE /irw/builder/saved/{id} — Delete a saved report (owner; soft)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/builder/saved/{id}","host":["{{baseUrl}}"],"path":["irw","builder","saved","{id}"]},"description":"Delete a saved report (owner; soft)"}},{"name":"GET /irw/alerts — IRW alert center: recipients and their alert types","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/alerts","host":["{{baseUrl}}"],"path":["irw","alerts"]},"description":"IRW alert center: recipients and their alert types"}},{"name":"POST /irw/alerts/recipients — Add an alert recipient (emits IrwAlertRecipientChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/alerts/recipients","host":["{{baseUrl}}"],"path":["irw","alerts","recipients"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an alert recipient (emits IrwAlertRecipientChanged)"}},{"name":"PATCH /irw/alerts/recipients/{id} — Pause or resume a recipient (emits IrwAlertRecipientChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/alerts/recipients/{id}","host":["{{baseUrl}}"],"path":["irw","alerts","recipients","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Pause or resume a recipient (emits IrwAlertRecipientChanged)"}},{"name":"DELETE /irw/alerts/recipients/{id} — Remove a recipient (emits IrwAlertRecipientChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/alerts/recipients/{id}","host":["{{baseUrl}}"],"path":["irw","alerts","recipients","{id}"]},"description":"Remove a recipient (emits IrwAlertRecipientChanged)"}},{"name":"PUT /irw/alerts/recipients/{id}/subscriptions — Set a recipient’s alert types (emits IrwAlertRecipientChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/alerts/recipients/{id}/subscriptions","host":["{{baseUrl}}"],"path":["irw","alerts","recipients","{id}","subscriptions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set a recipient’s alert types (emits IrwAlertRecipientChanged)"}},{"name":"POST /irw/alerts/subscribe-all — Subscribe or unsubscribe every recipient to one alert type (emits IrwAlertRecipientChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/alerts/subscribe-all","host":["{{baseUrl}}"],"path":["irw","alerts","subscribe-all"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Subscribe or unsubscribe every recipient to one alert type (emits IrwAlertRecipientChanged)"}},{"name":"POST /irw/alerts/test — Send a sample alert to yourself","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/alerts/test","host":["{{baseUrl}}"],"path":["irw","alerts","test"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send a sample alert to yourself"}},{"name":"GET /irw/alerts/log — IRW alert log, grouped by dispatch","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/alerts/log","host":["{{baseUrl}}"],"path":["irw","alerts","log"]},"description":"IRW alert log, grouped by dispatch"}},{"name":"DELETE /irw/alerts/log — Clear alert log entries older than N days (emits IrwAlertLogCleared)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/alerts/log","host":["{{baseUrl}}"],"path":["irw","alerts","log"]},"description":"Clear alert log entries older than N days (emits IrwAlertLogCleared)"}},{"name":"GET /irw/calendar — IRW calendar: walkthrough visits and round milestones in a window","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/calendar","host":["{{baseUrl}}"],"path":["irw","calendar"]},"description":"IRW calendar: walkthrough visits and round milestones in a window"}},{"name":"GET /irw/content-areas — The district’s content areas, for the observation form and the settings screen","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/content-areas","host":["{{baseUrl}}"],"path":["irw","content-areas"]},"description":"The district’s content areas, for the observation form and the settings screen"}},{"name":"POST /irw/content-areas — Add a content area","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/content-areas","host":["{{baseUrl}}"],"path":["irw","content-areas"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a content area"}},{"name":"POST /irw/content-areas/bulk — Add several content areas at once (the suggested list, or a paste)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/content-areas/bulk","host":["{{baseUrl}}"],"path":["irw","content-areas","bulk"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add several content areas at once (the suggested list, or a paste)"}},{"name":"PATCH /irw/content-areas/{id} — Rename, recode, reorder or retire a content area","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/content-areas/{id}","host":["{{baseUrl}}"],"path":["irw","content-areas","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rename, recode, reorder or retire a content area"}},{"name":"DELETE /irw/content-areas/{id} — Remove an unused content area (refused once an observation has recorded it)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/content-areas/{id}","host":["{{baseUrl}}"],"path":["irw","content-areas","{id}"]},"description":"Remove an unused content area (refused once an observation has recorded it)"}},{"name":"PUT /irw/content-areas/order — Reorder the content-area list","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/content-areas/order","host":["{{baseUrl}}"],"path":["irw","content-areas","order"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reorder the content-area list"}},{"name":"GET /irw/trends — Trends over previous observations, by indicator, teacher, grade level, school or content area","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/trends","host":["{{baseUrl}}"],"path":["irw","trends"]},"description":"An observation is one teacher or room walked once inside one completed visit. ?basis=round compares the year’s visit rounds; ?basis=period compares Fall, Winter and Spring. ?grain=indicator|teacher|grade|school|contentArea. Figures are percentages with the number of observations that answered beside them: N/A and blank are left out of the score rather than counted as nothing. Scoped to the caller’s own IRW role, teams and schools."}},{"name":"GET /irw/trends/teachers — Teacher progress: every observed teacher, or with ?teacher= every visit to one teacher side by side","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/trends/teachers","host":["{{baseUrl}}"],"path":["irw","trends","teachers"]},"description":"Without ?teacher: each observed teacher with visits, observers, first and latest score and the change. With ?teacher: every completed visit to that teacher, oldest first, with each look-for's response per visit, Evidence and Next Steps. ?team= reads one walkthrough team (default Academic Excellence where it exists) or all. Same access and filters as GET /v1/irw/trends; N/A and blank are never counted as zero."}},{"name":"GET /irw/trends/teachers/pdf — Teacher progress as a PDF, with the same filters as GET /v1/irw/trends/teachers","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/trends/teachers/pdf","host":["{{baseUrl}}"],"path":["irw","trends","teachers","pdf"]},"description":"Teacher progress as a PDF, with the same filters as GET /v1/irw/trends/teachers"}},{"name":"POST /irw/trends/teachers/email — Email the teacher progress PDF (emits IrwReportEmailed)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/trends/teachers/email","host":["{{baseUrl}}"],"path":["irw","trends","teachers","email"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Email the teacher progress PDF (emits IrwReportEmailed)"}},{"name":"GET /irw/trends/observations — Previous observations themselves, newest first, under the same filters as the trends","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/trends/observations","host":["{{baseUrl}}"],"path":["irw","trends","observations"]},"description":"Previous observations themselves, newest first, under the same filters as the trends"}},{"name":"GET /irw/trends/observations/{id} — One previous observation: its scored indicators with descriptions, Evidence, Next Steps and curated feedback","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/trends/observations/{id}","host":["{{baseUrl}}"],"path":["irw","trends","observations","{id}"]},"description":"One previous observation: its scored indicators with descriptions, Evidence, Next Steps and curated feedback"}},{"name":"GET /irw/trends/export — The trends and the observations behind them as CSV","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/trends/export","host":["{{baseUrl}}"],"path":["irw","trends","export"]},"description":"text/csv. Takes the same query as GET /v1/irw/trends."}},{"name":"GET /irw/visit-teams/{id}/entities/{entityId}/feedback — One observation’s curated feedback, the live platform assembly, its recipients and its held sends","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/entities/{entityId}/feedback","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","entities","{entityId}","feedback"]},"description":"One observation’s curated feedback, the live platform assembly, its recipients and its held sends"}},{"name":"PATCH /irw/visit-teams/{id}/entities/{entityId}/feedback — Save an edit, mark reviewed, finalise, reopen, or go back to the platform’s assembly","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/entities/{entityId}/feedback","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","entities","{entityId}","feedback"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save an edit, mark reviewed, finalise, reopen, or go back to the platform’s assembly"}},{"name":"POST /irw/visit-teams/{id}/entities/{entityId}/feedback/generate — Assemble the feedback from the scored indicators, Evidence and Next Steps — or draft the prose with AI","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/entities/{entityId}/feedback/generate","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","entities","{entityId}","feedback","generate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assemble the feedback from the scored indicators, Evidence and Next Steps — or draft the prose with AI"}},{"name":"POST /irw/visit-teams/{id}/entities/{entityId}/feedback/sends — Prepare a send to the teacher and/or principal — recorded as HELD; sending is off, so nothing is emailed","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/entities/{entityId}/feedback/sends","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","entities","{entityId}","feedback","sends"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Prepare a send to the teacher and/or principal — recorded as HELD; sending is off, so nothing is emailed"}},{"name":"DELETE /irw/visit-teams/{id}/entities/{entityId}/feedback/sends/{sendId} — Cancel a held send before it ever goes","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/irw/visit-teams/{id}/entities/{entityId}/feedback/sends/{sendId}","host":["{{baseUrl}}"],"path":["irw","visit-teams","{id}","entities","{entityId}","feedback","sends","{sendId}"]},"description":"Cancel a held send before it ever goes"}},{"name":"GET /irw/feedback — Curated feedback and held sends across the walkthroughs you can read","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/feedback","host":["{{baseUrl}}"],"path":["irw","feedback"]},"description":"Curated feedback and held sends across the walkthroughs you can read"}},{"name":"GET /irw/indicators — The walkthrough indicators, with how many observations have answered each","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/indicators","host":["{{baseUrl}}"],"path":["irw","indicators"]},"description":"The walkthrough indicators, with how many observations have answered each"}},{"name":"POST /irw/indicators — Add an indicator to a section (allowed on a form already in use)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/indicators","host":["{{baseUrl}}"],"path":["irw","indicators"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an indicator to a section (allowed on a form already in use)"}},{"name":"PATCH /irw/indicators/{id} — Amend an indicator’s wording, retire or reactivate it, or change its settings","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/indicators/{id}","host":["{{baseUrl}}"],"path":["irw","indicators","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Amend an indicator’s wording, retire or reactivate it, or change its settings"}},{"name":"PUT /irw/indicators/order — Reorder one section’s indicators","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/indicators/order","host":["{{baseUrl}}"],"path":["irw","indicators","order"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reorder one section’s indicators"}},{"name":"POST /irw/indicators/import — Type or paste an indicator list (name + description) into a section; dryRun previews it","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/irw/indicators/import","host":["{{baseUrl}}"],"path":["irw","indicators","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Type or paste an indicator list (name + description) into a section; dryRun previews it"}}]},{"name":"Instructional Review Walkthroughs — public API","item":[{"name":"GET /irw/api/district — District, counts and academic years","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/api/district","host":["{{baseUrl}}"],"path":["irw","api","district"]},"description":"District, counts and academic years"}},{"name":"GET /irw/api/schools — Schools with visit and teacher counts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/api/schools","host":["{{baseUrl}}"],"path":["irw","api","schools"]},"description":"Schools with visit and teacher counts"}},{"name":"GET /irw/api/visits — Visits (filters: status, academicYear label, round)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/api/visits","host":["{{baseUrl}}"],"path":["irw","api","visits"]},"description":"Visits (filters: status, academicYear label, round)"}},{"name":"GET /irw/api/visits/{id}/summary — One visit with its teams","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/api/visits/{id}/summary","host":["{{baseUrl}}"],"path":["irw","api","visits","{id}","summary"]},"description":"One visit with its teams"}},{"name":"GET /irw/api/teams — Teams grouped by team template name","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/api/teams","host":["{{baseUrl}}"],"path":["irw","api","teams"]},"description":"Teams grouped by team template name"}},{"name":"GET /irw/api/scores/summary — Score summary of completed visits (with the response mix, content area and grade level)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/api/scores/summary","host":["{{baseUrl}}"],"path":["irw","api","scores","summary"]},"description":"Score summary of completed visits (with the response mix, content area and grade level)"}},{"name":"GET /irw/api/remediation — Remediation flag counts, by school","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/api/remediation","host":["{{baseUrl}}"],"path":["irw","api","remediation"]},"description":"Remediation flag counts, by school"}},{"name":"GET /irw/api/reports/overview — District overview: visits by status, completion, average score, remediation","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/irw/api/reports/overview","host":["{{baseUrl}}"],"path":["irw","api","reports","overview"]},"description":"District overview: visits by status, completion, average score, remediation"}}]},{"name":"Omni Tutor","item":[{"name":"GET /tutoring/context — Omni Tutor: your role, menu and home","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/context","host":["{{baseUrl}}"],"path":["tutoring","context"]},"description":"Omni Tutor: your role, menu and home"}},{"name":"GET /tutoring/menu — Omni Tutor: the sidebar items your role shows (null when you are not in the program)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/menu","host":["{{baseUrl}}"],"path":["tutoring","menu"]},"description":"Omni Tutor: the sidebar items your role shows (null when you are not in the program)"}},{"name":"GET /tutoring/members — Omni Tutor members and their roles","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/members","host":["{{baseUrl}}"],"path":["tutoring","members"]},"description":"Omni Tutor members and their roles"}},{"name":"POST /tutoring/members — Add an Omni Tutor member or change their role (emits TutorMemberChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/members","host":["{{baseUrl}}"],"path":["tutoring","members"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an Omni Tutor member or change their role (emits TutorMemberChanged)"}},{"name":"GET /tutoring/members/candidates — Find DEP users to add to Omni Tutor","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/members/candidates","host":["{{baseUrl}}"],"path":["tutoring","members","candidates"]},"description":"Find DEP users to add to Omni Tutor"}},{"name":"PATCH /tutoring/members/{id}/site-manager — Grant or remove Site manager (ADMIN only; emits TutorMemberChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/members/{id}/site-manager","host":["{{baseUrl}}"],"path":["tutoring","members","{id}","site-manager"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Grant or remove Site manager (ADMIN only; emits TutorMemberChanged)"}},{"name":"PATCH /tutoring/members/{id}/active — Deactivate or reactivate a member (ADMIN only; emits TutorMemberChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/members/{id}/active","host":["{{baseUrl}}"],"path":["tutoring","members","{id}","active"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Deactivate or reactivate a member (ADMIN only; emits TutorMemberChanged)"}},{"name":"GET /tutoring/settings — Omni Tutor program settings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/settings","host":["{{baseUrl}}"],"path":["tutoring","settings"]},"description":"Omni Tutor program settings"}},{"name":"PUT /tutoring/settings — Change program settings (program admin; emits TutorSettingsUpdated)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/settings","host":["{{baseUrl}}"],"path":["tutoring","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change program settings (program admin; emits TutorSettingsUpdated)"}},{"name":"GET /tutoring/dashboard/admin — Program overview (Omni Tutor /admin)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/dashboard/admin","host":["{{baseUrl}}"],"path":["tutoring","dashboard","admin"]},"description":"Program overview (Omni Tutor /admin)"}},{"name":"GET /tutoring/dashboard/teach — Tutor hub (Omni Tutor /teach)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/dashboard/teach","host":["{{baseUrl}}"],"path":["tutoring","dashboard","teach"]},"description":"Tutor hub (Omni Tutor /teach)"}},{"name":"GET /tutoring/dashboard/portal — Family home (Omni Tutor /portal)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/dashboard/portal","host":["{{baseUrl}}"],"path":["tutoring","dashboard","portal"]},"description":"Family home (Omni Tutor /portal)"}},{"name":"GET /tutoring/subjects — Tutoring subjects","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/subjects","host":["{{baseUrl}}"],"path":["tutoring","subjects"]},"description":"Tutoring subjects"}},{"name":"GET /tutoring/methodologies — Teaching methodologies","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/methodologies","host":["{{baseUrl}}"],"path":["tutoring","methodologies"]},"description":"Teaching methodologies"}},{"name":"GET /tutoring/skills — Skills framework","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/skills","host":["{{baseUrl}}"],"path":["tutoring","skills"]},"description":"Skills framework"}},{"name":"GET /tutoring/tutors — Tutor directory","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/tutors","host":["{{baseUrl}}"],"path":["tutoring","tutors"]},"description":"Tutor directory"}},{"name":"GET /tutoring/tutors/{id} — One tutor","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/tutors/{id}","host":["{{baseUrl}}"],"path":["tutoring","tutors","{id}"]},"description":"One tutor"}},{"name":"GET /tutoring/tutors/me — Your tutor profile","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/tutors/me","host":["{{baseUrl}}"],"path":["tutoring","tutors","me"]},"description":"Your tutor profile"}},{"name":"PUT /tutoring/tutors/me — Save your tutor profile","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/tutors/me","host":["{{baseUrl}}"],"path":["tutoring","tutors","me"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save your tutor profile"}},{"name":"POST /tutoring/tutors/me/photo — Use an uploaded image as your profile photo","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/tutors/me/photo","host":["{{baseUrl}}"],"path":["tutoring","tutors","me","photo"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Use an uploaded image as your profile photo"}},{"name":"DELETE /tutoring/tutors/me/photo — Remove your profile photo","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/tutors/me/photo","host":["{{baseUrl}}"],"path":["tutoring","tutors","me","photo"]},"description":"Remove your profile photo"}},{"name":"PUT /tutoring/tutors/me/stipend — Stipend setup: how the district pays you","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/tutors/me/stipend","host":["{{baseUrl}}"],"path":["tutoring","tutors","me","stipend"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Stipend setup: how the district pays you"}},{"name":"GET /tutoring/tutors/{id}/photo — A tutor’s uploaded profile photo (any program member)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/tutors/{id}/photo","host":["{{baseUrl}}"],"path":["tutoring","tutors","{id}","photo"]},"description":"A tutor’s uploaded profile photo (any program member)"}},{"name":"GET /tutoring/availability — Weekly hours and exceptions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/availability","host":["{{baseUrl}}"],"path":["tutoring","availability"]},"description":"Weekly hours and exceptions"}},{"name":"POST /tutoring/availability/blocks — Add weekly hours (TutorAvailabilityChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/availability/blocks","host":["{{baseUrl}}"],"path":["tutoring","availability","blocks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add weekly hours (TutorAvailabilityChanged)"}},{"name":"PUT /tutoring/availability/days/{day} — Replace one weekday’s hours (TutorAvailabilityChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/availability/days/{day}","host":["{{baseUrl}}"],"path":["tutoring","availability","days","{day}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Replace one weekday’s hours (TutorAvailabilityChanged)"}},{"name":"DELETE /tutoring/availability/blocks/{id} — Remove weekly hours (TutorAvailabilityChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/availability/blocks/{id}","host":["{{baseUrl}}"],"path":["tutoring","availability","blocks","{id}"]},"description":"Remove weekly hours (TutorAvailabilityChanged)"}},{"name":"POST /tutoring/availability/exceptions — Add a one-day exception or calendar event (TutorAvailabilityChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/availability/exceptions","host":["{{baseUrl}}"],"path":["tutoring","availability","exceptions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a one-day exception or calendar event (TutorAvailabilityChanged)"}},{"name":"DELETE /tutoring/availability/exceptions/{id} — Remove a one-day exception or calendar event (TutorAvailabilityChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/availability/exceptions/{id}","host":["{{baseUrl}}"],"path":["tutoring","availability","exceptions","{id}"]},"description":"Remove a one-day exception or calendar event (TutorAvailabilityChanged)"}},{"name":"POST /tutoring/uploads/{area} — Upload a file for a document, library resource or session prep (multipart \"file\")","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tutoring/uploads/{area}","host":["{{baseUrl}}"],"path":["tutoring","uploads","{area}"]},"description":"Upload a file for a document, library resource or session prep (multipart \"file\")"}},{"name":"GET /tutoring/files/{area}/{id} — Open an Omni Tutor file (who may: lib/file-access canOpenUpload)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/files/{area}/{id}","host":["{{baseUrl}}"],"path":["tutoring","files","{area}","{id}"]},"description":"Open an Omni Tutor file (who may: lib/file-access canOpenUpload)"}},{"name":"GET /tutoring/documents — Tutor verification documents","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/documents","host":["{{baseUrl}}"],"path":["tutoring","documents"]},"description":"Tutor verification documents"}},{"name":"POST /tutoring/documents — Add a verification document (upload the file first)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/documents","host":["{{baseUrl}}"],"path":["tutoring","documents"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a verification document (upload the file first)"}},{"name":"DELETE /tutoring/documents/{id} — Remove your document while it waits for review","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/documents/{id}","host":["{{baseUrl}}"],"path":["tutoring","documents","{id}"]},"description":"Remove your document while it waits for review"}},{"name":"GET /tutoring/families — Program families","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/families","host":["{{baseUrl}}"],"path":["tutoring","families"]},"description":"Program families"}},{"name":"GET /tutoring/students — Program students (scoped to your role)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/students","host":["{{baseUrl}}"],"path":["tutoring","students"]},"description":"Program students (scoped to your role)"}},{"name":"GET /tutoring/teach/students — Your students (tutor workspace)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/teach/students","host":["{{baseUrl}}"],"path":["tutoring","teach","students"]},"description":"Your students (tutor workspace)"}},{"name":"GET /tutoring/teach/students/{id} — One of your students (tutor workspace)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/teach/students/{id}","host":["{{baseUrl}}"],"path":["tutoring","teach","students","{id}"]},"description":"One of your students (tutor workspace)"}},{"name":"PATCH /tutoring/teach/students/{id}/notes — Edit a student’s interests and goals (emits TutorStudentChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/teach/students/{id}/notes","host":["{{baseUrl}}"],"path":["tutoring","teach","students","{id}","notes"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a student’s interests and goals (emits TutorStudentChanged)"}},{"name":"GET /tutoring/inquiries — Requests for tutoring","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/inquiries","host":["{{baseUrl}}"],"path":["tutoring","inquiries"]},"description":"Requests for tutoring"}},{"name":"POST /tutoring/inquiries — Ask the program for tutoring (TutorInquiryChanged; program staff are told in the app)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/inquiries","host":["{{baseUrl}}"],"path":["tutoring","inquiries"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask the program for tutoring (TutorInquiryChanged; program staff are told in the app)"}},{"name":"GET /tutoring/requests — Family requests for a specific tutor","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/requests","host":["{{baseUrl}}"],"path":["tutoring","requests"]},"description":"Family requests for a specific tutor"}},{"name":"POST /tutoring/requests/{id}/decision — Accept or decline a family’s request (emits TutorRequestChanged, TutorMatchChanged, TutorFamilyChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/requests/{id}/decision","host":["{{baseUrl}}"],"path":["tutoring","requests","{id}","decision"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Accept or decline a family’s request (emits TutorRequestChanged, TutorMatchChanged, TutorFamilyChanged)"}},{"name":"GET /tutoring/apply — The tutor application form (Omni Tutor /apply)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/apply","host":["{{baseUrl}}"],"path":["tutoring","apply"]},"description":"The tutor application form (Omni Tutor /apply)"}},{"name":"POST /tutoring/applications — Apply to tutor for the program (TutorApplicationChanged submitted)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/applications","host":["{{baseUrl}}"],"path":["tutoring","applications"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Apply to tutor for the program (TutorApplicationChanged submitted)"}},{"name":"GET /tutoring/applications — Tutor applications","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/applications","host":["{{baseUrl}}"],"path":["tutoring","applications"]},"description":"Tutor applications"}},{"name":"GET /tutoring/enrollments — Student–tutor matches","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/enrollments","host":["{{baseUrl}}"],"path":["tutoring","enrollments"]},"description":"Student–tutor matches"}},{"name":"GET /tutoring/sessions — Tutoring sessions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/sessions","host":["{{baseUrl}}"],"path":["tutoring","sessions"]},"description":"Tutoring sessions"}},{"name":"POST /tutoring/sessions — Schedule a session or a weekly series with one of your students (TutorSessionScheduled)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/sessions","host":["{{baseUrl}}"],"path":["tutoring","sessions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Schedule a session or a weekly series with one of your students (TutorSessionScheduled)"}},{"name":"GET /tutoring/sessions/slots — Open booking slots of a tutor","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/sessions/slots","host":["{{baseUrl}}"],"path":["tutoring","sessions","slots"]},"description":"Open booking slots of a tutor"}},{"name":"GET /tutoring/sessions/schedule-options — The tutor’s active matches for scheduling","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/sessions/schedule-options","host":["{{baseUrl}}"],"path":["tutoring","sessions","schedule-options"]},"description":"The tutor’s active matches for scheduling"}},{"name":"POST /tutoring/sessions/instant — Start a session right now with one of your students (TutorSessionScheduled)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/sessions/instant","host":["{{baseUrl}}"],"path":["tutoring","sessions","instant"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a session right now with one of your students (TutorSessionScheduled)"}},{"name":"GET /tutoring/sessions/{id} — A session room: call window, materials, live answers, prep, notes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/sessions/{id}","host":["{{baseUrl}}"],"path":["tutoring","sessions","{id}"]},"description":"A session room: call window, materials, live answers, prep, notes"}},{"name":"POST /tutoring/sessions/{id}/room — Join the session’s DEP video call (a short-lived token for the caller)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tutoring/sessions/{id}/room","host":["{{baseUrl}}"],"path":["tutoring","sessions","{id}","room"]},"description":"Join the session’s DEP video call (a short-lived token for the caller)"}},{"name":"POST /tutoring/sessions/{id}/status — Start, end or mark a session no-show (TutorSessionChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/sessions/{id}/status","host":["{{baseUrl}}"],"path":["tutoring","sessions","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start, end or mark a session no-show (TutorSessionChanged)"}},{"name":"POST /tutoring/sessions/{id}/report-unavailable — Tell program staff you cannot make this session (TutorSessionChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/sessions/{id}/report-unavailable","host":["{{baseUrl}}"],"path":["tutoring","sessions","{id}","report-unavailable"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Tell program staff you cannot make this session (TutorSessionChanged)"}},{"name":"PUT /tutoring/sessions/{id}/notes — Save session notes; a finished session is completed and its hours settled (TutorSessionNoteSaved)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/sessions/{id}/notes","host":["{{baseUrl}}"],"path":["tutoring","sessions","{id}","notes"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save session notes; a finished session is completed and its hours settled (TutorSessionNoteSaved)"}},{"name":"GET /tutoring/sessions/{id}/material-options — Lessons and resources you can attach to this session","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/sessions/{id}/material-options","host":["{{baseUrl}}"],"path":["tutoring","sessions","{id}","material-options"]},"description":"Lessons and resources you can attach to this session"}},{"name":"POST /tutoring/sessions/{id}/materials — Attach a lesson or resource (TutorSessionMaterialsChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/sessions/{id}/materials","host":["{{baseUrl}}"],"path":["tutoring","sessions","{id}","materials"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Attach a lesson or resource (TutorSessionMaterialsChanged)"}},{"name":"DELETE /tutoring/sessions/{id}/materials/{materialId} — Remove an attached lesson or resource (TutorSessionMaterialsChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/sessions/{id}/materials/{materialId}","host":["{{baseUrl}}"],"path":["tutoring","sessions","{id}","materials","{materialId}"]},"description":"Remove an attached lesson or resource (TutorSessionMaterialsChanged)"}},{"name":"POST /tutoring/sessions/{id}/reschedule — Move this session, or it and the rest of its series (TutorSessionChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/sessions/{id}/reschedule","host":["{{baseUrl}}"],"path":["tutoring","sessions","{id}","reschedule"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move this session, or it and the rest of its series (TutorSessionChanged)"}},{"name":"POST /tutoring/sessions/{id}/cancel — Cancel this session or the rest of its series; late if inside the program’s late-cancel window (TutorSessionChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/sessions/{id}/cancel","host":["{{baseUrl}}"],"path":["tutoring","sessions","{id}","cancel"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Cancel this session or the rest of its series; late if inside the program’s late-cancel window (TutorSessionChanged)"}},{"name":"POST /tutoring/sessions/{id}/prep/viewed — Mark the family’s session prep as seen by the tutor","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tutoring/sessions/{id}/prep/viewed","host":["{{baseUrl}}"],"path":["tutoring","sessions","{id}","prep","viewed"]},"description":"Mark the family’s session prep as seen by the tutor"}},{"name":"GET /tutoring/sessions/{id}/answers — Live answers for the session workspace (polled by both sides)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/sessions/{id}/answers","host":["{{baseUrl}}"],"path":["tutoring","sessions","{id}","answers"]},"description":"Live answers for the session workspace (polled by both sides)"}},{"name":"PUT /tutoring/sessions/{id}/answers — The student’s answer to a live question (family; TutorSessionAnswerSaved)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/sessions/{id}/answers","host":["{{baseUrl}}"],"path":["tutoring","sessions","{id}","answers"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The student’s answer to a live question (family; TutorSessionAnswerSaved)"}},{"name":"PUT /tutoring/sessions/{id}/answers/mark — Mark a live answer; a segment with a skill feeds mastery (TutorSessionAnswerSaved, TutorMasteryRecorded)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/sessions/{id}/answers/mark","host":["{{baseUrl}}"],"path":["tutoring","sessions","{id}","answers","mark"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark a live answer; a segment with a skill feeds mastery (TutorSessionAnswerSaved, TutorMasteryRecorded)"}},{"name":"GET /tutoring/diagnostic-templates — Diagnostic templates","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/diagnostic-templates","host":["{{baseUrl}}"],"path":["tutoring","diagnostic-templates"]},"description":"Diagnostic templates"}},{"name":"POST /tutoring/diagnostic-templates — Create a diagnostic template","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/diagnostic-templates","host":["{{baseUrl}}"],"path":["tutoring","diagnostic-templates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a diagnostic template"}},{"name":"GET /tutoring/diagnostic-templates/{id} — One diagnostic template with its questions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/diagnostic-templates/{id}","host":["{{baseUrl}}"],"path":["tutoring","diagnostic-templates","{id}"]},"description":"One diagnostic template with its questions"}},{"name":"PUT /tutoring/diagnostic-templates/{id} — Edit a diagnostic template","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/diagnostic-templates/{id}","host":["{{baseUrl}}"],"path":["tutoring","diagnostic-templates","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a diagnostic template"}},{"name":"DELETE /tutoring/diagnostic-templates/{id} — Delete a template that was never administered","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/diagnostic-templates/{id}","host":["{{baseUrl}}"],"path":["tutoring","diagnostic-templates","{id}"]},"description":"Delete a template that was never administered"}},{"name":"POST /tutoring/diagnostic-templates/{id}/questions — Add a question","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/diagnostic-templates/{id}/questions","host":["{{baseUrl}}"],"path":["tutoring","diagnostic-templates","{id}","questions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a question"}},{"name":"PUT /tutoring/diagnostic-templates/{id}/order — Reorder questions","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/diagnostic-templates/{id}/order","host":["{{baseUrl}}"],"path":["tutoring","diagnostic-templates","{id}","order"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reorder questions"}},{"name":"PUT /tutoring/diagnostic-questions/{id} — Edit a question","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/diagnostic-questions/{id}","host":["{{baseUrl}}"],"path":["tutoring","diagnostic-questions","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a question"}},{"name":"DELETE /tutoring/diagnostic-questions/{id} — Remove a question","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/diagnostic-questions/{id}","host":["{{baseUrl}}"],"path":["tutoring","diagnostic-questions","{id}"]},"description":"Remove a question"}},{"name":"GET /tutoring/diagnostic-administrations — Diagnostic runs","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/diagnostic-administrations","host":["{{baseUrl}}"],"path":["tutoring","diagnostic-administrations"]},"description":"Diagnostic runs"}},{"name":"POST /tutoring/diagnostic-administrations — Start (or resume) a diagnostic run for one of your students","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/diagnostic-administrations","host":["{{baseUrl}}"],"path":["tutoring","diagnostic-administrations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start (or resume) a diagnostic run for one of your students"}},{"name":"GET /tutoring/diagnostic-administrations/{id} — One diagnostic run (runner or result)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/diagnostic-administrations/{id}","host":["{{baseUrl}}"],"path":["tutoring","diagnostic-administrations","{id}"]},"description":"One diagnostic run (runner or result)"}},{"name":"PUT /tutoring/diagnostic-administrations/{id}/responses — Record one answer in a run","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/diagnostic-administrations/{id}/responses","host":["{{baseUrl}}"],"path":["tutoring","diagnostic-administrations","{id}","responses"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record one answer in a run"}},{"name":"POST /tutoring/diagnostic-administrations/{id}/complete — Complete a run: score it, write the summary, feed mastery","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/diagnostic-administrations/{id}/complete","host":["{{baseUrl}}"],"path":["tutoring","diagnostic-administrations","{id}","complete"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Complete a run: score it, write the summary, feed mastery"}},{"name":"GET /tutoring/diagnostics — Diagnostic summaries","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/diagnostics","host":["{{baseUrl}}"],"path":["tutoring","diagnostics"]},"description":"Diagnostic summaries"}},{"name":"GET /tutoring/learning-plans — Learning plans","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/learning-plans","host":["{{baseUrl}}"],"path":["tutoring","learning-plans"]},"description":"Learning plans"}},{"name":"POST /tutoring/learning-plans — Start a learning plan (emits TutorLearningPlanChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/learning-plans","host":["{{baseUrl}}"],"path":["tutoring","learning-plans"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a learning plan (emits TutorLearningPlanChanged)"}},{"name":"PATCH /tutoring/learning-plans/{id} — Edit a learning plan (emits TutorLearningPlanChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/learning-plans/{id}","host":["{{baseUrl}}"],"path":["tutoring","learning-plans","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a learning plan (emits TutorLearningPlanChanged)"}},{"name":"DELETE /tutoring/learning-plans/{id} — Remove a learning plan (emits TutorLearningPlanChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/learning-plans/{id}","host":["{{baseUrl}}"],"path":["tutoring","learning-plans","{id}"]},"description":"Remove a learning plan (emits TutorLearningPlanChanged)"}},{"name":"POST /tutoring/learning-plans/{id}/goals — Add a goal to a plan (emits TutorLearningPlanChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/learning-plans/{id}/goals","host":["{{baseUrl}}"],"path":["tutoring","learning-plans","{id}","goals"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a goal to a plan (emits TutorLearningPlanChanged)"}},{"name":"PUT /tutoring/learning-goals/{id} — Edit a goal (emits TutorLearningPlanChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/learning-goals/{id}","host":["{{baseUrl}}"],"path":["tutoring","learning-goals","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a goal (emits TutorLearningPlanChanged)"}},{"name":"PATCH /tutoring/learning-goals/{id} — Update a goal’s progress and status (emits TutorLearningPlanChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/learning-goals/{id}","host":["{{baseUrl}}"],"path":["tutoring","learning-goals","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a goal’s progress and status (emits TutorLearningPlanChanged)"}},{"name":"DELETE /tutoring/learning-goals/{id} — Remove a goal (emits TutorLearningPlanChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/learning-goals/{id}","host":["{{baseUrl}}"],"path":["tutoring","learning-goals","{id}"]},"description":"Remove a goal (emits TutorLearningPlanChanged)"}},{"name":"GET /tutoring/resources — Resource library","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/resources","host":["{{baseUrl}}"],"path":["tutoring","resources"]},"description":"Resource library"}},{"name":"POST /tutoring/resources — Add a library resource (emits TutorResourceChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/resources","host":["{{baseUrl}}"],"path":["tutoring","resources"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a library resource (emits TutorResourceChanged)"}},{"name":"GET /tutoring/resources/{id} — A library resource","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/resources/{id}","host":["{{baseUrl}}"],"path":["tutoring","resources","{id}"]},"description":"A library resource"}},{"name":"PATCH /tutoring/resources/{id} — Edit a library resource (own unless program admin/manager; emits TutorResourceChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/resources/{id}","host":["{{baseUrl}}"],"path":["tutoring","resources","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a library resource (own unless program admin/manager; emits TutorResourceChanged)"}},{"name":"DELETE /tutoring/resources/{id} — Remove a library resource (own unless program admin/manager; emits TutorResourceChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/resources/{id}","host":["{{baseUrl}}"],"path":["tutoring","resources","{id}"]},"description":"Remove a library resource (own unless program admin/manager; emits TutorResourceChanged)"}},{"name":"POST /tutoring/resources/import — Preview or import library resources from a CSV (emits TutorResourceChanged on commit)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/resources/import","host":["{{baseUrl}}"],"path":["tutoring","resources","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Preview or import library resources from a CSV (emits TutorResourceChanged on commit)"}},{"name":"GET /tutoring/lessons — Lesson plans","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/lessons","host":["{{baseUrl}}"],"path":["tutoring","lessons"]},"description":"Lesson plans"}},{"name":"POST /tutoring/lessons — Write a lesson plan (teach/lessons/new; emits TutorLessonChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/lessons","host":["{{baseUrl}}"],"path":["tutoring","lessons"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Write a lesson plan (teach/lessons/new; emits TutorLessonChanged)"}},{"name":"GET /tutoring/lessons/options — What the lesson screens pick from (own students, subjects, methods, skills, library)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/lessons/options","host":["{{baseUrl}}"],"path":["tutoring","lessons","options"]},"description":"What the lesson screens pick from (own students, subjects, methods, skills, library)"}},{"name":"POST /tutoring/lessons/build — Build a lesson with AI (tutoring:lesson-builder:v1; emits TutorLessonChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/lessons/build","host":["{{baseUrl}}"],"path":["tutoring","lessons","build"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Build a lesson with AI (tutoring:lesson-builder:v1; emits TutorLessonChanged)"}},{"name":"GET /tutoring/lessons/{id} — A lesson plan with its segments and resources","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/lessons/{id}","host":["{{baseUrl}}"],"path":["tutoring","lessons","{id}"]},"description":"A lesson plan with its segments and resources"}},{"name":"PATCH /tutoring/lessons/{id} — Edit a lesson (title, objective, agenda, grades, duration; emits TutorLessonChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/lessons/{id}","host":["{{baseUrl}}"],"path":["tutoring","lessons","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a lesson (title, objective, agenda, grades, duration; emits TutorLessonChanged)"}},{"name":"DELETE /tutoring/lessons/{id} — Delete a lesson (refused once a student has practised it; emits TutorLessonChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/lessons/{id}","host":["{{baseUrl}}"],"path":["tutoring","lessons","{id}"]},"description":"Delete a lesson (refused once a student has practised it; emits TutorLessonChanged)"}},{"name":"PUT /tutoring/lessons/{id}/student — Assign the plan to one of your students, or clear it to a reusable starter (emits TutorLessonChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/lessons/{id}/student","host":["{{baseUrl}}"],"path":["tutoring","lessons","{id}","student"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assign the plan to one of your students, or clear it to a reusable starter (emits TutorLessonChanged)"}},{"name":"POST /tutoring/lessons/{id}/resources — Attach a library resource (emits TutorLessonChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/lessons/{id}/resources","host":["{{baseUrl}}"],"path":["tutoring","lessons","{id}","resources"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Attach a library resource (emits TutorLessonChanged)"}},{"name":"DELETE /tutoring/lessons/{id}/resources/{resourceId} — Detach a library resource (emits TutorLessonChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/lessons/{id}/resources/{resourceId}","host":["{{baseUrl}}"],"path":["tutoring","lessons","{id}","resources","{resourceId}"]},"description":"Detach a library resource (emits TutorLessonChanged)"}},{"name":"POST /tutoring/lessons/{id}/segments — Add a segment (emits TutorLessonChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/lessons/{id}/segments","host":["{{baseUrl}}"],"path":["tutoring","lessons","{id}","segments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a segment (emits TutorLessonChanged)"}},{"name":"PUT /tutoring/lessons/{id}/segments/order — Reorder the segments (every live segment id, in the new order; emits TutorLessonChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/lessons/{id}/segments/order","host":["{{baseUrl}}"],"path":["tutoring","lessons","{id}","segments","order"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reorder the segments (every live segment id, in the new order; emits TutorLessonChanged)"}},{"name":"PATCH /tutoring/lessons/{id}/segments/{segmentId} — Edit a segment (kind, narration, prompts, measured skill; emits TutorLessonChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/lessons/{id}/segments/{segmentId}","host":["{{baseUrl}}"],"path":["tutoring","lessons","{id}","segments","{segmentId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a segment (kind, narration, prompts, measured skill; emits TutorLessonChanged)"}},{"name":"DELETE /tutoring/lessons/{id}/segments/{segmentId} — Remove a segment (emits TutorLessonChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/lessons/{id}/segments/{segmentId}","host":["{{baseUrl}}"],"path":["tutoring","lessons","{id}","segments","{segmentId}"]},"description":"Remove a segment (emits TutorLessonChanged)"}},{"name":"GET /tutoring/homework — Homework","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/homework","host":["{{baseUrl}}"],"path":["tutoring","homework"]},"description":"Homework"}},{"name":"POST /tutoring/homework — Assign homework to one of your students","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/homework","host":["{{baseUrl}}"],"path":["tutoring","homework"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assign homework to one of your students"}},{"name":"GET /tutoring/homework/options — What the new-homework form offers: your students, their sessions, library resources in your subjects, skills","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/homework/options","host":["{{baseUrl}}"],"path":["tutoring","homework","options"]},"description":"What the new-homework form offers: your students, their sessions, library resources in your subjects, skills"}},{"name":"GET /tutoring/homework/{id} — One homework assignment with its questions and answers","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/homework/{id}","host":["{{baseUrl}}"],"path":["tutoring","homework","{id}"]},"description":"One homework assignment with its questions and answers"}},{"name":"DELETE /tutoring/homework/{id} — Delete homework that has not been turned in","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/homework/{id}","host":["{{baseUrl}}"],"path":["tutoring","homework","{id}"]},"description":"Delete homework that has not been turned in"}},{"name":"PUT /tutoring/homework/{id}/mark — Mark one answer (correct / needs work / not marked) with feedback","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/homework/{id}/mark","host":["{{baseUrl}}"],"path":["tutoring","homework","{id}","mark"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark one answer (correct / needs work / not marked) with feedback"}},{"name":"PATCH /tutoring/homework/{id}/status — Mark homework complete, or reopen it for the family","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/homework/{id}/status","host":["{{baseUrl}}"],"path":["tutoring","homework","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark homework complete, or reopen it for the family"}},{"name":"PUT /tutoring/homework/{id}/answer — The family saves an answer (while the homework is assigned)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/homework/{id}/answer","host":["{{baseUrl}}"],"path":["tutoring","homework","{id}","answer"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The family saves an answer (while the homework is assigned)"}},{"name":"POST /tutoring/homework/{id}/submit — The family turns the homework in","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/homework/{id}/submit","host":["{{baseUrl}}"],"path":["tutoring","homework","{id}","submit"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The family turns the homework in"}},{"name":"GET /tutoring/practice-sessions — AI practice sessions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/practice-sessions","host":["{{baseUrl}}"],"path":["tutoring","practice-sessions"]},"description":"AI practice sessions"}},{"name":"GET /tutoring/practice-sessions/{id} — One AI practice session with its transcript","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/practice-sessions/{id}","host":["{{baseUrl}}"],"path":["tutoring","practice-sessions","{id}"]},"description":"One AI practice session with its transcript"}},{"name":"GET /tutoring/students/{studentId}/mastery — A student’s skill mastery","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/students/{studentId}/mastery","host":["{{baseUrl}}"],"path":["tutoring","students","{studentId}","mastery"]},"description":"A student’s skill mastery"}},{"name":"POST /tutoring/students/{studentId}/mastery — Record a tutor’s observation of a skill (emits TutorMasteryRecorded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/students/{studentId}/mastery","host":["{{baseUrl}}"],"path":["tutoring","students","{studentId}","mastery"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a tutor’s observation of a skill (emits TutorMasteryRecorded)"}},{"name":"GET /tutoring/students/{studentId}/mastery/profile — A student’s skill profile, subject rollup and growth curve","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/students/{studentId}/mastery/profile","host":["{{baseUrl}}"],"path":["tutoring","students","{studentId}","mastery","profile"]},"description":"A student’s skill profile, subject rollup and growth curve"}},{"name":"GET /tutoring/assessments — Assessment data sources and imports","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/assessments","host":["{{baseUrl}}"],"path":["tutoring","assessments"]},"description":"Assessment data sources and imports"}},{"name":"POST /tutoring/assessments/inspect — Read an uploaded CSV: headers, sample rows, distinct values per column","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/assessments/inspect","host":["{{baseUrl}}"],"path":["tutoring","assessments","inspect"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Read an uploaded CSV: headers, sample rows, distinct values per column"}},{"name":"POST /tutoring/assessment-sources — Save a new assessment source and its column mapping (emits TutorAssessmentImport)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/assessment-sources","host":["{{baseUrl}}"],"path":["tutoring","assessment-sources"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save a new assessment source and its column mapping (emits TutorAssessmentImport)"}},{"name":"PUT /tutoring/assessment-sources/{id} — Edit an assessment source’s mapping (emits TutorAssessmentImport)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/assessment-sources/{id}","host":["{{baseUrl}}"],"path":["tutoring","assessment-sources","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an assessment source’s mapping (emits TutorAssessmentImport)"}},{"name":"DELETE /tutoring/assessment-sources/{id} — Delete an assessment source and its mapping; imported data stays (emits TutorAssessmentImport)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/assessment-sources/{id}","host":["{{baseUrl}}"],"path":["tutoring","assessment-sources","{id}"]},"description":"Delete an assessment source and its mapping; imported data stays (emits TutorAssessmentImport)"}},{"name":"POST /tutoring/assessments/import — Preview (commit=false) or commit an assessment import (emits TutorAssessmentImport on commit)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/assessments/import","host":["{{baseUrl}}"],"path":["tutoring","assessments","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Preview (commit=false) or commit an assessment import (emits TutorAssessmentImport on commit)"}},{"name":"POST /tutoring/assessment-batches/{id}/revert — Undo an import: removes its assessments; mastery history stays (emits TutorAssessmentImport)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tutoring/assessment-batches/{id}/revert","host":["{{baseUrl}}"],"path":["tutoring","assessment-batches","{id}","revert"]},"description":"Undo an import: removes its assessments; mastery history stays (emits TutorAssessmentImport)"}},{"name":"GET /tutoring/progress-reports — Progress reports","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/progress-reports","host":["{{baseUrl}}"],"path":["tutoring","progress-reports"]},"description":"Progress reports"}},{"name":"POST /tutoring/progress-reports — Save a report draft, or save and publish (notifies the family; emits TutorProgressReportChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/progress-reports","host":["{{baseUrl}}"],"path":["tutoring","progress-reports"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save a report draft, or save and publish (notifies the family; emits TutorProgressReportChanged)"}},{"name":"GET /tutoring/progress-reports/options — Students a tutor can write reports for","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/progress-reports/options","host":["{{baseUrl}}"],"path":["tutoring","progress-reports","options"]},"description":"Students a tutor can write reports for"}},{"name":"POST /tutoring/progress-reports/draft — Draft a report with AI from the student’s sessions, mastery, goals and homework (tutoring:report-draft:v1)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/progress-reports/draft","host":["{{baseUrl}}"],"path":["tutoring","progress-reports","draft"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Draft a report with AI from the student’s sessions, mastery, goals and homework (tutoring:report-draft:v1)"}},{"name":"GET /tutoring/progress-reports/{id} — A progress report with its evidence","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/progress-reports/{id}","host":["{{baseUrl}}"],"path":["tutoring","progress-reports","{id}"]},"description":"A progress report with its evidence"}},{"name":"PATCH /tutoring/progress-reports/{id} — Edit a report; publish=true publishes a draft and notifies the family (emits TutorProgressReportChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/progress-reports/{id}","host":["{{baseUrl}}"],"path":["tutoring","progress-reports","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a report; publish=true publishes a draft and notifies the family (emits TutorProgressReportChanged)"}},{"name":"DELETE /tutoring/progress-reports/{id} — Delete a draft report (published reports stay; emits TutorProgressReportChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/progress-reports/{id}","host":["{{baseUrl}}"],"path":["tutoring","progress-reports","{id}"]},"description":"Delete a draft report (published reports stay; emits TutorProgressReportChanged)"}},{"name":"POST /tutoring/progress-reports/{id}/publish — Publish a draft and notify the family (emits TutorProgressReportChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tutoring/progress-reports/{id}/publish","host":["{{baseUrl}}"],"path":["tutoring","progress-reports","{id}","publish"]},"description":"Publish a draft and notify the family (emits TutorProgressReportChanged)"}},{"name":"GET /tutoring/message-threads — Your message threads","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/message-threads","host":["{{baseUrl}}"],"path":["tutoring","message-threads"]},"description":"Your message threads"}},{"name":"GET /tutoring/message-threads/messages — A conversation’s messages (poll with after=<last id>)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/message-threads/messages","host":["{{baseUrl}}"],"path":["tutoring","message-threads","messages"]},"description":"A conversation’s messages (poll with after=<last id>)"}},{"name":"POST /tutoring/messages — Send a message (emits TutorMessageSent; notifies the other side)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/messages","host":["{{baseUrl}}"],"path":["tutoring","messages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send a message (emits TutorMessageSent; notifies the other side)"}},{"name":"POST /tutoring/message-threads/read — Mark a conversation read","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/message-threads/read","host":["{{baseUrl}}"],"path":["tutoring","message-threads","read"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark a conversation read"}},{"name":"GET /tutoring/notifications — Your Omni Tutor notifications","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/notifications","host":["{{baseUrl}}"],"path":["tutoring","notifications"]},"description":"Your Omni Tutor notifications"}},{"name":"GET /tutoring/announcements — Program announcements","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/announcements","host":["{{baseUrl}}"],"path":["tutoring","announcements"]},"description":"Program announcements"}},{"name":"POST /tutoring/notifications/{id}/read — Mark a notification read","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tutoring/notifications/{id}/read","host":["{{baseUrl}}"],"path":["tutoring","notifications","{id}","read"]},"description":"Mark a notification read"}},{"name":"POST /tutoring/notifications/read-all — Mark every notification read","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tutoring/notifications/read-all","host":["{{baseUrl}}"],"path":["tutoring","notifications","read-all"]},"description":"Mark every notification read"}},{"name":"DELETE /tutoring/notifications/{id} — Remove a notification from your inbox","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/notifications/{id}","host":["{{baseUrl}}"],"path":["tutoring","notifications","{id}"]},"description":"Remove a notification from your inbox"}},{"name":"PUT /tutoring/notifications/prefs — Save your notification choices (emits TutorNotificationPrefsSaved)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/notifications/prefs","host":["{{baseUrl}}"],"path":["tutoring","notifications","prefs"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save your notification choices (emits TutorNotificationPrefsSaved)"}},{"name":"GET /tutoring/funding-sources — Funding sources","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/funding-sources","host":["{{baseUrl}}"],"path":["tutoring","funding-sources"]},"description":"Funding sources"}},{"name":"POST /tutoring/funding-sources — Add a funding source (ADMIN)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/funding-sources","host":["{{baseUrl}}"],"path":["tutoring","funding-sources"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a funding source (ADMIN)"}},{"name":"GET /tutoring/hour-packages — Hours packages","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/hour-packages","host":["{{baseUrl}}"],"path":["tutoring","hour-packages"]},"description":"Hours packages"}},{"name":"POST /tutoring/hour-packages — Add an hours package (ADMIN)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/hour-packages","host":["{{baseUrl}}"],"path":["tutoring","hour-packages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an hours package (ADMIN)"}},{"name":"GET /tutoring/allocations — Hours allocated to families","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/allocations","host":["{{baseUrl}}"],"path":["tutoring","allocations"]},"description":"Hours allocated to families"}},{"name":"POST /tutoring/allocations — Allocate tutoring sessions to a family (ADMIN; optional enrolment campaign code)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/allocations","host":["{{baseUrl}}"],"path":["tutoring","allocations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Allocate tutoring sessions to a family (ADMIN; optional enrolment campaign code)"}},{"name":"GET /tutoring/hour-entries — Tutor hours","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/hour-entries","host":["{{baseUrl}}"],"path":["tutoring","hour-entries"]},"description":"Tutor hours"}},{"name":"POST /tutoring/hour-entries — Add hours by hand (prep time, a parent call)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/hour-entries","host":["{{baseUrl}}"],"path":["tutoring","hour-entries"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add hours by hand (prep time, a parent call)"}},{"name":"GET /tutoring/timesheets — Stipend timesheets","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/timesheets","host":["{{baseUrl}}"],"path":["tutoring","timesheets"]},"description":"Stipend timesheets"}},{"name":"POST /tutoring/timesheets — Submit a stipend timesheet for a period","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/timesheets","host":["{{baseUrl}}"],"path":["tutoring","timesheets"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Submit a stipend timesheet for a period"}},{"name":"GET /tutoring/stipend-batches — Stipend batches for the business office","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/stipend-batches","host":["{{baseUrl}}"],"path":["tutoring","stipend-batches"]},"description":"Stipend batches for the business office"}},{"name":"POST /tutoring/stipend-batches — Batch approved timesheets for the business office (ADMIN; Omni Tutor markEarningsPaid)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/stipend-batches","host":["{{baseUrl}}"],"path":["tutoring","stipend-batches"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Batch approved timesheets for the business office (ADMIN; Omni Tutor markEarningsPaid)"}},{"name":"GET /tutoring/hours/me — Your hours ready to submit and your stipend setup","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/hours/me","host":["{{baseUrl}}"],"path":["tutoring","hours","me"]},"description":"Your hours ready to submit and your stipend setup"}},{"name":"PUT /tutoring/hour-entries/{id} — Edit one of your manual entries","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/hour-entries/{id}","host":["{{baseUrl}}"],"path":["tutoring","hour-entries","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit one of your manual entries"}},{"name":"DELETE /tutoring/hour-entries/{id} — Delete one of your manual entries","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/hour-entries/{id}","host":["{{baseUrl}}"],"path":["tutoring","hour-entries","{id}"]},"description":"Delete one of your manual entries"}},{"name":"GET /tutoring/campaigns — Enrolment campaigns","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/campaigns","host":["{{baseUrl}}"],"path":["tutoring","campaigns"]},"description":"Enrolment campaigns"}},{"name":"POST /tutoring/campaigns — Create an enrolment campaign code (ADMIN)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/campaigns","host":["{{baseUrl}}"],"path":["tutoring","campaigns"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an enrolment campaign code (ADMIN)"}},{"name":"GET /tutoring/my-referral — Your referral code","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/my-referral","host":["{{baseUrl}}"],"path":["tutoring","my-referral"]},"description":"Your referral code"}},{"name":"POST /tutoring/my-referral — Create your referral code if you have none (emits TutorReferralChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tutoring/my-referral","host":["{{baseUrl}}"],"path":["tutoring","my-referral"]},"description":"Create your referral code if you have none (emits TutorReferralChanged)"}},{"name":"GET /tutoring/testimonials — Family feedback quotes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/testimonials","host":["{{baseUrl}}"],"path":["tutoring","testimonials"]},"description":"Family feedback quotes"}},{"name":"POST /tutoring/testimonials — Add a family feedback quote (as a draft)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/testimonials","host":["{{baseUrl}}"],"path":["tutoring","testimonials"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a family feedback quote (as a draft)"}},{"name":"GET /tutoring/reviews — Session reviews from families","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/reviews","host":["{{baseUrl}}"],"path":["tutoring","reviews"]},"description":"Session reviews from families"}},{"name":"GET /tutoring/experiments — Outreach tests","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/experiments","host":["{{baseUrl}}"],"path":["tutoring","experiments"]},"description":"Outreach tests"}},{"name":"POST /tutoring/experiments — Create an outreach test with its variants","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/experiments","host":["{{baseUrl}}"],"path":["tutoring","experiments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an outreach test with its variants"}},{"name":"GET /tutoring/support-profiles — Students’ tutoring supports","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/support-profiles","host":["{{baseUrl}}"],"path":["tutoring","support-profiles"]},"description":"Students’ tutoring supports"}},{"name":"GET /tutoring/students/{studentId}/support-profile — A student’s tutoring supports and DEP IEP","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/students/{studentId}/support-profile","host":["{{baseUrl}}"],"path":["tutoring","students","{studentId}","support-profile"]},"description":"A student’s tutoring supports and DEP IEP"}},{"name":"PUT /tutoring/students/{studentId}/support-profile — Save a student’s tutoring supports (emits TutorSupportProfileSaved)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/students/{studentId}/support-profile","host":["{{baseUrl}}"],"path":["tutoring","students","{studentId}","support-profile"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save a student’s tutoring supports (emits TutorSupportProfileSaved)"}},{"name":"GET /tutoring/translations — Translation coverage","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/translations","host":["{{baseUrl}}"],"path":["tutoring","translations"]},"description":"Translation coverage"}},{"name":"PUT /tutoring/translations — Save one field’s translation (an empty value clears it; emits TutorTranslationSaved)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/translations","host":["{{baseUrl}}"],"path":["tutoring","translations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save one field’s translation (an empty value clears it; emits TutorTranslationSaved)"}},{"name":"GET /tutoring/translations/{type} — Translatable items of one content type with their Spanish and Chinese text","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/translations/{type}","host":["{{baseUrl}}"],"path":["tutoring","translations","{type}"]},"description":"Translatable items of one content type with their Spanish and Chinese text"}},{"name":"GET /tutoring/finance/summary — Hours & stipends: figures, funding use and the 12-month trend","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/finance/summary","host":["{{baseUrl}}"],"path":["tutoring","finance","summary"]},"description":"Hours & stipends: figures, funding use and the 12-month trend"}},{"name":"PUT /tutoring/funding-sources/{id} — Edit a funding source (ADMIN)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/funding-sources/{id}","host":["{{baseUrl}}"],"path":["tutoring","funding-sources","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a funding source (ADMIN)"}},{"name":"PUT /tutoring/hour-packages/{id} — Edit an hours package (ADMIN)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/hour-packages/{id}","host":["{{baseUrl}}"],"path":["tutoring","hour-packages","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an hours package (ADMIN)"}},{"name":"GET /tutoring/finance/families — Families and their students, for the allocate form","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/finance/families","host":["{{baseUrl}}"],"path":["tutoring","finance","families"]},"description":"Families and their students, for the allocate form"}},{"name":"POST /tutoring/allocations/{id}/withdraw — Withdraw an allocation (ADMIN; Omni Tutor refund)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/allocations/{id}/withdraw","host":["{{baseUrl}}"],"path":["tutoring","allocations","{id}","withdraw"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Withdraw an allocation (ADMIN; Omni Tutor refund)"}},{"name":"GET /tutoring/finance/allocations — Allocations with student, package, funding source and notes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/finance/allocations","host":["{{baseUrl}}"],"path":["tutoring","finance","allocations"]},"description":"Allocations with student, package, funding source and notes"}},{"name":"GET /tutoring/hour-draws — Ledger: every session drawn on a family allocation","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/hour-draws","host":["{{baseUrl}}"],"path":["tutoring","hour-draws"]},"description":"Ledger: every session drawn on a family allocation"}},{"name":"POST /tutoring/timesheets/{id}/review — Approve or return a submitted timesheet (admin or site manager)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/timesheets/{id}/review","host":["{{baseUrl}}"],"path":["tutoring","timesheets","{id}","review"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve or return a submitted timesheet (admin or site manager)"}},{"name":"GET /tutoring/timesheets/{id}/export — Download an approved timesheet as CSV for the business office (marks it exported)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/timesheets/{id}/export","host":["{{baseUrl}}"],"path":["tutoring","timesheets","{id}","export"]},"description":"text/csv"}},{"name":"GET /tutoring/finance/batches — Stipend batches with their timesheets (ADMIN)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/finance/batches","host":["{{baseUrl}}"],"path":["tutoring","finance","batches"]},"description":"Stipend batches with their timesheets (ADMIN)"}},{"name":"PATCH /tutoring/stipend-batches/{id} — Move a stipend batch: sent, paid, problem or back to pending (ADMIN)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/stipend-batches/{id}","host":["{{baseUrl}}"],"path":["tutoring","stipend-batches","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move a stipend batch: sent, paid, problem or back to pending (ADMIN)"}},{"name":"GET /tutoring/campaigns/overview — Enrolment campaigns with redemptions (ADMIN)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/campaigns/overview","host":["{{baseUrl}}"],"path":["tutoring","campaigns","overview"]},"description":"Enrolment campaigns with redemptions (ADMIN)"}},{"name":"PATCH /tutoring/campaigns/{id}/active — Enable or disable a campaign (ADMIN)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/campaigns/{id}/active","host":["{{baseUrl}}"],"path":["tutoring","campaigns","{id}","active"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Enable or disable a campaign (ADMIN)"}},{"name":"GET /tutoring/testimonials/candidates — Five-star session reviews with comments — candidates for feedback quotes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/testimonials/candidates","host":["{{baseUrl}}"],"path":["tutoring","testimonials","candidates"]},"description":"Five-star session reviews with comments — candidates for feedback quotes"}},{"name":"PATCH /tutoring/testimonials/{id} — Publish/unpublish or feature/unfeature a feedback quote","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/testimonials/{id}","host":["{{baseUrl}}"],"path":["tutoring","testimonials","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Publish/unpublish or feature/unfeature a feedback quote"}},{"name":"GET /tutoring/experiments/results — Outreach tests with per-variant assignments and conversions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/experiments/results","host":["{{baseUrl}}"],"path":["tutoring","experiments","results"]},"description":"Outreach tests with per-variant assignments and conversions"}},{"name":"PATCH /tutoring/experiments/{id}/active — Pause or resume an outreach test","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/experiments/{id}/active","host":["{{baseUrl}}"],"path":["tutoring","experiments","{id}","active"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Pause or resume an outreach test"}},{"name":"GET /tutoring/analytics/summary — Program analytics summary","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/analytics/summary","host":["{{baseUrl}}"],"path":["tutoring","analytics","summary"]},"description":"Program analytics summary"}},{"name":"GET /tutoring/analytics/events — Top program events and the headline event per day (admin/analytics)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/analytics/events","host":["{{baseUrl}}"],"path":["tutoring","analytics","events"]},"description":"Top program events and the headline event per day (admin/analytics)"}},{"name":"GET /tutoring/analytics/trends — The program month by month: mastery, attendance, sessions, hours and ratings (12 months)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/analytics/trends","host":["{{baseUrl}}"],"path":["tutoring","analytics","trends"]},"description":"The program month by month: mastery, attendance, sessions, hours and ratings (12 months)"}},{"name":"GET /tutoring/analytics/outcomes — Student outcomes export: one row per student × subject (pseudonymized unless identified=1)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/analytics/outcomes","host":["{{baseUrl}}"],"path":["tutoring","analytics","outcomes"]},"description":"format=csv returns text/csv; summary returns headline figures and a 20-row sample."}},{"name":"GET /tutoring/audit — Omni Tutor audit log","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/audit","host":["{{baseUrl}}"],"path":["tutoring","audit"]},"description":"Omni Tutor audit log"}},{"name":"GET /tutoring/audit/log — Omni Tutor audit log with actors, roles and action counts (ADMIN)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/audit/log","host":["{{baseUrl}}"],"path":["tutoring","audit","log"]},"description":"Omni Tutor audit log with actors, roles and action counts (ADMIN)"}},{"name":"GET /tutoring/audit/events — The Omni Tutor event trail (Tutor* events; ADMIN)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/audit/events","host":["{{baseUrl}}"],"path":["tutoring","audit","events"]},"description":"The Omni Tutor event trail (Tutor* events; ADMIN)"}},{"name":"GET /tutoring/admin/pipeline — Program pipeline: families by stage and requests not yet a family","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/pipeline","host":["{{baseUrl}}"],"path":["tutoring","admin","pipeline"]},"description":"Program pipeline: families by stage and requests not yet a family"}},{"name":"GET /tutoring/admin/families — Program families (admin list)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/families","host":["{{baseUrl}}"],"path":["tutoring","admin","families"]},"description":"Program families (admin list)"}},{"name":"GET /tutoring/admin/families/{id} — One program family (admin)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/families/{id}","host":["{{baseUrl}}"],"path":["tutoring","admin","families","{id}"]},"description":"One program family (admin)"}},{"name":"PATCH /tutoring/admin/families/{id} — Edit a family’s name, stage or internal notes (TutorFamilyChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/families/{id}","host":["{{baseUrl}}"],"path":["tutoring","admin","families","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a family’s name, stage or internal notes (TutorFamilyChanged)"}},{"name":"PATCH /tutoring/admin/students/{id} — Edit a program student’s grade, interests and goals (TutorStudentChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/students/{id}","host":["{{baseUrl}}"],"path":["tutoring","admin","students","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a program student’s grade, interests and goals (TutorStudentChanged)"}},{"name":"GET /tutoring/admin/tutors — Tutor roster (admin)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/tutors","host":["{{baseUrl}}"],"path":["tutoring","admin","tutors"]},"description":"Tutor roster (admin)"}},{"name":"GET /tutoring/admin/tutors/{id} — One tutor (admin)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/tutors/{id}","host":["{{baseUrl}}"],"path":["tutoring","admin","tutors","{id}"]},"description":"One tutor (admin)"}},{"name":"PUT /tutoring/admin/tutors/{id} — Edit a tutor’s profile, stipend rate and active flag (TutorProfileChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/tutors/{id}","host":["{{baseUrl}}"],"path":["tutoring","admin","tutors","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a tutor’s profile, stipend rate and active flag (TutorProfileChanged)"}},{"name":"PATCH /tutoring/admin/tutors/{id}/active — Make a tutor active (visible and assignable) or inactive (TutorProfileChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/tutors/{id}/active","host":["{{baseUrl}}"],"path":["tutoring","admin","tutors","{id}","active"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Make a tutor active (visible and assignable) or inactive (TutorProfileChanged)"}},{"name":"GET /tutoring/admin/sessions — All program sessions (admin)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/sessions","host":["{{baseUrl}}"],"path":["tutoring","admin","sessions"]},"description":"All program sessions (admin)"}},{"name":"GET /tutoring/admin/sessions/{id} — One session (admin)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/sessions/{id}","host":["{{baseUrl}}"],"path":["tutoring","admin","sessions","{id}"]},"description":"One session (admin)"}},{"name":"POST /tutoring/admin/sessions/{id}/reschedule — Move a session (admin; TutorSessionChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/sessions/{id}/reschedule","host":["{{baseUrl}}"],"path":["tutoring","admin","sessions","{id}","reschedule"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move a session (admin; TutorSessionChanged)"}},{"name":"POST /tutoring/admin/sessions/{id}/cancel — Cancel a session (admin; TutorSessionChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/sessions/{id}/cancel","host":["{{baseUrl}}"],"path":["tutoring","admin","sessions","{id}","cancel"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Cancel a session (admin; TutorSessionChanged)"}},{"name":"POST /tutoring/admin/sessions/{id}/end — Force-end a session stuck live (admin; TutorSessionChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/sessions/{id}/end","host":["{{baseUrl}}"],"path":["tutoring","admin","sessions","{id}","end"]},"description":"Force-end a session stuck live (admin; TutorSessionChanged)"}},{"name":"PUT /tutoring/admin/sessions/{id}/note — Internal admin note on a session (TutorSessionChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/sessions/{id}/note","host":["{{baseUrl}}"],"path":["tutoring","admin","sessions","{id}","note"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Internal admin note on a session (TutorSessionChanged)"}},{"name":"GET /tutoring/admin/inquiries — Requests for tutoring (admin) with counts per status","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/inquiries","host":["{{baseUrl}}"],"path":["tutoring","admin","inquiries"]},"description":"Requests for tutoring (admin) with counts per status"}},{"name":"GET /tutoring/admin/inquiries/{id} — One request for tutoring (admin)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/inquiries/{id}","host":["{{baseUrl}}"],"path":["tutoring","admin","inquiries","{id}"]},"description":"One request for tutoring (admin)"}},{"name":"PATCH /tutoring/admin/inquiries/{id}/status — Move a request for tutoring (TutorInquiryChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/inquiries/{id}/status","host":["{{baseUrl}}"],"path":["tutoring","admin","inquiries","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move a request for tutoring (TutorInquiryChanged)"}},{"name":"GET /tutoring/admin/inquiries/{id}/candidates — DEP students and their guardians this request could be enrolled as","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/inquiries/{id}/candidates","host":["{{baseUrl}}"],"path":["tutoring","admin","inquiries","{id}","candidates"]},"description":"DEP students and their guardians this request could be enrolled as"}},{"name":"POST /tutoring/admin/inquiries/{id}/convert — Enrol a request as a program family on DEP’s student and guardian (TutorInquiryChanged, TutorFamilyChanged, TutorStudentChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/inquiries/{id}/convert","host":["{{baseUrl}}"],"path":["tutoring","admin","inquiries","{id}","convert"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Enrol a request as a program family on DEP’s student and guardian (TutorInquiryChanged, TutorFamilyChanged, TutorStudentChanged)"}},{"name":"GET /tutoring/admin/applications — Tutor applications (admin) with counts per status","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/applications","host":["{{baseUrl}}"],"path":["tutoring","admin","applications"]},"description":"Tutor applications (admin) with counts per status"}},{"name":"GET /tutoring/admin/applications/{id} — One tutor application (admin)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/applications/{id}","host":["{{baseUrl}}"],"path":["tutoring","admin","applications","{id}"]},"description":"One tutor application (admin)"}},{"name":"PATCH /tutoring/admin/applications/{id}/status — Move a tutor application (TutorApplicationChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/applications/{id}/status","host":["{{baseUrl}}"],"path":["tutoring","admin","applications","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move a tutor application (TutorApplicationChanged)"}},{"name":"POST /tutoring/admin/applications/{id}/approve — Approve: tutor profile + TUTOR role on the applicant’s DEP person (TutorApplicationChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/applications/{id}/approve","host":["{{baseUrl}}"],"path":["tutoring","admin","applications","{id}","approve"]},"description":"Approve: tutor profile + TUTOR role on the applicant’s DEP person (TutorApplicationChanged)"}},{"name":"POST /tutoring/admin/applications/{id}/decline — Decline a tutor application (TutorApplicationChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/applications/{id}/decline","host":["{{baseUrl}}"],"path":["tutoring","admin","applications","{id}","decline"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Decline a tutor application (TutorApplicationChanged)"}},{"name":"POST /tutoring/admin/applications/bulk — Approve or decline several applications","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/applications/bulk","host":["{{baseUrl}}"],"path":["tutoring","admin","applications","bulk"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve or decline several applications"}},{"name":"GET /tutoring/admin/verification — Documents to verify and every tutor’s background check","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/verification","host":["{{baseUrl}}"],"path":["tutoring","admin","verification"]},"description":"Documents to verify and every tutor’s background check"}},{"name":"POST /tutoring/admin/documents/{id}/review — Approve or reject a tutor’s document (TutorDocumentChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/documents/{id}/review","host":["{{baseUrl}}"],"path":["tutoring","admin","documents","{id}","review"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve or reject a tutor’s document (TutorDocumentChanged)"}},{"name":"PUT /tutoring/admin/tutors/{id}/background — Record a tutor’s background-check status (TutorBackgroundCheckChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/tutors/{id}/background","host":["{{baseUrl}}"],"path":["tutoring","admin","tutors","{id}","background"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a tutor’s background-check status (TutorBackgroundCheckChanged)"}},{"name":"GET /tutoring/admin/match/{studentId} — Match screen: a student and the tutors who could take them","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/match/{studentId}","host":["{{baseUrl}}"],"path":["tutoring","admin","match","{studentId}"]},"description":"Match screen: a student and the tutors who could take them"}},{"name":"POST /tutoring/admin/match — Match a student with a tutor for a subject (TutorMatchChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/match","host":["{{baseUrl}}"],"path":["tutoring","admin","match"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Match a student with a tutor for a subject (TutorMatchChanged)"}},{"name":"GET /tutoring/admin/lessons/options — What the admin lesson screens pick from (subjects, skills, library)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/lessons/options","host":["{{baseUrl}}"],"path":["tutoring","admin","lessons","options"]},"description":"What the admin lesson screens pick from (subjects, skills, library)"}},{"name":"POST /tutoring/admin/lessons — Create a program lesson (no tutor author; emits TutorLessonChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/lessons","host":["{{baseUrl}}"],"path":["tutoring","admin","lessons"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a program lesson (no tutor author; emits TutorLessonChanged)"}},{"name":"GET /tutoring/admin/announcements — Announcements sent, and how many people each audience reaches","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/admin/announcements","host":["{{baseUrl}}"],"path":["tutoring","admin","announcements"]},"description":"Announcements sent, and how many people each audience reaches"}},{"name":"POST /tutoring/admin/announcements — Send an announcement to an audience: an inbox item for each, email to those who opted in (emits TutorAnnouncementSent)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/admin/announcements","host":["{{baseUrl}}"],"path":["tutoring","admin","announcements"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send an announcement to an audience: an inbox item for each, email to those who opted in (emits TutorAnnouncementSent)"}},{"name":"GET /tutoring/find/tutors — Find a tutor: the program’s tutors","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/find/tutors","host":["{{baseUrl}}"],"path":["tutoring","find","tutors"]},"description":"Find a tutor: the program’s tutors"}},{"name":"GET /tutoring/find/tutors/{id} — A tutor’s profile: about, subjects, teaching approach, recent reviews","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/find/tutors/{id}","host":["{{baseUrl}}"],"path":["tutoring","find","tutors","{id}"]},"description":"A tutor’s profile: about, subjects, teaching approach, recent reviews"}},{"name":"GET /tutoring/find/subjects — Subjects the program teaches, with the tutors who teach each","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/find/subjects","host":["{{baseUrl}}"],"path":["tutoring","find","subjects"]},"description":"Subjects the program teaches, with the tutors who teach each"}},{"name":"GET /tutoring/find/subjects/{id} — One subject: what the program does, its tutors, family quotes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/find/subjects/{id}","host":["{{baseUrl}}"],"path":["tutoring","find","subjects","{id}"]},"description":"One subject: what the program does, its tutors, family quotes"}},{"name":"GET /tutoring/portal/request-tutor/{id} — The request-a-tutor form","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/request-tutor/{id}","host":["{{baseUrl}}"],"path":["tutoring","portal","request-tutor","{id}"]},"description":"The request-a-tutor form"}},{"name":"POST /tutoring/portal/requests — Ask a tutor to take on your child (TutorRequestChanged; the tutor answers under Requests)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/portal/requests","host":["{{baseUrl}}"],"path":["tutoring","portal","requests"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask a tutor to take on your child (TutorRequestChanged; the tutor answers under Requests)"}},{"name":"GET /tutoring/inquire — The request-for-tutoring form","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/inquire","host":["{{baseUrl}}"],"path":["tutoring","inquire"]},"description":"The request-for-tutoring form"}},{"name":"GET /tutoring/portal/practice — AI practice: lessons to practise for each child and recent attempts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/practice","host":["{{baseUrl}}"],"path":["tutoring","portal","practice"]},"description":"AI practice: lessons to practise for each child and recent attempts"}},{"name":"POST /tutoring/portal/practice/start — Start (or resume) AI practice on a lesson for your child (TutorPracticeChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/portal/practice/start","host":["{{baseUrl}}"],"path":["tutoring","portal","practice","start"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start (or resume) AI practice on a lesson for your child (TutorPracticeChanged)"}},{"name":"GET /tutoring/portal/practice/{id} — The practice player: segments, where the child is, the conversation","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/practice/{id}","host":["{{baseUrl}}"],"path":["tutoring","portal","practice","{id}"]},"description":"The practice player: segments, where the child is, the conversation"}},{"name":"POST /tutoring/portal/practice/{id}/chat — Your child writes to the AI practice tutor; it answers (tutoring:practice-reply:v1)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/portal/practice/{id}/chat","host":["{{baseUrl}}"],"path":["tutoring","portal","practice","{id}","chat"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Your child writes to the AI practice tutor; it answers (tutoring:practice-reply:v1)"}},{"name":"POST /tutoring/portal/practice/{id}/advance — Move to the next segment; the finished one is graded if it checks a skill (TutorPracticeChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/practice/{id}/advance","host":["{{baseUrl}}"],"path":["tutoring","portal","practice","{id}","advance"]},"description":"Move to the next segment; the finished one is graded if it checks a skill (TutorPracticeChanged)"}},{"name":"POST /tutoring/portal/practice/{id}/complete — Finish the lesson: grade the last segment and write the summary the tutor reads (tutoring:practice-summary:v1)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/practice/{id}/complete","host":["{{baseUrl}}"],"path":["tutoring","portal","practice","{id}","complete"]},"description":"Finish the lesson: grade the last segment and write the summary the tutor reads (tutoring:practice-summary:v1)"}},{"name":"GET /tutoring/portal/lessons — Lesson plans assigned to your children (portal/lessons)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/lessons","host":["{{baseUrl}}"],"path":["tutoring","portal","lessons"]},"description":"Lesson plans assigned to your children (portal/lessons)"}},{"name":"GET /tutoring/portal/home — The family’s children (portal pickers)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/home","host":["{{baseUrl}}"],"path":["tutoring","portal","home"]},"description":"The family’s children (portal pickers)"}},{"name":"GET /tutoring/portal/booking — What a family can book: their children’s active matches","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/booking","host":["{{baseUrl}}"],"path":["tutoring","portal","booking"]},"description":"What a family can book: their children’s active matches"}},{"name":"POST /tutoring/portal/sessions — Book a session (or a weekly run) in the tutor’s open hours (TutorSessionScheduled)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/portal/sessions","host":["{{baseUrl}}"],"path":["tutoring","portal","sessions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Book a session (or a weekly run) in the tutor’s open hours (TutorSessionScheduled)"}},{"name":"POST /tutoring/portal/sessions/{id}/reschedule — Move your child’s session within the tutor’s hours (TutorSessionChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/portal/sessions/{id}/reschedule","host":["{{baseUrl}}"],"path":["tutoring","portal","sessions","{id}","reschedule"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move your child’s session within the tutor’s hours (TutorSessionChanged)"}},{"name":"POST /tutoring/portal/sessions/{id}/cancel — Cancel your child’s session; late inside the program’s window (TutorSessionChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/portal/sessions/{id}/cancel","host":["{{baseUrl}}"],"path":["tutoring","portal","sessions","{id}","cancel"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Cancel your child’s session; late inside the program’s window (TutorSessionChanged)"}},{"name":"POST /tutoring/portal/sessions/{id}/prep — Send the tutor work ahead of a session (TutorSessionPrepSubmitted)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/portal/sessions/{id}/prep","host":["{{baseUrl}}"],"path":["tutoring","portal","sessions","{id}","prep"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send the tutor work ahead of a session (TutorSessionPrepSubmitted)"}},{"name":"GET /tutoring/portal/sessions/{id}/review — Rate a completed session (review/[sessionId])","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/sessions/{id}/review","host":["{{baseUrl}}"],"path":["tutoring","portal","sessions","{id}","review"]},"description":"Rate a completed session (review/[sessionId])"}},{"name":"PUT /tutoring/portal/sessions/{id}/review — Save the family’s rating of a completed session (TutorReviewSaved)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/portal/sessions/{id}/review","host":["{{baseUrl}}"],"path":["tutoring","portal","sessions","{id}","review"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save the family’s rating of a completed session (TutorReviewSaved)"}},{"name":"GET /tutoring/portal/lessons/{id} — A lesson plan assigned to your child (family view)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/lessons/{id}","host":["{{baseUrl}}"],"path":["tutoring","portal","lessons","{id}"]},"description":"A lesson plan assigned to your child (family view)"}},{"name":"GET /tutoring/portal/library/{id} — A material attached to your child’s homework, session or lesson plan","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/library/{id}","host":["{{baseUrl}}"],"path":["tutoring","portal","library","{id}"]},"description":"A material attached to your child’s homework, session or lesson plan"}},{"name":"GET /tutoring/portal/reports — Published progress reports for your children","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/reports","host":["{{baseUrl}}"],"path":["tutoring","portal","reports"]},"description":"Published progress reports for your children"}},{"name":"GET /tutoring/portal/diagnostics — Your children’s completed diagnostics","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/diagnostics","host":["{{baseUrl}}"],"path":["tutoring","portal","diagnostics"]},"description":"Your children’s completed diagnostics"}},{"name":"GET /tutoring/portal/diagnostics/{id} — One diagnostic: score, section breakdown, strengths, growth areas, skills","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/diagnostics/{id}","host":["{{baseUrl}}"],"path":["tutoring","portal","diagnostics","{id}"]},"description":"One diagnostic: score, section breakdown, strengths, growth areas, skills"}},{"name":"GET /tutoring/portal/hours — District-funded tutoring sessions: balance, allocations and every session drawn","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/hours","host":["{{baseUrl}}"],"path":["tutoring","portal","hours"]},"description":"District-funded tutoring sessions: balance, allocations and every session drawn"}},{"name":"POST /tutoring/portal/hours/request — Ask the program for more tutoring sessions (a request for tutoring the program office answers; TutorInquiryChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/portal/hours/request","host":["{{baseUrl}}"],"path":["tutoring","portal","hours","request"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask the program for more tutoring sessions (a request for tutoring the program office answers; TutorInquiryChanged)"}},{"name":"GET /tutoring/portal/family — Your family, your DEP contact details and your children in the program","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/family","host":["{{baseUrl}}"],"path":["tutoring","portal","family"]},"description":"Your family, your DEP contact details and your children in the program"}},{"name":"GET /tutoring/portal/students/{id} — One of your children: tutors, sessions, plans, homework, reports","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/students/{id}","host":["{{baseUrl}}"],"path":["tutoring","portal","students","{id}"]},"description":"One of your children: tutors, sessions, plans, homework, reports"}},{"name":"PATCH /tutoring/portal/students/{id} — Update your child’s interests and goals for the tutor (TutorStudentChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/portal/students/{id}","host":["{{baseUrl}}"],"path":["tutoring","portal","students","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update your child’s interests and goals for the tutor (TutorStudentChanged)"}},{"name":"GET /tutoring/portal/students/{id}/timeline — Everything that happened for one child, newest first","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/portal/students/{id}/timeline","host":["{{baseUrl}}"],"path":["tutoring","portal","students","{id}","timeline"]},"description":"Everything that happened for one child, newest first"}},{"name":"GET /tutoring/preview/candidates — View as: tutors or families this admin can preview (busiest first; the first is the suggestion)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tutoring/preview/candidates","host":["{{baseUrl}}"],"path":["tutoring","preview","candidates"]},"description":"View as: tutors or families this admin can preview (busiest first; the first is the suggestion)"}},{"name":"POST /tutoring/preview — View as: start (or switch) a read-only preview of one tutor’s or family’s Omni Tutor","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tutoring/preview","host":["{{baseUrl}}"],"path":["tutoring","preview"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"View as: start (or switch) a read-only preview of one tutor’s or family’s Omni Tutor"}},{"name":"DELETE /tutoring/preview — View as: end the preview (back to your own Omni Tutor)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tutoring/preview","host":["{{baseUrl}}"],"path":["tutoring","preview"]},"description":"View as: end the preview (back to your own Omni Tutor)"}}]},{"name":"My Smart Study Partner","item":[{"name":"GET /study/context — My Smart Study Partner: your role, home and menu (enrols DEP students, parents, teachers and the first district admin)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/context","host":["{{baseUrl}}"],"path":["study","context"]},"description":"My Smart Study Partner: your role, home and menu (enrols DEP students, parents, teachers and the first district admin)"}},{"name":"GET /study/menu — My Smart Study Partner sidebar menu for the caller","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/menu","host":["{{baseUrl}}"],"path":["study","menu"]},"description":"My Smart Study Partner sidebar menu for the caller"}},{"name":"GET /study/members — My Smart Study Partner members and their roles","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/members","host":["{{baseUrl}}"],"path":["study","members"]},"description":"My Smart Study Partner members and their roles"}},{"name":"POST /study/members — Add a member or change their study role (emits StudyMemberChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/members","host":["{{baseUrl}}"],"path":["study","members"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a member or change their study role (emits StudyMemberChanged)"}},{"name":"GET /study/members/candidates — Find DEP people to add to My Smart Study Partner","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/members/candidates","host":["{{baseUrl}}"],"path":["study","members","candidates"]},"description":"Find DEP people to add to My Smart Study Partner"}},{"name":"PATCH /study/members/{id}/active — Switch a member off or back on (emits StudyMemberChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/members/{id}/active","host":["{{baseUrl}}"],"path":["study","members","{id}","active"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Switch a member off or back on (emits StudyMemberChanged)"}},{"name":"GET /study/settings — My Smart Study Partner district settings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/settings","host":["{{baseUrl}}"],"path":["study","settings"]},"description":"My Smart Study Partner district settings"}},{"name":"PUT /study/settings — Change the district settings (emits StudySettingsUpdated)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/settings","host":["{{baseUrl}}"],"path":["study","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change the district settings (emits StudySettingsUpdated)"}},{"name":"GET /study/dashboard/student — Student home (stats, progress, 14-day activity, tasks, today's stack)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/dashboard/student","host":["{{baseUrl}}"],"path":["study","dashboard","student"]},"description":"Student home (stats, progress, 14-day activity, tasks, today's stack)"}},{"name":"GET /study/dashboard/teacher — Teacher home (classes, needs review, students to watch, due this week)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/dashboard/teacher","host":["{{baseUrl}}"],"path":["study","dashboard","teacher"]},"description":"Teacher home (classes, needs review, students to watch, due this week)"}},{"name":"GET /study/dashboard/parent — Parent home (linked children, health, this week, activity)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/dashboard/parent","host":["{{baseUrl}}"],"path":["study","dashboard","parent"]},"description":"Parent home (linked children, health, this week, activity)"}},{"name":"GET /study/dashboard/specialist — Specialist caseload (logged to the FERPA audit log)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/dashboard/specialist","host":["{{baseUrl}}"],"path":["study","dashboard","specialist"]},"description":"Specialist caseload (logged to the FERPA audit log)"}},{"name":"GET /study/dashboard/district — District home (counts, schools, 14-day trend, teachers, at-risk, LinkIt)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/dashboard/district","host":["{{baseUrl}}"],"path":["study","dashboard","district"]},"description":"District home (counts, schools, 14-day trend, teachers, at-risk, LinkIt)"}},{"name":"GET /study/dashboard/admin — Admin home (members, growth, safety and support queues, activity)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/dashboard/admin","host":["{{baseUrl}}"],"path":["study","dashboard","admin"]},"description":"Admin home (members, growth, safety and support queues, activity)"}},{"name":"GET /study/dashboard/counselor — Counselor queue summary","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/dashboard/counselor","host":["{{baseUrl}}"],"path":["study","dashboard","counselor"]},"description":"Counselor queue summary"}},{"name":"GET /study/subjects — My subjects","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/subjects","host":["{{baseUrl}}"],"path":["study","subjects"]},"description":"My subjects"}},{"name":"POST /study/subjects — Add a subject","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/subjects","host":["{{baseUrl}}"],"path":["study","subjects"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a subject"}},{"name":"PATCH /study/subjects/{id} — Rename or recolour a subject","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/subjects/{id}","host":["{{baseUrl}}"],"path":["study","subjects","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rename or recolour a subject"}},{"name":"DELETE /study/subjects/{id} — Remove a subject (its notes, decks and tasks keep their content, untagged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/subjects/{id}","host":["{{baseUrl}}"],"path":["study","subjects","{id}"]},"description":"Remove a subject (its notes, decks and tasks keep their content, untagged)"}},{"name":"GET /study/tasks — My planner tasks","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/tasks","host":["{{baseUrl}}"],"path":["study","tasks"]},"description":"My planner tasks"}},{"name":"POST /study/tasks — Add a planner task","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/tasks","host":["{{baseUrl}}"],"path":["study","tasks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a planner task"}},{"name":"PATCH /study/tasks/{id} — Edit, complete or reopen a planner task","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/tasks/{id}","host":["{{baseUrl}}"],"path":["study","tasks","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit, complete or reopen a planner task"}},{"name":"DELETE /study/tasks/{id} — Delete a planner task","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/tasks/{id}","host":["{{baseUrl}}"],"path":["study","tasks","{id}"]},"description":"Delete a planner task"}},{"name":"GET /study/sessions — My study sessions (focus timer, reviews, quizzes)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/sessions","host":["{{baseUrl}}"],"path":["study","sessions"]},"description":"My study sessions (focus timer, reviews, quizzes)"}},{"name":"POST /study/sessions — Log a study session (the focus timer) — awards XP","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/sessions","host":["{{baseUrl}}"],"path":["study","sessions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Log a study session (the focus timer) — awards XP"}},{"name":"POST /study/study-plan — AI weekly study plan","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/study-plan","host":["{{baseUrl}}"],"path":["study","study-plan"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"AI weekly study plan"}},{"name":"GET /study/notes — My notes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/notes","host":["{{baseUrl}}"],"path":["study","notes"]},"description":"My notes"}},{"name":"POST /study/notes — Save a new note — awards XP","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/notes","host":["{{baseUrl}}"],"path":["study","notes"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save a new note — awards XP"}},{"name":"GET /study/notes/{id} — One of my notes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/notes/{id}","host":["{{baseUrl}}"],"path":["study","notes","{id}"]},"description":"One of my notes"}},{"name":"PATCH /study/notes/{id} — Edit a note","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/notes/{id}","host":["{{baseUrl}}"],"path":["study","notes","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a note"}},{"name":"DELETE /study/notes/{id} — Delete a note","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/notes/{id}","host":["{{baseUrl}}"],"path":["study","notes","{id}"]},"description":"Delete a note"}},{"name":"POST /study/notes/summarize — AI summary of note text (saved on the note when noteId is given)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/notes/summarize","host":["{{baseUrl}}"],"path":["study","notes","summarize"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"AI summary of note text (saved on the note when noteId is given)"}},{"name":"POST /study/notes/concepts — AI key concepts (4–6) from note text (saved on the note when noteId is given)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/notes/concepts","host":["{{baseUrl}}"],"path":["study","notes","concepts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"AI key concepts (4–6) from note text (saved on the note when noteId is given)"}},{"name":"POST /study/notes/flashcards — AI flashcards from note text → a new deck \"{title} - Flashcards\"","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/notes/flashcards","host":["{{baseUrl}}"],"path":["study","notes","flashcards"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"AI flashcards from note text → a new deck \"{title} - Flashcards\""}},{"name":"GET /study/decks — My flashcard decks (cards due, mastered)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/decks","host":["{{baseUrl}}"],"path":["study","decks"]},"description":"My flashcard decks (cards due, mastered)"}},{"name":"POST /study/decks — Create a deck (optionally with cards, e.g. from AI generation)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/decks","host":["{{baseUrl}}"],"path":["study","decks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a deck (optionally with cards, e.g. from AI generation)"}},{"name":"GET /study/decks/{id} — One of my decks with its cards","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/decks/{id}","host":["{{baseUrl}}"],"path":["study","decks","{id}"]},"description":"One of my decks with its cards"}},{"name":"PATCH /study/decks/{id} — Rename a deck or change its subject","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/decks/{id}","host":["{{baseUrl}}"],"path":["study","decks","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rename a deck or change its subject"}},{"name":"DELETE /study/decks/{id} — Delete a deck and its cards","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/decks/{id}","host":["{{baseUrl}}"],"path":["study","decks","{id}"]},"description":"Delete a deck and its cards"}},{"name":"POST /study/decks/{id}/cards — Add cards to a deck","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/decks/{id}/cards","host":["{{baseUrl}}"],"path":["study","decks","{id}","cards"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add cards to a deck"}},{"name":"PATCH /study/decks/{id}/cards/{cardId} — Edit a card","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/decks/{id}/cards/{cardId}","host":["{{baseUrl}}"],"path":["study","decks","{id}","cards","{cardId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a card"}},{"name":"DELETE /study/decks/{id}/cards/{cardId} — Delete a card","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/decks/{id}/cards/{cardId}","host":["{{baseUrl}}"],"path":["study","decks","{id}","cards","{cardId}"]},"description":"Delete a card"}},{"name":"POST /study/decks/{id}/cards/{cardId}/review — Rate a card Hard / Good / Easy (spaced repetition)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/decks/{id}/cards/{cardId}/review","host":["{{baseUrl}}"],"path":["study","decks","{id}","cards","{cardId}","review"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rate a card Hard / Good / Easy (spaced repetition)"}},{"name":"POST /study/decks/{id}/review-session — Finish a study run: logs a review session and awards XP","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/decks/{id}/review-session","host":["{{baseUrl}}"],"path":["study","decks","{id}","review-session"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Finish a study run: logs a review session and awards XP"}},{"name":"POST /study/flashcards/generate — AI flashcards for a topic (not saved until added)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/flashcards/generate","host":["{{baseUrl}}"],"path":["study","flashcards","generate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"AI flashcards for a topic (not saved until added)"}},{"name":"GET /study/quiz-results — My quiz results","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/quiz-results","host":["{{baseUrl}}"],"path":["study","quiz-results"]},"description":"My quiz results"}},{"name":"POST /study/quiz-results — Finish a quiz: save the result, log the quiz session, award XP","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/quiz-results","host":["{{baseUrl}}"],"path":["study","quiz-results"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Finish a quiz: save the result, log the quiz session, award XP"}},{"name":"POST /study/quiz/generate — AI quiz on a topic","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/quiz/generate","host":["{{baseUrl}}"],"path":["study","quiz","generate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"AI quiz on a topic"}},{"name":"POST /study/quiz-attempts — Save quiz answers; wrong answers go to the Mistake Journal with an AI misconception tag","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/quiz-attempts","host":["{{baseUrl}}"],"path":["study","quiz-attempts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save quiz answers; wrong answers go to the Mistake Journal with an AI misconception tag"}},{"name":"GET /study/analytics — My study analytics","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/analytics","host":["{{baseUrl}}"],"path":["study","analytics"]},"description":"My study analytics"}},{"name":"GET /study/conversations — My AI assistant conversations (history drawer)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/conversations","host":["{{baseUrl}}"],"path":["study","conversations"]},"description":"My AI assistant conversations (history drawer)"}},{"name":"POST /study/conversations — Start a new AI assistant conversation (emits StudyConversationChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/conversations","host":["{{baseUrl}}"],"path":["study","conversations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a new AI assistant conversation (emits StudyConversationChanged)"}},{"name":"DELETE /study/conversations — Clear Chat: delete all my conversations and messages (emits StudyConversationChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/conversations","host":["{{baseUrl}}"],"path":["study","conversations"]},"description":"Clear Chat: delete all my conversations and messages (emits StudyConversationChanged)"}},{"name":"GET /study/conversations/{id}/messages — The messages of one of my conversations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/conversations/{id}/messages","host":["{{baseUrl}}"],"path":["study","conversations","{id}","messages"]},"description":"The messages of one of my conversations"}},{"name":"DELETE /study/conversations/{id} — Delete one of my conversations and its messages (emits StudyConversationChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/conversations/{id}","host":["{{baseUrl}}"],"path":["study","conversations","{id}"]},"description":"Delete one of my conversations and its messages (emits StudyConversationChanged)"}},{"name":"GET /study/chat/context — Subject chips, Study Context panel and forced Patient mode for the assistant","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/chat/context","host":["{{baseUrl}}"],"path":["study","chat","context"]},"description":"Subject chips, Study Context panel and forced Patient mode for the assistant"}},{"name":"POST /study/chat — Send one message to the AI assistant (moderated; saves both messages)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/chat","host":["{{baseUrl}}"],"path":["study","chat"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send one message to the AI assistant (moderated; saves both messages)"}},{"name":"GET /study/mistakes — My Mistake Journal","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/mistakes","host":["{{baseUrl}}"],"path":["study","mistakes"]},"description":"My Mistake Journal"}},{"name":"POST /study/mistakes — Log a mistake in my journal (emits StudyMistakeChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/mistakes","host":["{{baseUrl}}"],"path":["study","mistakes"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Log a mistake in my journal (emits StudyMistakeChanged)"}},{"name":"PATCH /study/mistakes/{id} — Mark a mistake resolved or unresolved (emits StudyMistakeChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/mistakes/{id}","host":["{{baseUrl}}"],"path":["study","mistakes","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark a mistake resolved or unresolved (emits StudyMistakeChanged)"}},{"name":"DELETE /study/mistakes/{id} — Delete a mistake from my journal (emits StudyMistakeChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/mistakes/{id}","host":["{{baseUrl}}"],"path":["study","mistakes","{id}"]},"description":"Delete a mistake from my journal (emits StudyMistakeChanged)"}},{"name":"GET /study/catchup-plans — My catch-up plans","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/catchup-plans","host":["{{baseUrl}}"],"path":["study","catchup-plans"]},"description":"My catch-up plans"}},{"name":"POST /study/catchup-plans — Generate a catch-up plan from my recent mistakes (AI; emits StudyCatchupPlanChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/catchup-plans","host":["{{baseUrl}}"],"path":["study","catchup-plans"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generate a catch-up plan from my recent mistakes (AI; emits StudyCatchupPlanChanged)"}},{"name":"PATCH /study/catchup-plans/{id} — Start, finish or dismiss a catch-up plan (emits StudyCatchupPlanChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/catchup-plans/{id}","host":["{{baseUrl}}"],"path":["study","catchup-plans","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start, finish or dismiss a catch-up plan (emits StudyCatchupPlanChanged)"}},{"name":"POST /study/rehearse — Get kind AI feedback on my explanation of a concept (moderated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/rehearse","host":["{{baseUrl}}"],"path":["study","rehearse"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Get kind AI feedback on my explanation of a concept (moderated)"}},{"name":"POST /study/stuck — I'm stuck: patient AI help (moderated; always saved; emits StudyHelpRequested)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/stuck","host":["{{baseUrl}}"],"path":["study","stuck"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"I'm stuck: patient AI help (moderated; always saved; emits StudyHelpRequested)"}},{"name":"GET /study/ask — My classes and the questions I asked them anonymously","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/ask","host":["{{baseUrl}}"],"path":["study","ask"]},"description":"My classes and the questions I asked them anonymously"}},{"name":"POST /study/ask — Ask my class teacher a question anonymously (moderated; emits StudyAnonQuestionChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/ask","host":["{{baseUrl}}"],"path":["study","ask"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask my class teacher a question anonymously (moderated; emits StudyAnonQuestionChanged)"}},{"name":"GET /study/ask/similar — How many other students in the class asked something similar (count only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/ask/similar","host":["{{baseUrl}}"],"path":["study","ask","similar"]},"description":"How many other students in the class asked something similar (count only)"}},{"name":"GET /study/peer-match — My study-buddy opt-ins and suggestions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/peer-match","host":["{{baseUrl}}"],"path":["study","peer-match"]},"description":"My study-buddy opt-ins and suggestions"}},{"name":"POST /study/peer-match — Opt in or out of helping / being helped in a class (emits StudyPeerMatchChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/peer-match","host":["{{baseUrl}}"],"path":["study","peer-match"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Opt in or out of helping / being helped in a class (emits StudyPeerMatchChanged)"}},{"name":"PATCH /study/peer-match/{id} — Accept, decline or complete a study-buddy suggestion (emits StudyPeerMatchChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/peer-match/{id}","host":["{{baseUrl}}"],"path":["study","peer-match","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Accept, decline or complete a study-buddy suggestion (emits StudyPeerMatchChanged)"}},{"name":"GET /study/my-classes — Classes I am in","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/my-classes","host":["{{baseUrl}}"],"path":["study","my-classes"]},"description":"Classes I am in"}},{"name":"GET /study/my-announcements — Announcements from my classes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/my-announcements","host":["{{baseUrl}}"],"path":["study","my-announcements"]},"description":"Announcements from my classes"}},{"name":"GET /study/my-announcements/{id}/replies — Replies to an announcement","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/my-announcements/{id}/replies","host":["{{baseUrl}}"],"path":["study","my-announcements","{id}","replies"]},"description":"Replies to an announcement"}},{"name":"POST /study/my-announcements/{id}/replies — Reply to an announcement","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/my-announcements/{id}/replies","host":["{{baseUrl}}"],"path":["study","my-announcements","{id}","replies"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reply to an announcement"}},{"name":"GET /study/classes/join — Look up a class by invite code","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/classes/join","host":["{{baseUrl}}"],"path":["study","classes","join"]},"description":"Look up a class by invite code"}},{"name":"POST /study/classes/join — Join a class with its invite code","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/classes/join","host":["{{baseUrl}}"],"path":["study","classes","join"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Join a class with its invite code"}},{"name":"GET /study/my-assignments — My class assignments","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/my-assignments","host":["{{baseUrl}}"],"path":["study","my-assignments"]},"description":"My class assignments"}},{"name":"GET /study/my-assignments/{id} — One of my assignments (work view)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/my-assignments/{id}","host":["{{baseUrl}}"],"path":["study","my-assignments","{id}"]},"description":"One of my assignments (work view)"}},{"name":"POST /study/my-assignments/{id}/start — Start an assignment","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/my-assignments/{id}/start","host":["{{baseUrl}}"],"path":["study","my-assignments","{id}","start"]},"description":"Start an assignment"}},{"name":"POST /study/my-assignments/{id}/submit — Turn in an assignment (graded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/my-assignments/{id}/submit","host":["{{baseUrl}}"],"path":["study","my-assignments","{id}","submit"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Turn in an assignment (graded)"}},{"name":"POST /study/my-assignments/{id}/complete — Mark a reading assignment complete","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/my-assignments/{id}/complete","host":["{{baseUrl}}"],"path":["study","my-assignments","{id}","complete"]},"description":"Mark a reading assignment complete"}},{"name":"POST /study/my-assignments/{id}/events — Save writing-process drafts and events","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/my-assignments/{id}/events","host":["{{baseUrl}}"],"path":["study","my-assignments","{id}","events"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save writing-process drafts and events"}},{"name":"PUT /study/me/preferences — Save my study preferences (emits StudyPreferencesChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/me/preferences","host":["{{baseUrl}}"],"path":["study","me","preferences"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save my study preferences (emits StudyPreferencesChanged)"}},{"name":"GET /study/me/compliance — My consent and onboarding state","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/me/compliance","host":["{{baseUrl}}"],"path":["study","me","compliance"]},"description":"My consent and onboarding state"}},{"name":"PUT /study/me/compliance — Accept terms, answer storage/AI consent, finish onboarding (emits StudyComplianceChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/me/compliance","host":["{{baseUrl}}"],"path":["study","me","compliance"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Accept terms, answer storage/AI consent, finish onboarding (emits StudyComplianceChanged)"}},{"name":"GET /study/parent-invite — My parent invite code","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/parent-invite","host":["{{baseUrl}}"],"path":["study","parent-invite"]},"description":"My parent invite code"}},{"name":"POST /study/parent-invite — Make (or reuse) my 7-day parent invite code (emits StudyParentLinkChanged)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/parent-invite","host":["{{baseUrl}}"],"path":["study","parent-invite"]},"description":"Make (or reuse) my 7-day parent invite code (emits StudyParentLinkChanged)"}},{"name":"PATCH /study/nudges/{id} — Dismiss or act on one of my nudges (emits StudyNudgeChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/nudges/{id}","host":["{{baseUrl}}"],"path":["study","nudges","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Dismiss or act on one of my nudges (emits StudyNudgeChanged)"}},{"name":"GET /study/me/export — Export my own study data (JSON)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/me/export","host":["{{baseUrl}}"],"path":["study","me","export"]},"description":"Export my own study data (JSON)"}},{"name":"GET /study/nudges — My nudges (self level only — teacher/counselor tiers are internal, as in the app)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/nudges","host":["{{baseUrl}}"],"path":["study","nudges"]},"description":"My nudges (self level only — teacher/counselor tiers are internal, as in the app)"}},{"name":"GET /study/me/profile — My preferences, XP and consent state","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/me/profile","host":["{{baseUrl}}"],"path":["study","me","profile"]},"description":"My preferences, XP and consent state"}},{"name":"GET /study/teams — My study teams","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teams","host":["{{baseUrl}}"],"path":["study","teams"]},"description":"My study teams"}},{"name":"POST /study/teams — Create a study team (the creator is its owner)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teams","host":["{{baseUrl}}"],"path":["study","teams"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a study team (the creator is its owner)"}},{"name":"POST /study/teams/join — Join a team with its 8-character invite code","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teams/join","host":["{{baseUrl}}"],"path":["study","teams","join"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Join a team with its 8-character invite code"}},{"name":"GET /study/teams/{id} — A team (members only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}","host":["{{baseUrl}}"],"path":["study","teams","{id}"]},"description":"A team (members only)"}},{"name":"PATCH /study/teams/{id} — Edit team information (owner or admin)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teams/{id}","host":["{{baseUrl}}"],"path":["study","teams","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit team information (owner or admin)"}},{"name":"DELETE /study/teams/{id} — Delete the team and all shared content (owner)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}","host":["{{baseUrl}}"],"path":["study","teams","{id}"]},"description":"Delete the team and all shared content (owner)"}},{"name":"POST /study/teams/{id}/leave — Leave the team (not the owner)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/leave","host":["{{baseUrl}}"],"path":["study","teams","{id}","leave"]},"description":"Leave the team (not the owner)"}},{"name":"POST /study/teams/{id}/invite — Invite by email (owner or admin)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teams/{id}/invite","host":["{{baseUrl}}"],"path":["study","teams","{id}","invite"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Invite by email (owner or admin)"}},{"name":"GET /study/teams/{id}/members — Team members","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/members","host":["{{baseUrl}}"],"path":["study","teams","{id}","members"]},"description":"Team members"}},{"name":"PATCH /study/teams/{id}/members/{personId} — Change a member’s team role (owner or admin)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teams/{id}/members/{personId}","host":["{{baseUrl}}"],"path":["study","teams","{id}","members","{personId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a member’s team role (owner or admin)"}},{"name":"DELETE /study/teams/{id}/members/{personId} — Remove a member (owner or admin)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/members/{personId}","host":["{{baseUrl}}"],"path":["study","teams","{id}","members","{personId}"]},"description":"Remove a member (owner or admin)"}},{"name":"GET /study/teams/{id}/activity — Team activity (latest 50)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/activity","host":["{{baseUrl}}"],"path":["study","teams","{id}","activity"]},"description":"Team activity (latest 50)"}},{"name":"GET /study/teams/{id}/stats — Team stats and XP leaderboard","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/stats","host":["{{baseUrl}}"],"path":["study","teams","{id}","stats"]},"description":"Team stats and XP leaderboard"}},{"name":"GET /study/teams/{id}/notes — Team notes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/notes","host":["{{baseUrl}}"],"path":["study","teams","{id}","notes"]},"description":"Team notes"}},{"name":"POST /study/teams/{id}/notes — Add a team note","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teams/{id}/notes","host":["{{baseUrl}}"],"path":["study","teams","{id}","notes"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a team note"}},{"name":"PATCH /study/teams/{id}/notes/{noteId} — Edit a team note","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teams/{id}/notes/{noteId}","host":["{{baseUrl}}"],"path":["study","teams","{id}","notes","{noteId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a team note"}},{"name":"DELETE /study/teams/{id}/notes/{noteId} — Delete a team note (author, owner or admin)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/notes/{noteId}","host":["{{baseUrl}}"],"path":["study","teams","{id}","notes","{noteId}"]},"description":"Delete a team note (author, owner or admin)"}},{"name":"GET /study/teams/{id}/decks — Team flashcard decks with their cards","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/decks","host":["{{baseUrl}}"],"path":["study","teams","{id}","decks"]},"description":"Team flashcard decks with their cards"}},{"name":"POST /study/teams/{id}/decks — Create a team deck","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teams/{id}/decks","host":["{{baseUrl}}"],"path":["study","teams","{id}","decks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a team deck"}},{"name":"DELETE /study/teams/{id}/decks/{deckId} — Delete a team deck","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/decks/{deckId}","host":["{{baseUrl}}"],"path":["study","teams","{id}","decks","{deckId}"]},"description":"Delete a team deck"}},{"name":"POST /study/teams/{id}/decks/{deckId}/cards — Add a card to a team deck","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teams/{id}/decks/{deckId}/cards","host":["{{baseUrl}}"],"path":["study","teams","{id}","decks","{deckId}","cards"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a card to a team deck"}},{"name":"DELETE /study/teams/{id}/decks/{deckId}/cards/{cardId} — Delete a card from a team deck","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/decks/{deckId}/cards/{cardId}","host":["{{baseUrl}}"],"path":["study","teams","{id}","decks","{deckId}","cards","{cardId}"]},"description":"Delete a card from a team deck"}},{"name":"GET /study/teams/{id}/assignments — Team assignments with completion progress","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/assignments","host":["{{baseUrl}}"],"path":["study","teams","{id}","assignments"]},"description":"Team assignments with completion progress"}},{"name":"POST /study/teams/{id}/assignments — Create a team assignment","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teams/{id}/assignments","host":["{{baseUrl}}"],"path":["study","teams","{id}","assignments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a team assignment"}},{"name":"PATCH /study/teams/{id}/assignments/{aid} — Edit a team assignment","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teams/{id}/assignments/{aid}","host":["{{baseUrl}}"],"path":["study","teams","{id}","assignments","{aid}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a team assignment"}},{"name":"DELETE /study/teams/{id}/assignments/{aid} — Delete a team assignment","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/assignments/{aid}","host":["{{baseUrl}}"],"path":["study","teams","{id}","assignments","{aid}"]},"description":"Delete a team assignment"}},{"name":"POST /study/teams/{id}/assignments/{aid}/complete — Mark a team assignment complete for me","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/assignments/{aid}/complete","host":["{{baseUrl}}"],"path":["study","teams","{id}","assignments","{aid}","complete"]},"description":"Mark a team assignment complete for me"}},{"name":"GET /study/teams/{id}/discussions — Team discussion (top-level messages with their replies)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/discussions","host":["{{baseUrl}}"],"path":["study","teams","{id}","discussions"]},"description":"Team discussion (top-level messages with their replies)"}},{"name":"POST /study/teams/{id}/discussions — Post a message or a reply","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teams/{id}/discussions","host":["{{baseUrl}}"],"path":["study","teams","{id}","discussions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Post a message or a reply"}},{"name":"DELETE /study/teams/{id}/discussions/{msgId} — Delete a message (author, owner or admin)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/teams/{id}/discussions/{msgId}","host":["{{baseUrl}}"],"path":["study","teams","{id}","discussions","{msgId}"]},"description":"Delete a message (author, owner or admin)"}},{"name":"GET /study/teacher/classes — Classes I teach","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes","host":["{{baseUrl}}"],"path":["study","teacher","classes"]},"description":"Classes I teach"}},{"name":"POST /study/teacher/classes — Create a class (optionally mirroring a DEP section)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes","host":["{{baseUrl}}"],"path":["study","teacher","classes"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a class (optionally mirroring a DEP section)"}},{"name":"GET /study/teacher/sections — DEP sections I teach, for linking a class","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/sections","host":["{{baseUrl}}"],"path":["study","teacher","sections"]},"description":"DEP sections I teach, for linking a class"}},{"name":"GET /study/teacher/classes/{id} — A class I teach (syncs a DEP-section roster)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}"]},"description":"A class I teach (syncs a DEP-section roster)"}},{"name":"PATCH /study/teacher/classes/{id} — Rename, link a DEP section, archive or restore a class","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rename, link a DEP section, archive or restore a class"}},{"name":"DELETE /study/teacher/classes/{id} — Delete a class and everything in it","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}"]},"description":"Delete a class and everything in it"}},{"name":"POST /study/teacher/classes/{id}/roster-sync — Sync a class roster from its DEP section","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/roster-sync","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","roster-sync"]},"description":"Sync a class roster from its DEP section"}},{"name":"GET /study/teacher/classes/{id}/students — A class roster with this week's study time","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/students","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","students"]},"description":"A class roster with this week's study time"}},{"name":"GET /study/teaching-methods — The teaching-method catalogue","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teaching-methods","host":["{{baseUrl}}"],"path":["study","teaching-methods"]},"description":"The teaching-method catalogue"}},{"name":"GET /study/teacher/classes/{id}/teaching-methods — A class's AI teaching method","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/teaching-methods","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","teaching-methods"]},"description":"A class's AI teaching method"}},{"name":"PUT /study/teacher/classes/{id}/teaching-methods — Set a class's AI teaching method","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/teaching-methods","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","teaching-methods"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set a class's AI teaching method"}},{"name":"GET /study/teacher/classes/{id}/materials — A class's source materials","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/materials","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","materials"]},"description":"A class's source materials"}},{"name":"POST /study/teacher/classes/{id}/materials — Add a material from text, a URL or a Canva design","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/materials","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","materials"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a material from text, a URL or a Canva design"}},{"name":"GET /study/teacher/classes/{id}/materials/{materialId} — One material with its text","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/materials/{materialId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","materials","{materialId}"]},"description":"One material with its text"}},{"name":"DELETE /study/teacher/classes/{id}/materials/{materialId} — Delete a material (library items made from it stay)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/materials/{materialId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","materials","{materialId}"]},"description":"Delete a material (library items made from it stay)"}},{"name":"POST /study/teacher/classes/{id}/materials/upload — Add a material from an uploaded file (text is extracted; the file is not kept)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/materials/upload","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","materials","upload"]},"description":"Add a material from an uploaded file (text is extracted; the file is not kept)"}},{"name":"POST /study/teacher/classes/{id}/generate — Generate a flashcard deck and/or a quiz from a material (AI)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/generate","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","generate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generate a flashcard deck and/or a quiz from a material (AI)"}},{"name":"GET /study/teacher/classes/{id}/library — A class library (quizzes and decks)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/library","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","library"]},"description":"A class library (quizzes and decks)"}},{"name":"POST /study/teacher/classes/{id}/library — Save a quiz or deck to the class library","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/library","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","library"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save a quiz or deck to the class library"}},{"name":"GET /study/teacher/library — My library across all my classes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/library","host":["{{baseUrl}}"],"path":["study","teacher","library"]},"description":"My library across all my classes"}},{"name":"GET /study/teacher/classes/{id}/library/{itemId} — One library item with its questions or cards","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/library/{itemId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","library","{itemId}"]},"description":"One library item with its questions or cards"}},{"name":"PUT /study/teacher/classes/{id}/library/{itemId} — Edit a library item","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/library/{itemId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","library","{itemId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a library item"}},{"name":"DELETE /study/teacher/classes/{id}/library/{itemId} — Delete a library item","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/library/{itemId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","library","{itemId}"]},"description":"Delete a library item"}},{"name":"GET /study/teacher/classes/{id}/insights — Class insights (roster engagement, top performers, needs attention)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/insights","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","insights"]},"description":"Class insights (roster engagement, top performers, needs attention)"}},{"name":"GET /study/teacher/insights — Insights across all my classes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/insights","host":["{{baseUrl}}"],"path":["study","teacher","insights"]},"description":"Insights across all my classes"}},{"name":"GET /study/teacher/analytics — Totals across my classes (students, active this week, study minutes)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/analytics","host":["{{baseUrl}}"],"path":["study","teacher","analytics"]},"description":"Totals across my classes (students, active this week, study minutes)"}},{"name":"GET /study/teacher/assignments — All assignments across my classes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/assignments","host":["{{baseUrl}}"],"path":["study","teacher","assignments"]},"description":"All assignments across my classes"}},{"name":"GET /study/teacher/classes/{id}/assignments — A class's assignments","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/assignments","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","assignments"]},"description":"A class's assignments"}},{"name":"POST /study/teacher/classes/{id}/assignments — Create an assignment and give it to every student in the class","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/assignments","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","assignments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an assignment and give it to every student in the class"}},{"name":"DELETE /study/teacher/classes/{id}/assignments/{assignmentId} — Delete an assignment and every submission on it","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/assignments/{assignmentId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","assignments","{assignmentId}"]},"description":"Delete an assignment and every submission on it"}},{"name":"GET /study/teacher/classes/{id}/grades — Submissions to review for one assignment","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/grades","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","grades"]},"description":"Submissions to review for one assignment"}},{"name":"PUT /study/teacher/classes/{id}/grades — Override AI scores, leave a note, mark reviewed","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/grades","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","grades"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Override AI scores, leave a note, mark reviewed"}},{"name":"GET /study/teacher/classes/{id}/analytics/{assignmentId} — Analytics for one assignment","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/analytics/{assignmentId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","analytics","{assignmentId}"]},"description":"Analytics for one assignment"}},{"name":"GET /study/teacher/grades — Student submissions across my classes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/grades","host":["{{baseUrl}}"],"path":["study","teacher","grades"]},"description":"Student submissions across my classes"}},{"name":"POST /study/teacher/classes/{id}/attachments — Upload a file to attach to an assignment (multipart \"file\")","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/attachments","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","attachments"]},"description":"Upload a file to attach to an assignment (multipart \"file\")"}},{"name":"GET /study/teacher/classes/{id}/attachments — Class attachments (by id or by assignment)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/attachments","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","attachments"]},"description":"Class attachments (by id or by assignment)"}},{"name":"GET /study/attachments/{id} — Download a class attachment","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/attachments/{id}","host":["{{baseUrl}}"],"path":["study","attachments","{id}"]},"description":"Download a class attachment"}},{"name":"DELETE /study/attachments/{id} — Delete a class attachment","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/attachments/{id}","host":["{{baseUrl}}"],"path":["study","attachments","{id}"]},"description":"Delete a class attachment"}},{"name":"GET /study/teacher/classes/{id}/messages — A class's announcements and messages","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/messages","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","messages"]},"description":"A class's announcements and messages"}},{"name":"POST /study/teacher/classes/{id}/messages — Post an announcement (or a direct message) to a class","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/messages","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","messages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Post an announcement (or a direct message) to a class"}},{"name":"GET /study/teacher/classes/{id}/anonymous-questions — Anonymous questions in a class (no student ids)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/anonymous-questions","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","anonymous-questions"]},"description":"Anonymous questions in a class (no student ids)"}},{"name":"POST /study/teacher/classes/{id}/anonymous-questions — Reply to or archive an anonymous question","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/anonymous-questions","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","anonymous-questions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reply to or archive an anonymous question"}},{"name":"GET /study/teacher/classes/{id}/confidence — Class confidence by topic (last 30 days, anonymous)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/confidence","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","confidence"]},"description":"Class confidence by topic (last 30 days, anonymous)"}},{"name":"POST /study/teacher/tools — Run a teacher tool (AI)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/tools","host":["{{baseUrl}}"],"path":["study","teacher","tools"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Run a teacher tool (AI)"}},{"name":"GET /study/teacher/students — All Students: everyone in the classes I teach (once each, first class shown)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/students","host":["{{baseUrl}}"],"path":["study","teacher","students"]},"description":"All Students: everyone in the classes I teach (once each, first class shown)"}},{"name":"GET /study/teacher/student-progress/{id} — Student progress (last 30 days) for a student in one of my classes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/student-progress/{id}","host":["{{baseUrl}}"],"path":["study","teacher","student-progress","{id}"]},"description":"Student progress (last 30 days) for a student in one of my classes"}},{"name":"GET /study/teacher/classes/{id}/assessments/{studentId} — The saved AI assessment for a student (weekly plan, submission insight or IEP plan)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/assessments/{studentId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","assessments","{studentId}"]},"description":"The saved AI assessment for a student (weekly plan, submission insight or IEP plan)"}},{"name":"POST /study/teacher/classes/{id}/assessments/{studentId} — Generate (or regenerate) the AI assessment from the student's signals","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/assessments/{studentId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","assessments","{studentId}"]},"description":"Generate (or regenerate) the AI assessment from the student's signals"}},{"name":"PATCH /study/teacher/classes/{id}/assessments/{studentId} — Save edits to an assessment (creates the row if none yet)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/assessments/{studentId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","assessments","{studentId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save edits to an assessment (creates the row if none yet)"}},{"name":"GET /study/teacher/check-on — Check-on List: the classes I teach","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/check-on","host":["{{baseUrl}}"],"path":["study","teacher","check-on"]},"description":"Check-on List: the classes I teach"}},{"name":"GET /study/teacher/classes/{id}/check-on — Students to check on in a class (top 5 by risk score)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/check-on","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","check-on"]},"description":"Students to check on in a class (top 5 by risk score)"}},{"name":"POST /study/teacher/classes/{id}/check-on — Recompute risk scores for the class (raises self / teacher nudges) and return the short list","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/check-on","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","check-on"]},"description":"Recompute risk scores for the class (raises self / teacher nudges) and return the short list"}},{"name":"PATCH /study/teacher/nudges/{id} — Mark a teacher check-on nudge done, or dismiss it","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/nudges/{id}","host":["{{baseUrl}}"],"path":["study","teacher","nudges","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark a teacher check-on nudge done, or dismiss it"}},{"name":"GET /study/teacher/classes/{id}/peer-match — Study Buddies in a class: suggestion counts and opt-in summary (no names)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/peer-match","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","peer-match"]},"description":"Study Buddies in a class: suggestion counts and opt-in summary (no names)"}},{"name":"POST /study/teacher/classes/{id}/peer-match — Pair students who asked for help with classmates who offered it (topic overlap first, load spread)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/peer-match","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","peer-match"]},"description":"Pair students who asked for help with classmates who offered it (topic overlap first, load spread)"}},{"name":"GET /study/sped/students/{id} — A student's accommodations, IEP goals and DEP IEP/504 status","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/sped/students/{id}","host":["{{baseUrl}}"],"path":["study","sped","students","{id}"]},"description":"A student's accommodations, IEP goals and DEP IEP/504 status"}},{"name":"GET /study/teacher/special-ed — Special Ed: one row per student × class I teach (accommodations, goals, mistakes, risk; DEP IEP/504 beside)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/special-ed","host":["{{baseUrl}}"],"path":["study","teacher","special-ed"]},"description":"Special Ed: one row per student × class I teach (accommodations, goals, mistakes, risk; DEP IEP/504 beside)"}},{"name":"GET /study/teacher/classes/{id}/accommodations/{studentId} — A student's accommodations (global, this class, or merged)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/accommodations/{studentId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","accommodations","{studentId}"]},"description":"A student's accommodations (global, this class, or merged)"}},{"name":"PUT /study/teacher/classes/{id}/accommodations/{studentId} — Save a student's accommodations (global or this class only)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/accommodations/{studentId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","accommodations","{studentId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save a student's accommodations (global or this class only)"}},{"name":"GET /study/teacher/classes/{id}/iep-goals/{studentId} — A student's IEP goals with live progress (status recomputed; changes email the team)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/iep-goals/{studentId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","iep-goals","{studentId}"]},"description":"A student's IEP goals with live progress (status recomputed; changes email the team)"}},{"name":"POST /study/teacher/classes/{id}/iep-goals/{studentId} — Add an IEP goal (records a first progress snapshot)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/iep-goals/{studentId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","iep-goals","{studentId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an IEP goal (records a first progress snapshot)"}},{"name":"PATCH /study/teacher/iep-goals/{goalId} — Edit an IEP goal (text, measure, target, date, status)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/iep-goals/{goalId}","host":["{{baseUrl}}"],"path":["study","teacher","iep-goals","{goalId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an IEP goal (text, measure, target, date, status)"}},{"name":"DELETE /study/teacher/iep-goals/{goalId} — Delete an IEP goal and its progress history","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/iep-goals/{goalId}","host":["{{baseUrl}}"],"path":["study","teacher","iep-goals","{goalId}"]},"description":"Delete an IEP goal and its progress history"}},{"name":"POST /study/teacher/iep-goals/{goalId} — Recompute: record a fresh progress snapshot for a goal","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/iep-goals/{goalId}","host":["{{baseUrl}}"],"path":["study","teacher","iep-goals","{goalId}"]},"description":"Recompute: record a fresh progress snapshot for a goal"}},{"name":"POST /study/teacher/classes/{id}/progress-report/{studentId} — Draft an IEP/504 progress report with AI (the app's template when AI is off)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/progress-report/{studentId}","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","progress-report","{studentId}"]},"description":"Draft an IEP/504 progress report with AI (the app's template when AI is off)"}},{"name":"GET /study/teacher/classes/{id}/tiered-assignments — Tier sets in a class I teach","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/tiered-assignments","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","tiered-assignments"]},"description":"Tier sets in a class I teach"}},{"name":"POST /study/teacher/classes/{id}/tiered-assignments — Generate a tiered quiz with AI: three parallel tiers, three assignments; students routed by accommodations","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/tiered-assignments","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","tiered-assignments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generate a tiered quiz with AI: three parallel tiers, three assignments; students routed by accommodations"}},{"name":"GET /study/teacher/classes/{id}/tiered-assignments/{setId}/overrides — Per-student tier overrides for a tier set (with the class roster)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/tiered-assignments/{setId}/overrides","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","tiered-assignments","{setId}","overrides"]},"description":"Per-student tier overrides for a tier set (with the class roster)"}},{"name":"PUT /study/teacher/classes/{id}/tiered-assignments/{setId}/override — Set a student's tier for a tier set","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/tiered-assignments/{setId}/override","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","tiered-assignments","{setId}","override"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set a student's tier for a tier set"}},{"name":"DELETE /study/teacher/classes/{id}/tiered-assignments/{setId}/override — Back to Auto (from accommodations) for a student","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/classes/{id}/tiered-assignments/{setId}/override","host":["{{baseUrl}}"],"path":["study","teacher","classes","{id}","tiered-assignments","{setId}","override"]},"description":"Back to Auto (from accommodations) for a student"}},{"name":"GET /study/specialist/students/{id}/classes — A caseload student's active classes (to open their IEP plan)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/specialist/students/{id}/classes","host":["{{baseUrl}}"],"path":["study","specialist","students","{id}","classes"]},"description":"A caseload student's active classes (to open their IEP plan)"}},{"name":"GET /study/specialist/triage — My weekly caseload triage","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/specialist/triage","host":["{{baseUrl}}"],"path":["study","specialist","triage"]},"description":"My weekly caseload triage"}},{"name":"POST /study/specialist/triage — Triage my week with AI: top 3 to follow up, meeting notes, teachers to ping (drafts only)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/specialist/triage","host":["{{baseUrl}}"],"path":["study","specialist","triage"]},"description":"Triage my week with AI: top 3 to follow up, meeting notes, teachers to ping (drafts only)"}},{"name":"PATCH /study/specialist/triage — Save my edits to the weekly triage (meeting notes, teacher drafts, private notes)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/specialist/triage","host":["{{baseUrl}}"],"path":["study","specialist","triage"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save my edits to the weekly triage (meeting notes, teacher drafts, private notes)"}},{"name":"GET /study/parent/children — My linked children (visibility and consent requests)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/parent/children","host":["{{baseUrl}}"],"path":["study","parent","children"]},"description":"My linked children (visibility and consent requests)"}},{"name":"GET /study/parent/children/{id}/visibility — What I can see of a child","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/parent/children/{id}/visibility","host":["{{baseUrl}}"],"path":["study","parent","children","{id}","visibility"]},"description":"What I can see of a child"}},{"name":"PUT /study/parent/children/{id}/visibility — Choose what I see of a child (emits StudyParentVisibilityChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/parent/children/{id}/visibility","host":["{{baseUrl}}"],"path":["study","parent","children","{id}","visibility"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Choose what I see of a child (emits StudyParentVisibilityChanged)"}},{"name":"GET /study/parent/children/{id}/progress — A child's last 30 days (only what I may see)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/parent/children/{id}/progress","host":["{{baseUrl}}"],"path":["study","parent","children","{id}","progress"]},"description":"A child's last 30 days (only what I may see)"}},{"name":"GET /study/parent/children/{id}/iep — A child's accommodations, IEP goal progress and DEP IEP/504 status","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/parent/children/{id}/iep","host":["{{baseUrl}}"],"path":["study","parent","children","{id}","iep"]},"description":"A child's accommodations, IEP goal progress and DEP IEP/504 status"}},{"name":"POST /study/parent/link — Link a child with their invite code (emits StudyParentLinkChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/parent/link","host":["{{baseUrl}}"],"path":["study","parent","link"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Link a child with their invite code (emits StudyParentLinkChanged)"}},{"name":"DELETE /study/parent/children/{id} — Unlink a child I linked with an invite code (emits StudyParentLinkChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/parent/children/{id}","host":["{{baseUrl}}"],"path":["study","parent","children","{id}"]},"description":"Unlink a child I linked with an invite code (emits StudyParentLinkChanged)"}},{"name":"POST /study/parent/children/{id}/consent — Approve my child's parental-consent request (emits StudyComplianceChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/parent/children/{id}/consent","host":["{{baseUrl}}"],"path":["study","parent","children","{id}","consent"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve my child's parental-consent request (emits StudyComplianceChanged)"}},{"name":"GET /study/parent/digests — Weekly digests for my children (newest first)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/parent/digests","host":["{{baseUrl}}"],"path":["study","parent","digests"]},"description":"Weekly digests for my children (newest first)"}},{"name":"POST /study/parent/digest — Generate this week's AI digest for a child (emits StudyParentDigestGenerated)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/parent/digest","host":["{{baseUrl}}"],"path":["study","parent","digest"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generate this week's AI digest for a child (emits StudyParentDigestGenerated)"}},{"name":"GET /study/district/users — Everyone in the district's My Smart Study Partner (search, role, status, at risk)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/district/users","host":["{{baseUrl}}"],"path":["study","district","users"]},"description":"Everyone in the district's My Smart Study Partner (search, role, status, at risk)"}},{"name":"GET /study/district/users/{personId} — One district user: classes taught or taken, activity, moderation flags, parent links (FERPA-audited)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/district/users/{personId}","host":["{{baseUrl}}"],"path":["study","district","users","{personId}"]},"description":"One district user: classes taught or taken, activity, moderation flags, parent links (FERPA-audited)"}},{"name":"GET /study/district/schools — The district's schools with My Smart Study Partner counts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/district/schools","host":["{{baseUrl}}"],"path":["study","district","schools"]},"description":"The district's schools with My Smart Study Partner counts"}},{"name":"GET /study/district/analytics — District analytics: schools, users, active this week, study hours, and the daily trend","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/district/analytics","host":["{{baseUrl}}"],"path":["study","district","analytics"]},"description":"District analytics: schools, users, active this week, study hours, and the daily trend"}},{"name":"GET /study/admin/moderation — Content moderation log with severity counts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/moderation","host":["{{baseUrl}}"],"path":["study","admin","moderation"]},"description":"Content moderation log with severity counts"}},{"name":"GET /study/admin/moderation/{id} — One moderation entry with the full flagged text (audited)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/moderation/{id}","host":["{{baseUrl}}"],"path":["study","admin","moderation","{id}"]},"description":"One moderation entry with the full flagged text (audited)"}},{"name":"GET /study/admin/escalation-contacts — Safety escalation contacts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/escalation-contacts","host":["{{baseUrl}}"],"path":["study","admin","escalation-contacts"]},"description":"Safety escalation contacts"}},{"name":"POST /study/admin/escalation-contacts — Add an escalation contact (emits StudyEscalationContactChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/admin/escalation-contacts","host":["{{baseUrl}}"],"path":["study","admin","escalation-contacts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an escalation contact (emits StudyEscalationContactChanged)"}},{"name":"PUT /study/admin/escalation-contacts/{id} — Edit an escalation contact (emits StudyEscalationContactChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/admin/escalation-contacts/{id}","host":["{{baseUrl}}"],"path":["study","admin","escalation-contacts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an escalation contact (emits StudyEscalationContactChanged)"}},{"name":"DELETE /study/admin/escalation-contacts/{id} — Delete an escalation contact (emits StudyEscalationContactChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/admin/escalation-contacts/{id}","host":["{{baseUrl}}"],"path":["study","admin","escalation-contacts","{id}"]},"description":"Delete an escalation contact (emits StudyEscalationContactChanged)"}},{"name":"GET /study/admin/caseloads — Specialist caseloads","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/caseloads","host":["{{baseUrl}}"],"path":["study","admin","caseloads"]},"description":"Specialist caseloads"}},{"name":"POST /study/admin/caseloads — Add a student to a specialist’s caseload (emits StudyCaseloadChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/admin/caseloads","host":["{{baseUrl}}"],"path":["study","admin","caseloads"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a student to a specialist’s caseload (emits StudyCaseloadChanged)"}},{"name":"GET /study/admin/caseloads/options — Students to add to a caseload","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/caseloads/options","host":["{{baseUrl}}"],"path":["study","admin","caseloads","options"]},"description":"Students to add to a caseload"}},{"name":"DELETE /study/admin/caseloads/{id} — Remove a caseload row (emits StudyCaseloadChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/admin/caseloads/{id}","host":["{{baseUrl}}"],"path":["study","admin","caseloads","{id}"]},"description":"Remove a caseload row (emits StudyCaseloadChanged)"}},{"name":"GET /study/admin/audit-log — FERPA audit log","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/audit-log","host":["{{baseUrl}}"],"path":["study","admin","audit-log"]},"description":"FERPA audit log"}},{"name":"GET /study/admin/tickets — Support tickets (filters: status, type, priority)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/tickets","host":["{{baseUrl}}"],"path":["study","admin","tickets"]},"description":"Support tickets (filters: status, type, priority)"}},{"name":"GET /study/admin/tickets/{id} — One ticket: description and messages","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/tickets/{id}","host":["{{baseUrl}}"],"path":["study","admin","tickets","{id}"]},"description":"One ticket: description and messages"}},{"name":"PATCH /study/admin/tickets/{id} — Change a ticket's status or priority (emits StudyTicketChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/admin/tickets/{id}","host":["{{baseUrl}}"],"path":["study","admin","tickets","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a ticket's status or priority (emits StudyTicketChanged)"}},{"name":"POST /study/admin/tickets/{id}/messages — Reply to a ticket as Support (emits StudyTicketChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/admin/tickets/{id}/messages","host":["{{baseUrl}}"],"path":["study","admin","tickets","{id}","messages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reply to a ticket as Support (emits StudyTicketChanged)"}},{"name":"GET /study/admin/emails/stats — Email totals (sent, failed, suppressed) and by template","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/emails/stats","host":["{{baseUrl}}"],"path":["study","admin","emails","stats"]},"description":"Email totals (sent, failed, suppressed) and by template"}},{"name":"GET /study/admin/emails — The email log","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/emails","host":["{{baseUrl}}"],"path":["study","admin","emails"]},"description":"The email log"}},{"name":"GET /study/admin/emails/audience — How many members an audience reaches","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/emails/audience","host":["{{baseUrl}}"],"path":["study","admin","emails","audience"]},"description":"How many members an audience reaches"}},{"name":"GET /study/admin/emails/people — Find a member to email","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/emails/people","host":["{{baseUrl}}"],"path":["study","admin","emails","people"]},"description":"Find a member to email"}},{"name":"POST /study/admin/emails/preview — Render an announcement as recipients will see it","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/admin/emails/preview","host":["{{baseUrl}}"],"path":["study","admin","emails","preview"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Render an announcement as recipients will see it"}},{"name":"POST /study/admin/emails/send — Send an announcement to a chosen audience (one email per member, through DEP’s mailer; emits StudyEmailSent per email)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/admin/emails/send","host":["{{baseUrl}}"],"path":["study","admin","emails","send"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send an announcement to a chosen audience (one email per member, through DEP’s mailer; emits StudyEmailSent per email)"}},{"name":"GET /study/status — Module switches every member sees (Maintenance Mode banner, AI on/off)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/status","host":["{{baseUrl}}"],"path":["study","status"]},"description":"Module switches every member sees (Maintenance Mode banner, AI on/off)"}},{"name":"GET /study/admin/knowledge-base — The AI assistant's knowledge base","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/knowledge-base","host":["{{baseUrl}}"],"path":["study","admin","knowledge-base"]},"description":"The AI assistant's knowledge base"}},{"name":"POST /study/admin/knowledge-base — Add a knowledge-base article (emits StudyHelpContentChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/admin/knowledge-base","host":["{{baseUrl}}"],"path":["study","admin","knowledge-base"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a knowledge-base article (emits StudyHelpContentChanged)"}},{"name":"GET /study/admin/knowledge-base/{id} — One knowledge-base article","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/knowledge-base/{id}","host":["{{baseUrl}}"],"path":["study","admin","knowledge-base","{id}"]},"description":"One knowledge-base article"}},{"name":"PUT /study/admin/knowledge-base/{id} — Change a knowledge-base article (emits StudyHelpContentChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/admin/knowledge-base/{id}","host":["{{baseUrl}}"],"path":["study","admin","knowledge-base","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a knowledge-base article (emits StudyHelpContentChanged)"}},{"name":"DELETE /study/admin/knowledge-base/{id} — Delete a knowledge-base article (emits StudyHelpContentChanged)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/admin/knowledge-base/{id}","host":["{{baseUrl}}"],"path":["study","admin","knowledge-base","{id}"]},"description":"Delete a knowledge-base article (emits StudyHelpContentChanged)"}},{"name":"POST /study/admin/knowledge-base/extract — Read the text of an uploaded file for a knowledge-base article (the file is not kept)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/admin/knowledge-base/extract","host":["{{baseUrl}}"],"path":["study","admin","knowledge-base","extract"]},"description":"Read the text of an uploaded file for a knowledge-base article (the file is not kept)"}},{"name":"GET /study/admin/users/{personId} — One member: profile, activity, moderation flags, classes, parent links","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/users/{personId}","host":["{{baseUrl}}"],"path":["study","admin","users","{personId}"]},"description":"One member: profile, activity, moderation flags, classes, parent links"}},{"name":"POST /study/admin/users/{personId}/email — Email one member (DEP mailer; suppressed on the trial box; emits StudyEmailSent)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/admin/users/{personId}/email","host":["{{baseUrl}}"],"path":["study","admin","users","{personId}","email"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Email one member (DEP mailer; suppressed on the trial box; emits StudyEmailSent)"}},{"name":"GET /study/admin/schools — Schools with the module’s teachers, students and classes (platform staff: districts with the module)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/schools","host":["{{baseUrl}}"],"path":["study","admin","schools"]},"description":"Schools with the module’s teachers, students and classes (platform staff: districts with the module)"}},{"name":"GET /study/admin/kpis — Usage & KPIs, this window against the previous one","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/kpis","host":["{{baseUrl}}"],"path":["study","admin","kpis"]},"description":"Usage & KPIs, this window against the previous one"}},{"name":"GET /study/admin/escalations — Counselor escalation queue (one status)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/escalations","host":["{{baseUrl}}"],"path":["study","admin","escalations"]},"description":"Counselor escalation queue (one status)"}},{"name":"PATCH /study/admin/escalations/{id} — Acknowledge, resolve or close an escalation; notes (emits StudyEscalationChanged)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/admin/escalations/{id}","host":["{{baseUrl}}"],"path":["study","admin","escalations","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Acknowledge, resolve or close an escalation; notes (emits StudyEscalationChanged)"}},{"name":"GET /study/integrations/status — My connections, the district's, policies and LinkIt status","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/integrations/status","host":["{{baseUrl}}"],"path":["study","integrations","status"]},"description":"My connections, the district's, policies and LinkIt status"}},{"name":"GET /study/classroom/status — My Google Classroom connection and linked courses","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/classroom/status","host":["{{baseUrl}}"],"path":["study","classroom","status"]},"description":"My Google Classroom connection and linked courses"}},{"name":"POST /study/classroom/connect — Start connecting Google Classroom (returns the Google sign-in URL)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/classroom/connect","host":["{{baseUrl}}"],"path":["study","classroom","connect"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start connecting Google Classroom (returns the Google sign-in URL)"}},{"name":"DELETE /study/classroom/connect — Disconnect Google Classroom","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/classroom/connect","host":["{{baseUrl}}"],"path":["study","classroom","connect"]},"description":"Disconnect Google Classroom"}},{"name":"GET /study/classroom/callback — Google OAuth callback (redirects back to the study page)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/classroom/callback","host":["{{baseUrl}}"],"path":["study","classroom","callback"]},"description":"Google OAuth callback (redirects back to the study page)"}},{"name":"GET /study/classroom/courses — My Google Classroom courses (teacher and student)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/classroom/courses","host":["{{baseUrl}}"],"path":["study","classroom","courses"]},"description":"My Google Classroom courses (teacher and student)"}},{"name":"POST /study/classroom/import — Import Classroom courses as my subjects","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/classroom/import","host":["{{baseUrl}}"],"path":["study","classroom","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Import Classroom courses as my subjects"}},{"name":"POST /study/classroom/sync — Sync Classroom course work into my planner","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/classroom/sync","host":["{{baseUrl}}"],"path":["study","classroom","sync"]},"description":"Sync Classroom course work into my planner"}},{"name":"POST /study/classroom/share — Share one of my notes or decks to a Classroom course","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/classroom/share","host":["{{baseUrl}}"],"path":["study","classroom","share"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Share one of my notes or decks to a Classroom course"}},{"name":"GET /study/classroom/materials — Materials of one of my Classroom courses","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/classroom/materials","host":["{{baseUrl}}"],"path":["study","classroom","materials"]},"description":"Materials of one of my Classroom courses"}},{"name":"POST /study/classroom/materials — Import Classroom materials as my notes","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/classroom/materials","host":["{{baseUrl}}"],"path":["study","classroom","materials"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Import Classroom materials as my notes"}},{"name":"GET /study/classroom/grades — My Classroom grades for my linked courses","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/classroom/grades","host":["{{baseUrl}}"],"path":["study","classroom","grades"]},"description":"My Classroom grades for my linked courses"}},{"name":"POST /study/teacher/roster-sync — Teacher sync: every Classroom course I teach → classes, rosters, course work, materials, announcements","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/teacher/roster-sync","host":["{{baseUrl}}"],"path":["study","teacher","roster-sync"]},"description":"Teacher sync: every Classroom course I teach → classes, rosters, course work, materials, announcements"}},{"name":"GET /study/canvas/status — My Canvas connection","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/canvas/status","host":["{{baseUrl}}"],"path":["study","canvas","status"]},"description":"My Canvas connection"}},{"name":"POST /study/canvas/connect — Connect Canvas with a personal access token","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/canvas/connect","host":["{{baseUrl}}"],"path":["study","canvas","connect"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Connect Canvas with a personal access token"}},{"name":"DELETE /study/canvas/connect — Disconnect Canvas (imported classes stay)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/canvas/connect","host":["{{baseUrl}}"],"path":["study","canvas","connect"]},"description":"Disconnect Canvas (imported classes stay)"}},{"name":"GET /study/canvas/courses — My Canvas teacher courses","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/canvas/courses","host":["{{baseUrl}}"],"path":["study","canvas","courses"]},"description":"My Canvas teacher courses"}},{"name":"POST /study/canvas/import — Import Canvas courses as classes","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/canvas/import","host":["{{baseUrl}}"],"path":["study","canvas","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Import Canvas courses as classes"}},{"name":"GET /study/canva/status — My Canva connection, the district's, and the district policy","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/canva/status","host":["{{baseUrl}}"],"path":["study","canva","status"]},"description":"My Canva connection, the district's, and the district policy"}},{"name":"POST /study/canva/connect — Start connecting Canva (mine, or the district's)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/canva/connect","host":["{{baseUrl}}"],"path":["study","canva","connect"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start connecting Canva (mine, or the district's)"}},{"name":"DELETE /study/canva/connect — Disconnect Canva (mine, or the district's)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/canva/connect","host":["{{baseUrl}}"],"path":["study","canva","connect"]},"description":"Disconnect Canva (mine, or the district's)"}},{"name":"GET /study/canva/callback — Canva OAuth callback (redirects back to the study page)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/canva/callback","host":["{{baseUrl}}"],"path":["study","canva","callback"]},"description":"Canva OAuth callback (redirects back to the study page)"}},{"name":"GET /study/canva/designs — Search my Canva designs","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/canva/designs","host":["{{baseUrl}}"],"path":["study","canva","designs"]},"description":"Search my Canva designs"}},{"name":"POST /study/canva/designs/create — Create a Canva design (blank or from a brand template)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/canva/designs/create","host":["{{baseUrl}}"],"path":["study","canva","designs","create"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a Canva design (blank or from a brand template)"}},{"name":"POST /study/canva/import-url — Import a Canva design from its link","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/canva/import-url","host":["{{baseUrl}}"],"path":["study","canva","import-url"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Import a Canva design from its link"}},{"name":"POST /study/canva/attach — Attach a Canva design to my class (exported as a file)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/canva/attach","host":["{{baseUrl}}"],"path":["study","canva","attach"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Attach a Canva design to my class (exported as a file)"}},{"name":"POST /study/canva/from-deck — Turn a library flashcard deck into a Canva worksheet","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/canva/from-deck","host":["{{baseUrl}}"],"path":["study","canva","from-deck"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Turn a library flashcard deck into a Canva worksheet"}},{"name":"POST /study/canva/attachments/{id}/refresh — Re-export a Canva attachment","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/study/canva/attachments/{id}/refresh","host":["{{baseUrl}}"],"path":["study","canva","attachments","{id}","refresh"]},"description":"Re-export a Canva attachment"}},{"name":"PUT /study/canva/attachments/{id}/access — How students open a Canva attachment (PDF, view link, own copy)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/canva/attachments/{id}/access","host":["{{baseUrl}}"],"path":["study","canva","attachments","{id}","access"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"How students open a Canva attachment (PDF, view link, own copy)"}},{"name":"POST /study/canva/code-quiz — Create a Canva Code interactive quiz design","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/canva/code-quiz","host":["{{baseUrl}}"],"path":["study","canva","code-quiz"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a Canva Code interactive quiz design"}},{"name":"PUT /study/canva/code-quiz — Finish a Canva Code quiz: its published link (and responses sheet)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/canva/code-quiz","host":["{{baseUrl}}"],"path":["study","canva","code-quiz"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Finish a Canva Code quiz: its published link (and responses sheet)"}},{"name":"GET /study/canva/code-quiz/{assignmentId}/responses — Responses collected by a Canva Code quiz","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/canva/code-quiz/{assignmentId}/responses","host":["{{baseUrl}}"],"path":["study","canva","code-quiz","{assignmentId}","responses"]},"description":"Responses collected by a Canva Code quiz"}},{"name":"GET /study/canva/comments/{designId} — Comments on a Canva design","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/canva/comments/{designId}","host":["{{baseUrl}}"],"path":["study","canva","comments","{designId}"]},"description":"Comments on a Canva design"}},{"name":"POST /study/canva/comments/{designId} — Post a comment on a Canva design","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/canva/comments/{designId}","host":["{{baseUrl}}"],"path":["study","canva","comments","{designId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Post a comment on a Canva design"}},{"name":"GET /study/canva/district-policy — The district Canva account and the Canva policy in force","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/canva/district-policy","host":["{{baseUrl}}"],"path":["study","canva","district-policy"]},"description":"The district Canva account and the Canva policy in force"}},{"name":"PUT /study/canva/district-policy — Set the district Canva policy (emits StudyIntegrationChanged)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/canva/district-policy","host":["{{baseUrl}}"],"path":["study","canva","district-policy"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set the district Canva policy (emits StudyIntegrationChanged)"}},{"name":"GET /study/admin/linkit — LinkIt! connection, counts, latest run (never the key)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/linkit","host":["{{baseUrl}}"],"path":["study","admin","linkit"]},"description":"LinkIt! connection, counts, latest run (never the key)"}},{"name":"GET /study/admin/linkit/runs — LinkIt! sync history","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/linkit/runs","host":["{{baseUrl}}"],"path":["study","admin","linkit","runs"]},"description":"LinkIt! sync history"}},{"name":"GET /study/admin/linkit/runs/{id} — One LinkIt! sync run with its raw events (200 max)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/linkit/runs/{id}","host":["{{baseUrl}}"],"path":["study","admin","linkit","runs","{id}"]},"description":"One LinkIt! sync run with its raw events (200 max)"}},{"name":"POST /study/admin/linkit/sync — Sync now / Roster only / Results only (refused in trial and pool districts)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/admin/linkit/sync","host":["{{baseUrl}}"],"path":["study","admin","linkit","sync"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Sync now / Roster only / Results only (refused in trial and pool districts)"}},{"name":"PUT /study/admin/linkit/credentials — Connect, rotate the private key, or save the role map (key stored sealed, never returned)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/admin/linkit/credentials","host":["{{baseUrl}}"],"path":["study","admin","linkit","credentials"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Connect, rotate the private key, or save the role map (key stored sealed, never returned)"}},{"name":"DELETE /study/admin/linkit/credentials — Disconnect LinkIt! (removes the stored key; history stays)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/study/admin/linkit/credentials","host":["{{baseUrl}}"],"path":["study","admin","linkit","credentials"]},"description":"Disconnect LinkIt! (removes the stored key; history stays)"}},{"name":"GET /study/admin/linkit/conflicts — Pending LinkIt! roster conflicts (500 max)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/linkit/conflicts","host":["{{baseUrl}}"],"path":["study","admin","linkit","conflicts"]},"description":"Pending LinkIt! roster conflicts (500 max)"}},{"name":"POST /study/admin/linkit/conflicts/{id} — Link to existing person / Resolve / Ignore a conflict (emits StudyLinkitConflictResolved)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/admin/linkit/conflicts/{id}","host":["{{baseUrl}}"],"path":["study","admin","linkit","conflicts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Link to existing person / Resolve / Ignore a conflict (emits StudyLinkitConflictResolved)"}},{"name":"GET /study/admin/linkit/all-districts — LinkIt! across districts (Omni Forge platform staff only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/admin/linkit/all-districts","host":["{{baseUrl}}"],"path":["study","admin","linkit","all-districts"]},"description":"LinkIt! across districts (Omni Forge platform staff only)"}},{"name":"GET /study/help/articles — In-app help articles","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/help/articles","host":["{{baseUrl}}"],"path":["study","help","articles"]},"description":"In-app help articles"}},{"name":"GET /study/notifications — My study notifications","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/notifications","host":["{{baseUrl}}"],"path":["study","notifications"]},"description":"My study notifications"}},{"name":"POST /study/notifications/read — Mark my study notifications read (emits StudyNotificationsRead)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/notifications/read","host":["{{baseUrl}}"],"path":["study","notifications","read"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark my study notifications read (emits StudyNotificationsRead)"}},{"name":"GET /study/help/contact — The district's study support contact","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/help/contact","host":["{{baseUrl}}"],"path":["study","help","contact"]},"description":"The district's study support contact"}},{"name":"POST /study/support/tickets — Open a support ticket, bug report or idea (emits StudyTicketChanged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/study/support/tickets","host":["{{baseUrl}}"],"path":["study","support","tickets"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Open a support ticket, bug report or idea (emits StudyTicketChanged)"}},{"name":"GET /study/support/tickets — My support tickets","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/study/support/tickets","host":["{{baseUrl}}"],"path":["study","support","tickets"]},"description":"My support tickets"}}]},{"name":"Tech Support","item":[{"name":"GET /tech/me — Who I am in Tech Support","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/me","host":["{{baseUrl}}"],"path":["tech","me"]},"description":"Who I am in Tech Support"}},{"name":"GET /tech/dashboard — Help desk dashboard","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/dashboard","host":["{{baseUrl}}"],"path":["tech","dashboard"]},"description":"Help desk dashboard"}},{"name":"GET /tech/insights — Refresh planning, repeat repairs, reliability","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/insights","host":["{{baseUrl}}"],"path":["tech","insights"]},"description":"Refresh planning, repeat repairs, reliability"}},{"name":"GET /tech/tickets — Tickets","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/tickets","host":["{{baseUrl}}"],"path":["tech","tickets"]},"description":"Tickets"}},{"name":"POST /tech/tickets — File a request","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/tickets","host":["{{baseUrl}}"],"path":["tech","tickets"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"File a request"}},{"name":"POST /tech/triage — AI triage and self-help before filing","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/triage","host":["{{baseUrl}}"],"path":["tech","triage"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"AI triage and self-help before filing"}},{"name":"GET /tech/tickets/{id} — One ticket","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/tickets/{id}","host":["{{baseUrl}}"],"path":["tech","tickets","{id}"]},"description":"One ticket"}},{"name":"PATCH /tech/tickets/{id} — Update a ticket","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/tickets/{id}","host":["{{baseUrl}}"],"path":["tech","tickets","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a ticket"}},{"name":"POST /tech/tickets/{id}/comments — Reply or add an internal note","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/tickets/{id}/comments","host":["{{baseUrl}}"],"path":["tech","tickets","{id}","comments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reply or add an internal note"}},{"name":"POST /tech/tickets/{id}/rate — Rate the help received","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/tickets/{id}/rate","host":["{{baseUrl}}"],"path":["tech","tickets","{id}","rate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rate the help received"}},{"name":"GET /tech/agents — Technicians and their open tickets","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/agents","host":["{{baseUrl}}"],"path":["tech","agents"]},"description":"Technicians and their open tickets"}},{"name":"GET /tech/devices — Devices","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/devices","host":["{{baseUrl}}"],"path":["tech","devices"]},"description":"Devices"}},{"name":"GET /tech/devices/{id} — One device: assignments, repairs, tickets","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/devices/{id}","host":["{{baseUrl}}"],"path":["tech","devices","{id}"]},"description":"One device: assignments, repairs, tickets"}},{"name":"POST /tech/devices/{id}/checkout — Check a device out","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/devices/{id}/checkout","host":["{{baseUrl}}"],"path":["tech","devices","{id}","checkout"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Check a device out"}},{"name":"POST /tech/devices/{id}/checkin — Check a device in (optionally straight to repair)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/devices/{id}/checkin","host":["{{baseUrl}}"],"path":["tech","devices","{id}","checkin"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Check a device in (optionally straight to repair)"}},{"name":"GET /tech/people — Find a student or staff member","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/people","host":["{{baseUrl}}"],"path":["tech","people"]},"description":"Find a student or staff member"}},{"name":"GET /tech/repairs — Repairs","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/repairs","host":["{{baseUrl}}"],"path":["tech","repairs"]},"description":"Repairs"}},{"name":"POST /tech/repairs — Start a repair","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/repairs","host":["{{baseUrl}}"],"path":["tech","repairs"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a repair"}},{"name":"GET /tech/repairs/{id} — One repair","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/repairs/{id}","host":["{{baseUrl}}"],"path":["tech","repairs","{id}"]},"description":"One repair"}},{"name":"PATCH /tech/repairs/{id} — Update a repair","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/repairs/{id}","host":["{{baseUrl}}"],"path":["tech","repairs","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a repair"}},{"name":"GET /tech/parts — Parts room","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/parts","host":["{{baseUrl}}"],"path":["tech","parts"]},"description":"Parts room"}},{"name":"POST /tech/parts — Add a part","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/parts","host":["{{baseUrl}}"],"path":["tech","parts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a part"}},{"name":"PATCH /tech/parts/{id} — Update or restock a part","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/parts/{id}","host":["{{baseUrl}}"],"path":["tech","parts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update or restock a part"}},{"name":"GET /tech/kb — Knowledge base","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/kb","host":["{{baseUrl}}"],"path":["tech","kb"]},"description":"Knowledge base"}},{"name":"POST /tech/kb — Write an article","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/kb","host":["{{baseUrl}}"],"path":["tech","kb"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Write an article"}},{"name":"GET /tech/kb/{slug} — One article","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/kb/{slug}","host":["{{baseUrl}}"],"path":["tech","kb","{slug}"]},"description":"One article"}},{"name":"PATCH /tech/kb/{slug} — Edit an article","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/kb/{slug}","host":["{{baseUrl}}"],"path":["tech","kb","{slug}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an article"}},{"name":"POST /tech/kb/{slug}/helpful — Was this helpful?","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/kb/{slug}/helpful","host":["{{baseUrl}}"],"path":["tech","kb","{slug}","helpful"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Was this helpful?"}},{"name":"GET /tech/settings — Teams, SLA targets, technicians","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/settings","host":["{{baseUrl}}"],"path":["tech","settings"]},"description":"Teams, SLA targets, technicians"}},{"name":"PUT /tech/settings/sla — Set SLA targets","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/settings/sla","host":["{{baseUrl}}"],"path":["tech","settings","sla"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set SLA targets"}},{"name":"POST /tech/settings/agents — Add or change a technician","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/settings/agents","host":["{{baseUrl}}"],"path":["tech","settings","agents"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add or change a technician"}},{"name":"GET /tech/reports — Support report: SLA, volume, technicians, satisfaction","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/reports","host":["{{baseUrl}}"],"path":["tech","reports"]},"description":"Support report: SLA, volume, technicians, satisfaction"}},{"name":"GET /tech/reports/tickets — Every ticket in the period (CSV export)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/reports/tickets","host":["{{baseUrl}}"],"path":["tech","reports","tickets"]},"description":"Every ticket in the period (CSV export)"}},{"name":"POST /tech/remote/code — Get a one-time remote support code","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/remote/code","host":["{{baseUrl}}"],"path":["tech","remote","code"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Get a one-time remote support code"}},{"name":"GET /tech/remote/current — My current remote session","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/remote/current","host":["{{baseUrl}}"],"path":["tech","remote","current"]},"description":"My current remote session"}},{"name":"POST /tech/remote/connect — Technician: connect with the code the person read out","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/remote/connect","host":["{{baseUrl}}"],"path":["tech","remote","connect"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Technician: connect with the code the person read out"}},{"name":"POST /tech/remote/{id}/room — Join the session room","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tech/remote/{id}/room","host":["{{baseUrl}}"],"path":["tech","remote","{id}","room"]},"description":"Join the session room"}},{"name":"POST /tech/remote/{id}/end — End the session","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tech/remote/{id}/end","host":["{{baseUrl}}"],"path":["tech","remote","{id}","end"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"End the session"}},{"name":"GET /tech/remote — Recent remote sessions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tech/remote","host":["{{baseUrl}}"],"path":["tech","remote"]},"description":"Recent remote sessions"}}]},{"name":"Support panel","item":[{"name":"GET /support/me — Support panel: who I am and whether the tab shows","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/support/me","host":["{{baseUrl}}"],"path":["support","me"]},"description":"Support panel: who I am and whether the tab shows"}},{"name":"PUT /support/settings — District admin: show or hide the right-side Support tab","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/support/settings","host":["{{baseUrl}}"],"path":["support","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"District admin: show or hide the right-side Support tab"}},{"name":"POST /support/suggest — Self-help articles and a suggested type while they type","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/support/suggest","host":["{{baseUrl}}"],"path":["support","suggest"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Self-help articles and a suggested type while they type"}},{"name":"POST /support/requests — File a support request (a Tech Support ticket)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/support/requests","host":["{{baseUrl}}"],"path":["support","requests"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"File a support request (a Tech Support ticket)"}},{"name":"GET /support/requests — My requests and bug reports","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/support/requests","host":["{{baseUrl}}"],"path":["support","requests"]},"description":"My requests and bug reports"}},{"name":"POST /support/bugs — Report a bug (a Tech Support ticket of type Bug report)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/support/bugs","host":["{{baseUrl}}"],"path":["support","bugs"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Report a bug (a Tech Support ticket of type Bug report)"}},{"name":"POST /support/feedback — Leave feedback","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/support/feedback","host":["{{baseUrl}}"],"path":["support","feedback"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Leave feedback"}},{"name":"GET /support/tickets/{id} — One ticket I can see, with its files","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/support/tickets/{id}","host":["{{baseUrl}}"],"path":["support","tickets","{id}"]},"description":"One ticket I can see, with its files"}},{"name":"POST /support/tickets/{id}/comments — Reply on a ticket","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/support/tickets/{id}/comments","host":["{{baseUrl}}"],"path":["support","tickets","{id}","comments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reply on a ticket"}},{"name":"POST /support/tickets/{id}/rate — Rate the help received","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/support/tickets/{id}/rate","host":["{{baseUrl}}"],"path":["support","tickets","{id}","rate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rate the help received"}},{"name":"POST /support/tickets/{id}/attachments — Add a screenshot or file to a ticket (multipart, one file)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/support/tickets/{id}/attachments","host":["{{baseUrl}}"],"path":["support","tickets","{id}","attachments"]},"description":"Add a screenshot or file to a ticket (multipart, one file)"}},{"name":"GET /support/attachments/{id} — Open a ticket file","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/support/attachments/{id}","host":["{{baseUrl}}"],"path":["support","attachments","{id}"]},"description":"Open a ticket file"}},{"name":"GET /support/kb — Help center: articles","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/support/kb","host":["{{baseUrl}}"],"path":["support","kb"]},"description":"Help center: articles"}},{"name":"GET /support/kb/{slug} — Help center: one article","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/support/kb/{slug}","host":["{{baseUrl}}"],"path":["support","kb","{slug}"]},"description":"Help center: one article"}},{"name":"POST /support/kb/{slug}/helpful — Help center: was this helpful?","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/support/kb/{slug}/helpful","host":["{{baseUrl}}"],"path":["support","kb","{slug}","helpful"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Help center: was this helpful?"}},{"name":"GET /support/feedback/report — Feedback report (technology team and district admins)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/support/feedback/report","host":["{{baseUrl}}"],"path":["support","feedback","report"]},"description":"Feedback report (technology team and district admins)"}},{"name":"GET /support/inbox — Every request, bug and feedback (technology team and district admins)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/support/inbox","host":["{{baseUrl}}"],"path":["support","inbox"]},"description":"Every request, bug and feedback (technology team and district admins)"}},{"name":"PATCH /support/inbox/{id} — Staff: change status, priority or type","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/support/inbox/{id}","host":["{{baseUrl}}"],"path":["support","inbox","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Staff: change status, priority or type"}}]},{"name":"Document Management","item":[{"name":"GET /dms/me — Who I am in Document Management, and my menu","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/me","host":["{{baseUrl}}"],"path":["dms","me"]},"description":"Who I am in Document Management, and my menu"}},{"name":"GET /dms/dashboard — My approvals, reviews, acknowledgements and recent documents","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/dashboard","host":["{{baseUrl}}"],"path":["dms","dashboard"]},"description":"My approvals, reviews, acknowledgements and recent documents"}},{"name":"GET /dms/notifications — My Document Management notices","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/notifications","host":["{{baseUrl}}"],"path":["dms","notifications"]},"description":"My Document Management notices"}},{"name":"POST /dms/notifications/read — Mark notices read","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/notifications/read","host":["{{baseUrl}}"],"path":["dms","notifications","read"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark notices read"}},{"name":"GET /dms/libraries — Libraries I can open","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/libraries","host":["{{baseUrl}}"],"path":["dms","libraries"]},"description":"Libraries I can open"}},{"name":"POST /dms/libraries — Add a library (district administrator)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/libraries","host":["{{baseUrl}}"],"path":["dms","libraries"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a library (district administrator)"}},{"name":"PATCH /dms/libraries/{id} — Edit or archive a library","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/libraries/{id}","host":["{{baseUrl}}"],"path":["dms","libraries","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit or archive a library"}},{"name":"GET /dms/browse — A library or folder: sub-folders and documents","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/browse","host":["{{baseUrl}}"],"path":["dms","browse"]},"description":"A library or folder: sub-folders and documents"}},{"name":"GET /dms/tree — The folder tree of a library","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/tree","host":["{{baseUrl}}"],"path":["dms","tree"]},"description":"The folder tree of a library"}},{"name":"POST /dms/folders — New folder","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/folders","host":["{{baseUrl}}"],"path":["dms","folders"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"New folder"}},{"name":"PATCH /dms/folders/{id} — Rename, move or change a folder","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/folders/{id}","host":["{{baseUrl}}"],"path":["dms","folders","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rename, move or change a folder"}},{"name":"DELETE /dms/folders/{id} — Move a folder (and everything in it) to the recycle bin","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/dms/folders/{id}","host":["{{baseUrl}}"],"path":["dms","folders","{id}"]},"description":"Move a folder (and everything in it) to the recycle bin"}},{"name":"POST /dms/folders/{id}/restore — Restore a folder from the recycle bin","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/dms/folders/{id}/restore","host":["{{baseUrl}}"],"path":["dms","folders","{id}","restore"]},"description":"Restore a folder from the recycle bin"}},{"name":"GET /dms/favorites — My favourites","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/favorites","host":["{{baseUrl}}"],"path":["dms","favorites"]},"description":"My favourites"}},{"name":"POST /dms/favorites — Star or unstar","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/favorites","host":["{{baseUrl}}"],"path":["dms","favorites"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Star or unstar"}},{"name":"GET /dms/recent — Documents I opened or changed lately","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/recent","host":["{{baseUrl}}"],"path":["dms","recent"]},"description":"Documents I opened or changed lately"}},{"name":"GET /dms/documents — Search documents (metadata: title, tags, type, owner, school, department, dates)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/documents","host":["{{baseUrl}}"],"path":["dms","documents"]},"description":"Search documents (metadata: title, tags, type, owner, school, department, dates)"}},{"name":"POST /dms/documents — Upload a document (multipart: libraryId, folderId?, title?, docType?, … then the file)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/dms/documents","host":["{{baseUrl}}"],"path":["dms","documents"]},"description":"Upload a document (multipart: libraryId, folderId?, title?, docType?, … then the file)"}},{"name":"GET /dms/documents/{id} — One document: versions, workflows, signatures, acknowledgements, activity","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/documents/{id}","host":["{{baseUrl}}"],"path":["dms","documents","{id}"]},"description":"One document: versions, workflows, signatures, acknowledgements, activity"}},{"name":"PATCH /dms/documents/{id} — Edit details and tags","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/documents/{id}","host":["{{baseUrl}}"],"path":["dms","documents","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit details and tags"}},{"name":"POST /dms/documents/{id}/versions — Upload a new version (multipart: note?, then the file)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/dms/documents/{id}/versions","host":["{{baseUrl}}"],"path":["dms","documents","{id}","versions"]},"description":"Upload a new version (multipart: note?, then the file)"}},{"name":"POST /dms/documents/{id}/versions/{versionId}/restore — Make an old version current again (as a new version)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/dms/documents/{id}/versions/{versionId}/restore","host":["{{baseUrl}}"],"path":["dms","documents","{id}","versions","{versionId}","restore"]},"description":"Make an old version current again (as a new version)"}},{"name":"POST /dms/documents/{id}/checkout — Check out (lock for editing)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/dms/documents/{id}/checkout","host":["{{baseUrl}}"],"path":["dms","documents","{id}","checkout"]},"description":"Check out (lock for editing)"}},{"name":"POST /dms/documents/{id}/checkin — Check in without a new file (or release)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/dms/documents/{id}/checkin","host":["{{baseUrl}}"],"path":["dms","documents","{id}","checkin"]},"description":"Check in without a new file (or release)"}},{"name":"POST /dms/documents/{id}/checkin-file — Check in with the edited file (multipart: note?, file)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/dms/documents/{id}/checkin-file","host":["{{baseUrl}}"],"path":["dms","documents","{id}","checkin-file"]},"description":"Check in with the edited file (multipart: note?, file)"}},{"name":"POST /dms/bulk/move — Move documents","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/bulk/move","host":["{{baseUrl}}"],"path":["dms","bulk","move"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move documents"}},{"name":"POST /dms/bulk/copy — Copy documents","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/bulk/copy","host":["{{baseUrl}}"],"path":["dms","bulk","copy"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Copy documents"}},{"name":"POST /dms/bulk/delete — Move documents to the recycle bin","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/bulk/delete","host":["{{baseUrl}}"],"path":["dms","bulk","delete"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move documents to the recycle bin"}},{"name":"POST /dms/bulk/restore — Restore documents from the recycle bin","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/bulk/restore","host":["{{baseUrl}}"],"path":["dms","bulk","restore"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Restore documents from the recycle bin"}},{"name":"POST /dms/bulk/tag — Add or remove tags","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/bulk/tag","host":["{{baseUrl}}"],"path":["dms","bulk","tag"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add or remove tags"}},{"name":"GET /dms/recycle-bin — Deleted documents and folders I can restore","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/recycle-bin","host":["{{baseUrl}}"],"path":["dms","recycle-bin"]},"description":"Deleted documents and folders I can restore"}},{"name":"GET /dms/documents/{id}/view — Open the file in the browser (PDF and images)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/documents/{id}/view","host":["{{baseUrl}}"],"path":["dms","documents","{id}","view"]},"description":"Open the file in the browser (PDF and images)"}},{"name":"GET /dms/documents/{id}/download — Download the file","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/documents/{id}/download","host":["{{baseUrl}}"],"path":["dms","documents","{id}","download"]},"description":"Download the file"}},{"name":"GET /dms/lookups — Types, departments, roles, schools, groups, templates and schedules for forms","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/lookups","host":["{{baseUrl}}"],"path":["dms","lookups"]},"description":"Types, departments, roles, schools, groups, templates and schedules for forms"}},{"name":"GET /dms/people — Find staff (for approvers, signers, grants)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/people","host":["{{baseUrl}}"],"path":["dms","people"]},"description":"Find staff (for approvers, signers, grants)"}},{"name":"GET /dms/approvals — Steps waiting for me (or decided by me)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/approvals","host":["{{baseUrl}}"],"path":["dms","approvals"]},"description":"Steps waiting for me (or decided by me)"}},{"name":"GET /dms/in-review — My documents in a workflow now","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/in-review","host":["{{baseUrl}}"],"path":["dms","in-review"]},"description":"My documents in a workflow now"}},{"name":"GET /dms/workflows — Workflows across the documents I can read","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/workflows","host":["{{baseUrl}}"],"path":["dms","workflows"]},"description":"Workflows across the documents I can read"}},{"name":"POST /dms/documents/{id}/workflows — Start a sign-off workflow on the current version","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/documents/{id}/workflows","host":["{{baseUrl}}"],"path":["dms","documents","{id}","workflows"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a sign-off workflow on the current version"}},{"name":"POST /dms/steps/{id}/decide — Approve, reject or request changes (comment required to reject or request changes)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/steps/{id}/decide","host":["{{baseUrl}}"],"path":["dms","steps","{id}","decide"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve, reject or request changes (comment required to reject or request changes)"}},{"name":"POST /dms/steps/{id}/delegate — Pass my approval to someone else","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/steps/{id}/delegate","host":["{{baseUrl}}"],"path":["dms","steps","{id}","delegate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Pass my approval to someone else"}},{"name":"POST /dms/workflows/{id}/comment — Comment on a workflow","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/workflows/{id}/comment","host":["{{baseUrl}}"],"path":["dms","workflows","{id}","comment"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Comment on a workflow"}},{"name":"POST /dms/workflows/{id}/cancel — Cancel a workflow","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/workflows/{id}/cancel","host":["{{baseUrl}}"],"path":["dms","workflows","{id}","cancel"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Cancel a workflow"}},{"name":"GET /dms/templates — Workflow templates","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/templates","host":["{{baseUrl}}"],"path":["dms","templates"]},"description":"Workflow templates"}},{"name":"POST /dms/templates — New workflow template","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/templates","host":["{{baseUrl}}"],"path":["dms","templates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"New workflow template"}},{"name":"PATCH /dms/templates/{id} — Edit a workflow template (running workflows keep their copy)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/templates/{id}","host":["{{baseUrl}}"],"path":["dms","templates","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a workflow template (running workflows keep their copy)"}},{"name":"DELETE /dms/templates/{id} — Archive a workflow template","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/dms/templates/{id}","host":["{{baseUrl}}"],"path":["dms","templates","{id}"]},"description":"Archive a workflow template"}},{"name":"POST /dms/documents/{id}/esign — Send the current version for e-signature through Document Signing","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/documents/{id}/esign","host":["{{baseUrl}}"],"path":["dms","documents","{id}","esign"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send the current version for e-signature through Document Signing"}},{"name":"GET /dms/acknowledgements/mine — What I have been asked to read and acknowledge","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/acknowledgements/mine","host":["{{baseUrl}}"],"path":["dms","acknowledgements","mine"]},"description":"What I have been asked to read and acknowledge"}},{"name":"GET /dms/acknowledgements — Acknowledgement campaigns I manage","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/acknowledgements","host":["{{baseUrl}}"],"path":["dms","acknowledgements"]},"description":"Acknowledgement campaigns I manage"}},{"name":"GET /dms/acknowledgements/{id} — Who has and hasn’t acknowledged","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/acknowledgements/{id}","host":["{{baseUrl}}"],"path":["dms","acknowledgements","{id}"]},"description":"Who has and hasn’t acknowledged"}},{"name":"POST /dms/documents/{id}/acknowledgements — Publish for read-and-acknowledge","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/documents/{id}/acknowledgements","host":["{{baseUrl}}"],"path":["dms","documents","{id}","acknowledgements"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Publish for read-and-acknowledge"}},{"name":"POST /dms/acknowledgements/{id}/acknowledge — I have read and acknowledge this","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/dms/acknowledgements/{id}/acknowledge","host":["{{baseUrl}}"],"path":["dms","acknowledgements","{id}","acknowledge"]},"description":"I have read and acknowledge this"}},{"name":"POST /dms/acknowledgements/{id}/remind — Remind everyone who has not acknowledged","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/dms/acknowledgements/{id}/remind","host":["{{baseUrl}}"],"path":["dms","acknowledgements","{id}","remind"]},"description":"Remind everyone who has not acknowledged"}},{"name":"POST /dms/acknowledgements/{id}/people — Add people to a campaign","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/acknowledgements/{id}/people","host":["{{baseUrl}}"],"path":["dms","acknowledgements","{id}","people"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add people to a campaign"}},{"name":"POST /dms/acknowledgements/{id}/close — Close a campaign","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/dms/acknowledgements/{id}/close","host":["{{baseUrl}}"],"path":["dms","acknowledgements","{id}","close"]},"description":"Close a campaign"}},{"name":"GET /dms/retention/schedules — Retention schedules","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/retention/schedules","host":["{{baseUrl}}"],"path":["dms","retention","schedules"]},"description":"Retention schedules"}},{"name":"POST /dms/retention/schedules — New retention schedule","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/retention/schedules","host":["{{baseUrl}}"],"path":["dms","retention","schedules"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"New retention schedule"}},{"name":"PATCH /dms/retention/schedules/{id} — Edit a retention schedule","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/retention/schedules/{id}","host":["{{baseUrl}}"],"path":["dms","retention","schedules","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a retention schedule"}},{"name":"GET /dms/retention/holds — Legal holds","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/retention/holds","host":["{{baseUrl}}"],"path":["dms","retention","holds"]},"description":"Legal holds"}},{"name":"POST /dms/retention/holds — Place a legal hold","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/retention/holds","host":["{{baseUrl}}"],"path":["dms","retention","holds"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Place a legal hold"}},{"name":"GET /dms/retention/holds/{id} — Documents under a hold","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/retention/holds/{id}","host":["{{baseUrl}}"],"path":["dms","retention","holds","{id}"]},"description":"Documents under a hold"}},{"name":"POST /dms/retention/holds/{id}/documents — Add documents to a hold","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/retention/holds/{id}/documents","host":["{{baseUrl}}"],"path":["dms","retention","holds","{id}","documents"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add documents to a hold"}},{"name":"POST /dms/retention/holds/{id}/release — Release a hold (or some of its documents)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/retention/holds/{id}/release","host":["{{baseUrl}}"],"path":["dms","retention","holds","{id}","release"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Release a hold (or some of its documents)"}},{"name":"GET /dms/retention/disposition — Disposition queue","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/retention/disposition","host":["{{baseUrl}}"],"path":["dms","retention","disposition"]},"description":"Disposition queue"}},{"name":"POST /dms/retention/disposition — Approve destruction (soft delete with audit), defer or keep","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/retention/disposition","host":["{{baseUrl}}"],"path":["dms","retention","disposition"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve destruction (soft delete with audit), defer or keep"}},{"name":"PATCH /dms/documents/{id}/retention — Set a document’s retention schedule or legal hold","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/documents/{id}/retention","host":["{{baseUrl}}"],"path":["dms","documents","{id}","retention"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set a document’s retention schedule or legal hold"}},{"name":"GET /dms/permissions — Grants on a library, folder or document","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/permissions","host":["{{baseUrl}}"],"path":["dms","permissions"]},"description":"Grants on a library, folder or document"}},{"name":"POST /dms/permissions — Give access","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/permissions","host":["{{baseUrl}}"],"path":["dms","permissions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Give access"}},{"name":"DELETE /dms/permissions/{id} — Remove access","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/dms/permissions/{id}","host":["{{baseUrl}}"],"path":["dms","permissions","{id}"]},"description":"Remove access"}},{"name":"GET /dms/documents/{id}/access — Who can see this document and why","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/documents/{id}/access","host":["{{baseUrl}}"],"path":["dms","documents","{id}","access"]},"description":"Who can see this document and why"}},{"name":"GET /dms/groups — DMS groups","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/groups","host":["{{baseUrl}}"],"path":["dms","groups"]},"description":"DMS groups"}},{"name":"POST /dms/groups — New group","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/groups","host":["{{baseUrl}}"],"path":["dms","groups"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"New group"}},{"name":"PATCH /dms/groups/{id} — Edit a group or its members","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/groups/{id}","host":["{{baseUrl}}"],"path":["dms","groups","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a group or its members"}},{"name":"GET /dms/settings — Document Management settings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/settings","host":["{{baseUrl}}"],"path":["dms","settings"]},"description":"Document Management settings"}},{"name":"PUT /dms/settings — Save settings","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/settings","host":["{{baseUrl}}"],"path":["dms","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save settings"}},{"name":"GET /dms/reports — Turnaround, bottlenecks, acknowledgement completion, storage","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/reports","host":["{{baseUrl}}"],"path":["dms","reports"]},"description":"Turnaround, bottlenecks, acknowledgement completion, storage"}},{"name":"GET /dms/activity — Activity log (who viewed, downloaded, edited, approved) — exportable","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/activity","host":["{{baseUrl}}"],"path":["dms","activity"]},"description":"Activity log (who viewed, downloaded, edited, approved) — exportable"}},{"name":"GET /dms/elsewhere — Documents kept elsewhere in DEP","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/elsewhere","host":["{{baseUrl}}"],"path":["dms","elsewhere"]},"description":"Documents kept elsewhere in DEP"}},{"name":"POST /dms/elsewhere/building-documents/{id}/file — File a building document into Document Management","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/elsewhere/building-documents/{id}/file","host":["{{baseUrl}}"],"path":["dms","elsewhere","building-documents","{id}","file"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"File a building document into Document Management"}},{"name":"POST /dms/elsewhere/hr-documents/{id}/file — File a personnel file into a confidential library","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/elsewhere/hr-documents/{id}/file","host":["{{baseUrl}}"],"path":["dms","elsewhere","hr-documents","{id}","file"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"File a personnel file into a confidential library"}},{"name":"GET /dms/admin/check — District administrator check (for admin-only screens)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/admin/check","host":["{{baseUrl}}"],"path":["dms","admin","check"]},"description":"District administrator check (for admin-only screens)"}},{"name":"GET /dms/contracts — Contracts I can see, with KPI tiles and filter options","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/contracts","host":["{{baseUrl}}"],"path":["dms","contracts"]},"description":"Contracts I can see, with KPI tiles and filter options"}},{"name":"POST /dms/contracts — Track a document as a contract","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/contracts","host":["{{baseUrl}}"],"path":["dms","contracts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Track a document as a contract"}},{"name":"GET /dms/contracts/needs-review — Contracts needing a decision before their notice deadline","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/contracts/needs-review","host":["{{baseUrl}}"],"path":["dms","contracts","needs-review"]},"description":"Contracts needing a decision before their notice deadline"}},{"name":"GET /dms/contracts/reports — Renewal pipeline, spend by vendor and department, expiring by fiscal year, missed deadlines","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/contracts/reports","host":["{{baseUrl}}"],"path":["dms","contracts","reports"]},"description":"Renewal pipeline, spend by vendor and department, expiring by fiscal year, missed deadlines"}},{"name":"GET /dms/contracts/lookups — Finance vendors, budget lines and purchase orders for the contract form","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/contracts/lookups","host":["{{baseUrl}}"],"path":["dms","contracts","lookups"]},"description":"Finance vendors, budget lines and purchase orders for the contract form"}},{"name":"GET /dms/contracts/settings — Contract alert lead times and recipients","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/contracts/settings","host":["{{baseUrl}}"],"path":["dms","contracts","settings"]},"description":"Contract alert lead times and recipients"}},{"name":"PUT /dms/contracts/settings — Save contract alert settings (district administrators and the business office)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/contracts/settings","host":["{{baseUrl}}"],"path":["dms","contracts","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save contract alert settings (district administrators and the business office)"}},{"name":"POST /dms/contracts/run-alerts — Run today’s contract alerts now (district administrators; each alert is still sent once)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/dms/contracts/run-alerts","host":["{{baseUrl}}"],"path":["dms","contracts","run-alerts"]},"description":"Run today’s contract alerts now (district administrators; each alert is still sent once)"}},{"name":"GET /dms/contracts/for-document/{id} — The contract record on a document, if any","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/contracts/for-document/{id}","host":["{{baseUrl}}"],"path":["dms","contracts","for-document","{id}"]},"description":"The contract record on a document, if any"}},{"name":"GET /dms/contracts/{id} — One contract: details, review, decision, related documents, alerts and audit trail","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/dms/contracts/{id}","host":["{{baseUrl}}"],"path":["dms","contracts","{id}"]},"description":"One contract: details, review, decision, related documents, alerts and audit trail"}},{"name":"PATCH /dms/contracts/{id} — Edit a contract (a status change needs a reason)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/contracts/{id}","host":["{{baseUrl}}"],"path":["dms","contracts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a contract (a status change needs a reason)"}},{"name":"POST /dms/contracts/{id}/remove — Stop tracking (the document stays)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/contracts/{id}/remove","host":["{{baseUrl}}"],"path":["dms","contracts","{id}","remove"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Stop tracking (the document stays)"}},{"name":"POST /dms/contracts/{id}/links — Link a related document (amendment, insurance certificate, signed copy…)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/contracts/{id}/links","host":["{{baseUrl}}"],"path":["dms","contracts","{id}","links"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Link a related document (amendment, insurance certificate, signed copy…)"}},{"name":"DELETE /dms/contracts/{id}/links/{linkId} — Unlink a related document","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/dms/contracts/{id}/links/{linkId}","host":["{{baseUrl}}"],"path":["dms","contracts","{id}","links","{linkId}"]},"description":"Unlink a related document"}},{"name":"POST /dms/contracts/{id}/review — Start the “Contract renewal review” sign-off","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/contracts/{id}/review","host":["{{baseUrl}}"],"path":["dms","contracts","{id}","review"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start the “Contract renewal review” sign-off"}},{"name":"POST /dms/contracts/{id}/decision — Record the decision: renew as is, renegotiate, cancel or let expire (rationale required)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/contracts/{id}/decision","host":["{{baseUrl}}"],"path":["dms","contracts","{id}","decision"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record the decision: renew as is, renegotiate, cancel or let expire (rationale required)"}},{"name":"POST /dms/contracts/{id}/reopen — Reopen a decision (before a renewal or notice has gone out)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/contracts/{id}/reopen","host":["{{baseUrl}}"],"path":["dms","contracts","{id}","reopen"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reopen a decision (before a renewal or notice has gone out)"}},{"name":"POST /dms/contracts/{id}/renewal — Prepare the renewal and send it for e-signature through Document Signing","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/contracts/{id}/renewal","host":["{{baseUrl}}"],"path":["dms","contracts","{id}","renewal"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Prepare the renewal and send it for e-signature through Document Signing"}},{"name":"POST /dms/contracts/{id}/notice — Generate the cancellation / non-renewal notice letter (optionally send it for signature)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/dms/contracts/{id}/notice","host":["{{baseUrl}}"],"path":["dms","contracts","{id}","notice"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generate the cancellation / non-renewal notice letter (optionally send it for signature)"}}]},{"name":"IT Ops","item":[{"name":"GET /itops/gov/apps — Application inventory (filters: status usable|pending|ended|<status>, q, ai, data, mine, attention)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/apps","host":["{{baseUrl}}"],"path":["itops","gov","apps"]},"description":"Application inventory (filters: status usable|pending|ended|<status>, q, ai, data, mine, attention)"}},{"name":"POST /itops/gov/apps — Add an application to the inventory","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/gov/apps","host":["{{baseUrl}}"],"path":["itops","gov","apps"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an application to the inventory"}},{"name":"POST /itops/gov/apps/sync — Bring in DEP AI features, IT Ops monitored applications and DEP vendor modules","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/apps/sync","host":["{{baseUrl}}"],"path":["itops","gov","apps","sync"]},"description":"Bring in DEP AI features, IT Ops monitored applications and DEP vendor modules"}},{"name":"GET /itops/gov/apps/{id} — One application: record, links, reviews and history","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/apps/{id}","host":["{{baseUrl}}"],"path":["itops","gov","apps","{id}"]},"description":"One application: record, links, reviews and history"}},{"name":"PATCH /itops/gov/apps/{id} — Edit an application record (owner, data, AI features, agreement, links, review dates)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/gov/apps/{id}","host":["{{baseUrl}}"],"path":["itops","gov","apps","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an application record (owner, data, AI features, agreement, links, review dates)"}},{"name":"DELETE /itops/gov/apps/{id} — Delete a requested or retired application (history is kept)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/apps/{id}","host":["{{baseUrl}}"],"path":["itops","gov","apps","{id}"]},"description":"Delete a requested or retired application (history is kept)"}},{"name":"POST /itops/gov/apps/{id}/status — Move an application along its lifecycle (not approval: that is a committee decision)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/gov/apps/{id}/status","host":["{{baseUrl}}"],"path":["itops","gov","apps","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move an application along its lifecycle (not approval: that is a committee decision)"}},{"name":"POST /itops/gov/apps/{id}/attest — The owner confirms the record is accurate","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/gov/apps/{id}/attest","host":["{{baseUrl}}"],"path":["itops","gov","apps","{id}","attest"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The owner confirms the record is accurate"}},{"name":"GET /itops/gov/link-options — DEP records an application can link to (agreements, contracts, partners, monitored systems, vendor modules)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/link-options","host":["{{baseUrl}}"],"path":["itops","gov","link-options"]},"description":"DEP records an application can link to (agreements, contracts, partners, monitored systems, vendor modules)"}},{"name":"GET /itops/gov/people — Find staff for owner and committee pickers","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/people","host":["{{baseUrl}}"],"path":["itops","gov","people"]},"description":"Find staff for owner and committee pickers"}},{"name":"GET /itops/gov/requests — Requests and reviews (view open|decided|all|awaiting_my_vote; mine = my own requests)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/requests","host":["{{baseUrl}}"],"path":["itops","gov","requests"]},"description":"Requests and reviews (view open|decided|all|awaiting_my_vote; mine = my own requests)"}},{"name":"POST /itops/gov/requests — Ask for an application (any member of staff)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/gov/requests","host":["{{baseUrl}}"],"path":["itops","gov","requests"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask for an application (any member of staff)"}},{"name":"GET /itops/gov/requests/{id} — One request: review checklist, AI evaluation, votes, decision, history","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/requests/{id}","host":["{{baseUrl}}"],"path":["itops","gov","requests","{id}"]},"description":"One request: review checklist, AI evaluation, votes, decision, history"}},{"name":"PATCH /itops/gov/requests/{id}/review — Work the review: checklist, vendor AI evaluation, lead, due date, ask the requester","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/gov/requests/{id}/review","host":["{{baseUrl}}"],"path":["itops","gov","requests","{id}","review"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Work the review: checklist, vendor AI evaluation, lead, due date, ask the requester"}},{"name":"POST /itops/gov/requests/{id}/vote — Vote (committee chair and voting members)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/gov/requests/{id}/vote","host":["{{baseUrl}}"],"path":["itops","gov","requests","{id}","vote"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Vote (committee chair and voting members)"}},{"name":"POST /itops/gov/requests/{id}/decide — Record the committee decision (chair or district administrator)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/gov/requests/{id}/decide","host":["{{baseUrl}}"],"path":["itops","gov","requests","{id}","decide"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record the committee decision (chair or district administrator)"}},{"name":"POST /itops/gov/requests/{id}/withdraw — Withdraw a request","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/gov/requests/{id}/withdraw","host":["{{baseUrl}}"],"path":["itops","gov","requests","{id}","withdraw"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Withdraw a request"}},{"name":"POST /itops/gov/requests/{id}/reply — The requester answers the committee","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/gov/requests/{id}/reply","host":["{{baseUrl}}"],"path":["itops","gov","requests","{id}","reply"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The requester answers the committee"}},{"name":"GET /itops/gov/shadow — Shadow AI and unapproved tools (view open|closed|all)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/shadow","host":["{{baseUrl}}"],"path":["itops","gov","shadow"]},"description":"Shadow AI and unapproved tools (view open|closed|all)"}},{"name":"POST /itops/gov/shadow — Report a tool in use without approval (any staff; ticketNumber: the technology team flags one from a ticket)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/gov/shadow","host":["{{baseUrl}}"],"path":["itops","gov","shadow"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Report a tool in use without approval (any staff; ticketNumber: the technology team flags one from a ticket)"}},{"name":"PATCH /itops/gov/shadow/{id} — Triage a report: reviewing, blocked, approved alternative, dismissed","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/gov/shadow/{id}","host":["{{baseUrl}}"],"path":["itops","gov","shadow","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Triage a report: reviewing, blocked, approved alternative, dismissed"}},{"name":"POST /itops/gov/shadow/{id}/open-review — Open a committee review of a reported tool","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/shadow/{id}/open-review","host":["{{baseUrl}}"],"path":["itops","gov","shadow","{id}","open-review"]},"description":"Open a committee review of a reported tool"}},{"name":"GET /itops/gov/oversight — AI oversight: DEP AI features, usage ledger, agents, human approvals, skills, vendor AI, data access","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/oversight","host":["{{baseUrl}}"],"path":["itops","gov","oversight"]},"description":"AI oversight: DEP AI features, usage ledger, agents, human approvals, skills, vendor AI, data access"}},{"name":"GET /itops/gov/committee — The Application Governance Committee, its settings, checklist and AI rubric","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/committee","host":["{{baseUrl}}"],"path":["itops","gov","committee"]},"description":"The Application Governance Committee, its settings, checklist and AI rubric"}},{"name":"POST /itops/gov/committee — Add or change a committee member","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/gov/committee","host":["{{baseUrl}}"],"path":["itops","gov","committee"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add or change a committee member"}},{"name":"DELETE /itops/gov/committee/{id} — Remove a committee member","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/committee/{id}","host":["{{baseUrl}}"],"path":["itops","gov","committee","{id}"]},"description":"Remove a committee member"}},{"name":"PUT /itops/gov/settings — Governance settings: quorum, review cycle, renewal lead time","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/gov/settings","host":["{{baseUrl}}"],"path":["itops","gov","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Governance settings: quorum, review cycle, renewal lead time"}},{"name":"GET /itops/gov/catalog — Approved software and AI tools (every member of staff)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/catalog","host":["{{baseUrl}}"],"path":["itops","gov","catalog"]},"description":"Approved software and AI tools (every member of staff)"}},{"name":"GET /itops/gov/form — Vocabulary for the request and report forms","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/gov/form","host":["{{baseUrl}}"],"path":["itops","gov","form"]},"description":"Vocabulary for the request and report forms"}},{"name":"GET /itops/me — Who I am in IT Ops (and the sidebar menu)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/me","host":["{{baseUrl}}"],"path":["itops","me"]},"description":"Who I am in IT Ops (and the sidebar menu)"}},{"name":"GET /itops/overview — The whole wall: status, panels, alerts, service desk, footer","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/overview","host":["{{baseUrl}}"],"path":["itops","overview"]},"description":"The whole wall: status, panels, alerts, service desk, footer"}},{"name":"GET /itops/items — Monitored items (catalogue)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/items","host":["{{baseUrl}}"],"path":["itops","items"]},"description":"Monitored items (catalogue)"}},{"name":"POST /itops/items — Add an item","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/items","host":["{{baseUrl}}"],"path":["itops","items"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an item"}},{"name":"GET /itops/items/{id} — One item with its history","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/items/{id}","host":["{{baseUrl}}"],"path":["itops","items","{id}"]},"description":"One item with its history"}},{"name":"PATCH /itops/items/{id} — Edit an item (name, thresholds, ...)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/items/{id}","host":["{{baseUrl}}"],"path":["itops","items","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an item (name, thresholds, ...)"}},{"name":"POST /itops/items/{id}/retire — Retire or restore an item","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/items/{id}/retire","host":["{{baseUrl}}"],"path":["itops","items","{id}","retire"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Retire or restore an item"}},{"name":"GET /itops/buildings/{id} — One building: services, history, alerts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/buildings/{id}","host":["{{baseUrl}}"],"path":["itops","buildings","{id}"]},"description":"One building: services, history, alerts"}},{"name":"GET /itops/buildings — Building Health columns (mapping)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/buildings","host":["{{baseUrl}}"],"path":["itops","buildings"]},"description":"Building Health columns (mapping)"}},{"name":"PUT /itops/buildings — Save the Building Health columns","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/buildings","host":["{{baseUrl}}"],"path":["itops","buildings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save the Building Health columns"}},{"name":"GET /itops/security — Security posture with trends","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/security","host":["{{baseUrl}}"],"path":["itops","security"]},"description":"Security posture with trends"}},{"name":"GET /itops/devices — Device fleet: flagged devices","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/devices","host":["{{baseUrl}}"],"path":["itops","devices"]},"description":"Device fleet: flagged devices"}},{"name":"GET /itops/alerts — Alerts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/alerts","host":["{{baseUrl}}"],"path":["itops","alerts"]},"description":"Alerts"}},{"name":"POST /itops/alerts — Raise an alert by hand","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/alerts","host":["{{baseUrl}}"],"path":["itops","alerts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Raise an alert by hand"}},{"name":"POST /itops/alerts/{id}/ack — Acknowledge an alert","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itops/alerts/{id}/ack","host":["{{baseUrl}}"],"path":["itops","alerts","{id}","ack"]},"description":"Acknowledge an alert"}},{"name":"POST /itops/alerts/{id}/resolve — Resolve an alert","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/alerts/{id}/resolve","host":["{{baseUrl}}"],"path":["itops","alerts","{id}","resolve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Resolve an alert"}},{"name":"GET /itops/incidents — Incidents, a page at a time (filters: status, severity, impact, q)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/incidents","host":["{{baseUrl}}"],"path":["itops","incidents"]},"description":"Incidents, a page at a time (filters: status, severity, impact, q)"}},{"name":"POST /itops/incidents — Open an incident","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/incidents","host":["{{baseUrl}}"],"path":["itops","incidents"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Open an incident"}},{"name":"GET /itops/incidents/{id} — One incident with its timeline","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/incidents/{id}","host":["{{baseUrl}}"],"path":["itops","incidents","{id}"]},"description":"One incident with its timeline"}},{"name":"PATCH /itops/incidents/{id} — Post an update or change an incident (incl. affected systems and buildings)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/incidents/{id}","host":["{{baseUrl}}"],"path":["itops","incidents","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Post an update or change an incident (incl. affected systems and buildings)"}},{"name":"GET /itops/maintenance — Maintenance windows","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/maintenance","host":["{{baseUrl}}"],"path":["itops","maintenance"]},"description":"Maintenance windows"}},{"name":"POST /itops/maintenance — Schedule maintenance","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/maintenance","host":["{{baseUrl}}"],"path":["itops","maintenance"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Schedule maintenance"}},{"name":"PATCH /itops/maintenance/{id} — Edit or cancel maintenance","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/maintenance/{id}","host":["{{baseUrl}}"],"path":["itops","maintenance","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit or cancel maintenance"}},{"name":"GET /itops/announcements — Announcements on the wall","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/announcements","host":["{{baseUrl}}"],"path":["itops","announcements"]},"description":"Announcements on the wall"}},{"name":"POST /itops/announcements — Add an announcement","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/announcements","host":["{{baseUrl}}"],"path":["itops","announcements"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an announcement"}},{"name":"PATCH /itops/announcements/{id} — Edit an announcement","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/announcements/{id}","host":["{{baseUrl}}"],"path":["itops","announcements","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an announcement"}},{"name":"DELETE /itops/announcements/{id} — Delete an announcement","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/itops/announcements/{id}","host":["{{baseUrl}}"],"path":["itops","announcements","{id}"]},"description":"Delete an announcement"}},{"name":"GET /itops/settings — IT Ops settings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/settings","host":["{{baseUrl}}"],"path":["itops","settings"]},"description":"IT Ops settings"}},{"name":"PUT /itops/settings — Save IT Ops settings","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/settings","host":["{{baseUrl}}"],"path":["itops","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save IT Ops settings"}},{"name":"GET /itops/members — Who has IT Ops access","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/members","host":["{{baseUrl}}"],"path":["itops","members"]},"description":"Who has IT Ops access"}},{"name":"POST /itops/members — Give someone IT Ops access","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/members","host":["{{baseUrl}}"],"path":["itops","members"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Give someone IT Ops access"}},{"name":"DELETE /itops/members/{id} — Remove someone's IT Ops access","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/itops/members/{id}","host":["{{baseUrl}}"],"path":["itops","members","{id}"]},"description":"Remove someone's IT Ops access"}},{"name":"GET /itops/sources — Sources and their keys","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/sources","host":["{{baseUrl}}"],"path":["itops","sources"]},"description":"Sources and their keys"}},{"name":"POST /itops/sources — Add a source (push, MCP and webhook sources get a key, shown once)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/sources","host":["{{baseUrl}}"],"path":["itops","sources"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a source (push, MCP and webhook sources get a key, shown once)"}},{"name":"PATCH /itops/sources/{id} — Edit a source","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/sources/{id}","host":["{{baseUrl}}"],"path":["itops","sources","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a source"}},{"name":"DELETE /itops/sources/{id} — Remove a source (its keys are revoked)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/itops/sources/{id}","host":["{{baseUrl}}"],"path":["itops","sources","{id}"]},"description":"Remove a source (its keys are revoked)"}},{"name":"POST /itops/sources/{id}/test — Run a poller or HTTP check once (nothing is saved)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itops/sources/{id}/test","host":["{{baseUrl}}"],"path":["itops","sources","{id}","test"]},"description":"Run a poller or HTTP check once (nothing is saved)"}},{"name":"POST /itops/sources/preview — Preview a poller mapping against a sample response","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/sources/preview","host":["{{baseUrl}}"],"path":["itops","sources","preview"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Preview a poller mapping against a sample response"}},{"name":"POST /itops/keys — Create an ingest key (shown once)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/keys","host":["{{baseUrl}}"],"path":["itops","keys"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an ingest key (shown once)"}},{"name":"PATCH /itops/keys/{id} — Change an ingest key's rate limit (managers; audited)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/keys/{id}","host":["{{baseUrl}}"],"path":["itops","keys","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change an ingest key's rate limit (managers; audited)"}},{"name":"POST /itops/keys/{id}/revoke — Revoke an ingest key","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itops/keys/{id}/revoke","host":["{{baseUrl}}"],"path":["itops","keys","{id}","revoke"]},"description":"Revoke an ingest key"}},{"name":"GET /itops/displays — Wall display links","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/displays","host":["{{baseUrl}}"],"path":["itops","displays"]},"description":"Wall display links"}},{"name":"POST /itops/displays — Create a wall display link (shown once)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/displays","host":["{{baseUrl}}"],"path":["itops","displays"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a wall display link (shown once)"}},{"name":"POST /itops/displays/{id}/revoke — Revoke a wall display link","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/itops/displays/{id}/revoke","host":["{{baseUrl}}"],"path":["itops","displays","{id}","revoke"]},"description":"Revoke a wall display link"}},{"name":"POST /itops/ingest — Push observations, metrics, alerts, device flags and incidents (IT Ops ingest key)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/ingest","host":["{{baseUrl}}"],"path":["itops","ingest"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Push observations, metrics, alerts, device flags and incidents (IT Ops ingest key)"}},{"name":"POST /itops/webhooks/{format} — Inbound webhook adapters: generic, alertmanager, grafana, uptime_kuma (IT Ops ingest key)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/webhooks/{format}","host":["{{baseUrl}}"],"path":["itops","webhooks","{format}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Inbound webhook adapters: generic, alertmanager, grafana, uptime_kuma (IT Ops ingest key)"}},{"name":"POST /itops/discovered-apps — Report applications discovered in use (IT Ops ingest key)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/discovered-apps","host":["{{baseUrl}}"],"path":["itops","discovered-apps"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Report applications discovered in use (IT Ops ingest key)"}},{"name":"POST /itops/mcp — MCP server (Streamable HTTP, JSON-RPC 2.0): initialize, tools/list, tools/call","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/itops/mcp","host":["{{baseUrl}}"],"path":["itops","mcp"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"MCP server (Streamable HTTP, JSON-RPC 2.0): initialize, tools/list, tools/call"}},{"name":"GET /itops/mcp — No server-initiated stream (405)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/mcp","host":["{{baseUrl}}"],"path":["itops","mcp"]},"description":"No server-initiated stream (405)"}},{"name":"DELETE /itops/mcp — Stateless: no session to end (405)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/itops/mcp","host":["{{baseUrl}}"],"path":["itops","mcp"]},"description":"Stateless: no session to end (405)"}},{"name":"GET /itops/display/overview — The wall for a TV display link (X-Itops-Display token, read only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/itops/display/overview","host":["{{baseUrl}}"],"path":["itops","display","overview"]},"description":"The wall for a TV display link (X-Itops-Display token, read only)"}}]},{"name":"Time & Attendance","item":[{"name":"GET /time/access — My level in Time & Attendance and the sidebar menu","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/access","host":["{{baseUrl}}"],"path":["time","access"]},"description":"My level in Time & Attendance and the sidebar menu"}},{"name":"GET /time/me — My time: status, today, this week, my locations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/me","host":["{{baseUrl}}"],"path":["time","me"]},"description":"My time: status, today, this week, my locations"}},{"name":"GET /time/me/timecard — My timecard for a week","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/me/timecard","host":["{{baseUrl}}"],"path":["time","me","timecard"]},"description":"My timecard for a week"}},{"name":"POST /time/me/punch — Clock in / out from a phone or browser (location checked on the server)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/me/punch","host":["{{baseUrl}}"],"path":["time","me","punch"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Clock in / out from a phone or browser (location checked on the server)"}},{"name":"POST /time/me/corrections — Ask for a correction to my time","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/me/corrections","host":["{{baseUrl}}"],"path":["time","me","corrections"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask for a correction to my time"}},{"name":"GET /time/me/corrections — All my correction requests","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/me/corrections","host":["{{baseUrl}}"],"path":["time","me","corrections"]},"description":"All my correction requests"}},{"name":"POST /time/me/corrections/{id}/cancel — Withdraw my correction request","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/time/me/corrections/{id}/cancel","host":["{{baseUrl}}"],"path":["time","me","corrections","{id}","cancel"]},"description":"Withdraw my correction request"}},{"name":"PUT /time/me/pin — Set my kiosk PIN (when the district allows PIN fallback)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/me/pin","host":["{{baseUrl}}"],"path":["time","me","pin"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set my kiosk PIN (when the district allows PIN fallback)"}},{"name":"GET /time/overview — Dashboard: who is in now, late, missing punches, overtime, flagged locations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/overview","host":["{{baseUrl}}"],"path":["time","overview"]},"description":"Dashboard: who is in now, late, missing punches, overtime, flagged locations"}},{"name":"GET /time/people — Search staff I cover (pickers)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/people","host":["{{baseUrl}}"],"path":["time","people"]},"description":"Search staff I cover (pickers)"}},{"name":"GET /time/timecards — Timecards for a week (people I cover)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/timecards","host":["{{baseUrl}}"],"path":["time","timecards"]},"description":"Timecards for a week (people I cover)"}},{"name":"GET /time/timecards/{personId} — One timecard: days, punches with location, edits, corrections","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/timecards/{personId}","host":["{{baseUrl}}"],"path":["time","timecards","{personId}"]},"description":"One timecard: days, punches with location, edits, corrections"}},{"name":"POST /time/punches — Add a missing punch (supervisor; reason required)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/punches","host":["{{baseUrl}}"],"path":["time","punches"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a missing punch (supervisor; reason required)"}},{"name":"PATCH /time/punches/{id} — Change a punch time or type (supervisor; reason required)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/punches/{id}","host":["{{baseUrl}}"],"path":["time","punches","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a punch time or type (supervisor; reason required)"}},{"name":"POST /time/punches/{id}/void — Void (or restore) a punch (supervisor; reason required)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/punches/{id}/void","host":["{{baseUrl}}"],"path":["time","punches","{id}","void"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Void (or restore) a punch (supervisor; reason required)"}},{"name":"POST /time/punches/{id}/reviewed — Mark a flagged / offline punch as checked","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/time/punches/{id}/reviewed","host":["{{baseUrl}}"],"path":["time","punches","{id}","reviewed"]},"description":"Mark a flagged / offline punch as checked"}},{"name":"GET /time/exceptions — Exceptions (missing punch, late, left early, long break, overtime, offline, absent)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/exceptions","host":["{{baseUrl}}"],"path":["time","exceptions"]},"description":"Exceptions (missing punch, late, left early, long break, overtime, offline, absent)"}},{"name":"POST /time/exceptions/dismiss — Mark an exception reviewed (or undo)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/exceptions/dismiss","host":["{{baseUrl}}"],"path":["time","exceptions","dismiss"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark an exception reviewed (or undo)"}},{"name":"GET /time/corrections — Correction requests from people I cover","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/corrections","host":["{{baseUrl}}"],"path":["time","corrections"]},"description":"Correction requests from people I cover"}},{"name":"POST /time/corrections/{id}/decide — Approve (applies the change) or deny a correction","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/corrections/{id}/decide","host":["{{baseUrl}}"],"path":["time","corrections","{id}","decide"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve (applies the change) or deny a correction"}},{"name":"POST /time/approvals — Approve weeks (supervisor)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/approvals","host":["{{baseUrl}}"],"path":["time","approvals"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve weeks (supervisor)"}},{"name":"POST /time/approvals/reopen — Take back an approval (not once locked)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/approvals/reopen","host":["{{baseUrl}}"],"path":["time","approvals","reopen"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Take back an approval (not once locked)"}},{"name":"POST /time/approvals/lock — Payroll: lock approved weeks (or HR: unlock)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/approvals/lock","host":["{{baseUrl}}"],"path":["time","approvals","lock"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Payroll: lock approved weeks (or HR: unlock)"}},{"name":"POST /time/exports — Payroll export (CSV) of approved weeks; optionally lock them","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/exports","host":["{{baseUrl}}"],"path":["time","exports"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Payroll export (CSV) of approved weeks; optionally lock them"}},{"name":"GET /time/exports — Past payroll exports","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/exports","host":["{{baseUrl}}"],"path":["time","exports"]},"description":"Past payroll exports"}},{"name":"GET /time/exports/{id}/csv — Download a past payroll export again (CSV in data.csv)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/exports/{id}/csv","host":["{{baseUrl}}"],"path":["time","exports","{id}","csv"]},"description":"Download a past payroll export again (CSV in data.csv)"}},{"name":"GET /time/reports — Reports: hours, overtime, tardiness, exceptions, locations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/reports","host":["{{baseUrl}}"],"path":["time","reports"]},"description":"Reports: hours, overtime, tardiness, exceptions, locations"}},{"name":"GET /time/badges — Badges","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/badges","host":["{{baseUrl}}"],"path":["time","badges"]},"description":"Badges"}},{"name":"POST /time/badges — Issue a badge to an employee (replaces their current one)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/badges","host":["{{baseUrl}}"],"path":["time","badges"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Issue a badge to an employee (replaces their current one)"}},{"name":"POST /time/badges/preview — What a reader value reads as, and who holds it","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/badges/preview","host":["{{baseUrl}}"],"path":["time","badges","preview"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"What a reader value reads as, and who holds it"}},{"name":"POST /time/badges/{id}/status — Mark a badge lost or deactivated, or reactivate it","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/badges/{id}/status","host":["{{baseUrl}}"],"path":["time","badges","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark a badge lost or deactivated, or reactivate it"}},{"name":"POST /time/badges/import — Import badges from CSV (employee_id or email, badge); dry run first","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/badges/import","host":["{{baseUrl}}"],"path":["time","badges","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Import badges from CSV (employee_id or email, badge); dry run first"}},{"name":"GET /time/unknown-badges — Badges a clock did not recognise","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/unknown-badges","host":["{{baseUrl}}"],"path":["time","unknown-badges"]},"description":"Badges a clock did not recognise"}},{"name":"POST /time/unknown-badges/{id}/assign — Assign an unknown badge to an employee","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/unknown-badges/{id}/assign","host":["{{baseUrl}}"],"path":["time","unknown-badges","{id}","assign"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assign an unknown badge to an employee"}},{"name":"POST /time/unknown-badges/{id}/ignore — Ignore (or reopen) an unknown badge","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/unknown-badges/{id}/ignore","host":["{{baseUrl}}"],"path":["time","unknown-badges","{id}","ignore"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ignore (or reopen) an unknown badge"}},{"name":"GET /time/employees/{personId} — One employee: badges, history, locations, settings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/employees/{personId}","host":["{{baseUrl}}"],"path":["time","employees","{personId}"]},"description":"One employee: badges, history, locations, settings"}},{"name":"PATCH /time/employees/{personId} — Tracked, pay type, clear PIN","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/employees/{personId}","host":["{{baseUrl}}"],"path":["time","employees","{personId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Tracked, pay type, clear PIN"}},{"name":"GET /time/employees/{personId}/locations — Where this employee may clock in","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/employees/{personId}/locations","host":["{{baseUrl}}"],"path":["time","employees","{personId}","locations"]},"description":"Where this employee may clock in"}},{"name":"PUT /time/employees/{personId}/locations — Set the locations this employee may clock in at (empty = their school)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/employees/{personId}/locations","host":["{{baseUrl}}"],"path":["time","employees","{personId}","locations"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set the locations this employee may clock in at (empty = their school)"}},{"name":"GET /time/kiosks — Time clocks","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/kiosks","host":["{{baseUrl}}"],"path":["time","kiosks"]},"description":"Time clocks"}},{"name":"POST /time/kiosks — Add a time clock (its link is shown once)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/kiosks","host":["{{baseUrl}}"],"path":["time","kiosks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a time clock (its link is shown once)"}},{"name":"PATCH /time/kiosks/{id} — Edit a time clock (name, school, mode, network)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/kiosks/{id}","host":["{{baseUrl}}"],"path":["time","kiosks","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a time clock (name, school, mode, network)"}},{"name":"POST /time/kiosks/{id}/rotate — New link for a clock (the old one stops working)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/time/kiosks/{id}/rotate","host":["{{baseUrl}}"],"path":["time","kiosks","{id}","rotate"]},"description":"New link for a clock (the old one stops working)"}},{"name":"POST /time/kiosks/{id}/revoke — Switch a clock off","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/time/kiosks/{id}/revoke","host":["{{baseUrl}}"],"path":["time","kiosks","{id}","revoke"]},"description":"Switch a clock off"}},{"name":"POST /time/kiosks/{id}/enrol — Capture the next badge tapped at this clock","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/kiosks/{id}/enrol","host":["{{baseUrl}}"],"path":["time","kiosks","{id}","enrol"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Capture the next badge tapped at this clock"}},{"name":"GET /time/kiosks/{id}/enrol — Enrolment capture state","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/kiosks/{id}/enrol","host":["{{baseUrl}}"],"path":["time","kiosks","{id}","enrol"]},"description":"Enrolment capture state"}},{"name":"DELETE /time/kiosks/{id}/enrol — Stop waiting for a badge","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/time/kiosks/{id}/enrol","host":["{{baseUrl}}"],"path":["time","kiosks","{id}","enrol"]},"description":"Stop waiting for a badge"}},{"name":"GET /time/geofences — Geofences and DEP buildings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/geofences","host":["{{baseUrl}}"],"path":["time","geofences"]},"description":"Geofences and DEP buildings"}},{"name":"POST /time/geofences — Add a geofence","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/geofences","host":["{{baseUrl}}"],"path":["time","geofences"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a geofence"}},{"name":"PATCH /time/geofences/{id} — Move / resize a geofence","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/geofences/{id}","host":["{{baseUrl}}"],"path":["time","geofences","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move / resize a geofence"}},{"name":"DELETE /time/geofences/{id} — Remove a geofence","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/time/geofences/{id}","host":["{{baseUrl}}"],"path":["time","geofences","{id}"]},"description":"Remove a geofence"}},{"name":"POST /time/geofences/geocode — Approximate a building from its town (then drag the pin)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/geofences/geocode","host":["{{baseUrl}}"],"path":["time","geofences","geocode"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approximate a building from its town (then drag the pin)"}},{"name":"GET /time/schedules — Schedules","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/schedules","host":["{{baseUrl}}"],"path":["time","schedules"]},"description":"Schedules"}},{"name":"POST /time/schedules — Add a schedule","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/schedules","host":["{{baseUrl}}"],"path":["time","schedules"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a schedule"}},{"name":"PATCH /time/schedules/{id} — Edit a schedule","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/schedules/{id}","host":["{{baseUrl}}"],"path":["time","schedules","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a schedule"}},{"name":"DELETE /time/schedules/{id} — Remove a schedule","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/time/schedules/{id}","host":["{{baseUrl}}"],"path":["time","schedules","{id}"]},"description":"Remove a schedule"}},{"name":"GET /time/settings — Rules, kiosk, badge reading and geofencing settings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/settings","host":["{{baseUrl}}"],"path":["time","settings"]},"description":"Rules, kiosk, badge reading and geofencing settings"}},{"name":"PUT /time/settings — Save settings (HR)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/settings","host":["{{baseUrl}}"],"path":["time","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save settings (HR)"}},{"name":"GET /time/members — Who has Time & Attendance access","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/members","host":["{{baseUrl}}"],"path":["time","members"]},"description":"Who has Time & Attendance access"}},{"name":"POST /time/members — Give someone access (admin, supervisor, payroll, viewer)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/members","host":["{{baseUrl}}"],"path":["time","members"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Give someone access (admin, supervisor, payroll, viewer)"}},{"name":"DELETE /time/members/{id} — Remove someone’s access","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/time/members/{id}","host":["{{baseUrl}}"],"path":["time","members","{id}"]},"description":"Remove someone’s access"}},{"name":"GET /time/entra — Microsoft Entra connector, sync runs and the review list","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/entra","host":["{{baseUrl}}"],"path":["time","entra"]},"description":"Microsoft Entra connector, sync runs and the review list"}},{"name":"PUT /time/entra — Save the Entra connector (the secret is sealed and never shown again)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/entra","host":["{{baseUrl}}"],"path":["time","entra"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save the Entra connector (the secret is sealed and never shown again)"}},{"name":"POST /time/entra/test — Test the Entra connection","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/time/entra/test","host":["{{baseUrl}}"],"path":["time","entra","test"]},"description":"Test the Entra connection"}},{"name":"POST /time/entra/sync — Sync Entra users now","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/time/entra/sync","host":["{{baseUrl}}"],"path":["time","entra","sync"]},"description":"Sync Entra users now"}},{"name":"POST /time/entra/users/{id}/match — Match an Entra user to a DEP person by hand, or ignore","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/entra/users/{id}/match","host":["{{baseUrl}}"],"path":["time","entra","users","{id}","match"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Match an Entra user to a DEP person by hand, or ignore"}},{"name":"GET /time/kiosk/config — Time clock configuration (kiosk device token)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/time/kiosk/config","host":["{{baseUrl}}"],"path":["time","kiosk","config"]},"description":"Time clock configuration (kiosk device token)"}},{"name":"POST /time/kiosk/punch — Punch at a time clock: badge tap or PIN (kiosk device token)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/time/kiosk/punch","host":["{{baseUrl}}"],"path":["time","kiosk","punch"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Punch at a time clock: badge tap or PIN (kiosk device token)"}}]},{"name":"OmniSafe AI","item":[{"name":"GET /osafe/me — My OmniSafe roles and the sidebar menu","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/me","host":["{{baseUrl}}"],"path":["osafe","me"]},"description":"My OmniSafe roles and the sidebar menu"}},{"name":"GET /osafe/dashboard — Home: what needs attention in my scope","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/dashboard","host":["{{baseUrl}}"],"path":["osafe","dashboard"]},"description":"Home: what needs attention in my scope"}},{"name":"GET /osafe/schools — Schools (organization ids and names)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/schools","host":["{{baseUrl}}"],"path":["osafe","schools"]},"description":"Schools (organization ids and names)"}},{"name":"GET /osafe/people/staff — Staff picker","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/people/staff","host":["{{baseUrl}}"],"path":["osafe","people","staff"]},"description":"Staff picker"}},{"name":"GET /osafe/people/students — Student picker (for people involved in a case)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/people/students","host":["{{baseUrl}}"],"path":["osafe","people","students"]},"description":"Student picker (for people involved in a case)"}},{"name":"GET /osafe/reports — Report queue (scope-filtered)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/reports","host":["{{baseUrl}}"],"path":["osafe","reports"]},"description":"Report queue (scope-filtered)"}},{"name":"POST /osafe/reports — Enter a report received in person or by phone","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/reports","host":["{{baseUrl}}"],"path":["osafe","reports"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Enter a report received in person or by phone"}},{"name":"GET /osafe/reports/{id} — One report (decrypted for authorised staff; the opening is recorded with its purpose)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/reports/{id}","host":["{{baseUrl}}"],"path":["osafe","reports","{id}"]},"description":"One report (decrypted for authorised staff; the opening is recorded with its purpose)"}},{"name":"DELETE /osafe/reports/{id} — Erase a report's content (refused while a legal hold covers it)","request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/reports/{id}","host":["{{baseUrl}}"],"path":["osafe","reports","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Erase a report's content (refused while a legal hold covers it)"}},{"name":"POST /osafe/reports/{id}/acknowledge — Acknowledge a report (the only thing that stops its escalation)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/osafe/reports/{id}/acknowledge","host":["{{baseUrl}}"],"path":["osafe","reports","{id}","acknowledge"]},"description":"Acknowledge a report (the only thing that stops its escalation)"}},{"name":"POST /osafe/reports/{id}/review — Start reviewing a report","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/osafe/reports/{id}/review","host":["{{baseUrl}}"],"path":["osafe","reports","{id}","review"]},"description":"Start reviewing a report"}},{"name":"POST /osafe/reports/{id}/triage — Human triage decision: open a case, link to a case, refer, or not actionable","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/reports/{id}/triage","host":["{{baseUrl}}"],"path":["osafe","reports","{id}","triage"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Human triage decision: open a case, link to a case, refer, or not actionable"}},{"name":"POST /osafe/reports/{id}/identity — Reveal the reporter of a named report (purpose required; recorded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/reports/{id}/identity","host":["{{baseUrl}}"],"path":["osafe","reports","{id}","identity"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reveal the reporter of a named report (purpose required; recorded)"}},{"name":"PUT /osafe/reports/{id}/translation — Save a staff translation (the original is kept)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/reports/{id}/translation","host":["{{baseUrl}}"],"path":["osafe","reports","{id}","translation"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save a staff translation (the original is kept)"}},{"name":"POST /osafe/reports/{id}/messages — Reply to the reporter through their follow-up code","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/reports/{id}/messages","host":["{{baseUrl}}"],"path":["osafe","reports","{id}","messages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reply to the reporter through their follow-up code"}},{"name":"GET /osafe/evidence/{id}/link — A 5-minute download link for one clean file (bound to me)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/evidence/{id}/link","host":["{{baseUrl}}"],"path":["osafe","evidence","{id}","link"]},"description":"A 5-minute download link for one clean file (bound to me)"}},{"name":"GET /osafe/evidence/{id}/download — Download one evidence file (signed link + session)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/evidence/{id}/download","host":["{{baseUrl}}"],"path":["osafe","evidence","{id}","download"]},"description":"Download one evidence file (signed link + session)"}},{"name":"POST /osafe/cases/{id}/evidence — Add an evidence file to a case (quarantined and scanned)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/evidence","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","evidence"]},"description":"Add an evidence file to a case (quarantined and scanned)"}},{"name":"GET /osafe/cases — Cases I can see","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/cases","host":["{{baseUrl}}"],"path":["osafe","cases"]},"description":"Cases I can see"}},{"name":"POST /osafe/cases — Open a case from accepted reports (or a staff concern with none)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases","host":["{{baseUrl}}"],"path":["osafe","cases"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Open a case from accepted reports (or a staff concern with none)"}},{"name":"GET /osafe/cases/{id} — One case (notes filtered by partition; hidden ones counted)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}","host":["{{baseUrl}}"],"path":["osafe","cases","{id}"]},"description":"One case (notes filtered by partition; hidden ones counted)"}},{"name":"PATCH /osafe/cases/{id} — Change title, category, urgency or due date (lead)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}","host":["{{baseUrl}}"],"path":["osafe","cases","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change title, category, urgency or due date (lead)"}},{"name":"POST /osafe/cases/{id}/transition — Move the case along its lifecycle (guarded)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/transition","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","transition"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move the case along its lifecycle (guarded)"}},{"name":"POST /osafe/cases/{id}/assign — Assign owner, backup and due date","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/assign","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","assign"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assign owner, backup and due date"}},{"name":"POST /osafe/cases/{id}/members — Add someone to the case","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/members","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","members"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add someone to the case"}},{"name":"DELETE /osafe/cases/{id}/members/{memberId} — Remove someone from the case","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/members/{memberId}","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","members","{memberId}"]},"description":"Remove someone from the case"}},{"name":"POST /osafe/cases/{id}/reports — Link another report (staff confirm; never automatic)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/reports","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","reports"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Link another report (staff confirm; never automatic)"}},{"name":"POST /osafe/cases/{id}/people — Add a person involved","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/people","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","people"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a person involved"}},{"name":"DELETE /osafe/cases/{id}/people/{personRowId} — Remove a person involved (refused under legal hold)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/people/{personRowId}","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","people","{personRowId}"]},"description":"Remove a person involved (refused under legal hold)"}},{"name":"POST /osafe/cases/{id}/tasks — Add a task","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/tasks","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","tasks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a task"}},{"name":"PATCH /osafe/tasks/{id} — Update a task (the assignee may complete their own)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/tasks/{id}","host":["{{baseUrl}}"],"path":["osafe","tasks","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a task (the assignee may complete their own)"}},{"name":"GET /osafe/tasks — My tasks","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/tasks","host":["{{baseUrl}}"],"path":["osafe","tasks"]},"description":"My tasks"}},{"name":"POST /osafe/cases/{id}/notes — Add a note in a sensitivity partition","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/notes","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","notes"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a note in a sensitivity partition"}},{"name":"POST /osafe/notes/{id}/correct — Append a correction (the original stays)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/notes/{id}/correct","host":["{{baseUrl}}"],"path":["osafe","notes","{id}","correct"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Append a correction (the original stays)"}},{"name":"POST /osafe/cases/{id}/plans — Add a safety / intervention / support plan","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/plans","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","plans"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a safety / intervention / support plan"}},{"name":"PATCH /osafe/plans/{id} — Update a plan (new version)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/plans/{id}","host":["{{baseUrl}}"],"path":["osafe","plans","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a plan (new version)"}},{"name":"POST /osafe/cases/{id}/request-closure — Ask for closure (closeout checklist)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/request-closure","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","request-closure"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask for closure (closeout checklist)"}},{"name":"POST /osafe/cases/{id}/review-closure — Approve closure or send it back (lead; not the requester)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/review-closure","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","review-closure"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve closure or send it back (lead; not the requester)"}},{"name":"POST /osafe/cases/{id}/reopen — Reopen a closed case (reason required)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/reopen","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","reopen"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reopen a closed case (reason required)"}},{"name":"POST /osafe/cases/{id}/escalate — Start the on-call escalation for this case","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/escalate","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","escalate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start the on-call escalation for this case"}},{"name":"POST /osafe/cases/{id}/hib — Start the NJ HIB workflow on a case","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/hib","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","hib"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start the NJ HIB workflow on a case"}},{"name":"POST /osafe/cases/{id}/hib/milestones/{key} — Mark a milestone done, or override its date with a justification","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/hib/milestones/{key}","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","hib","milestones","{key}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark a milestone done, or override its date with a justification"}},{"name":"POST /osafe/cases/{id}/hib/log — Add to the investigation log","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/hib/log","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","hib","log"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add to the investigation log"}},{"name":"PUT /osafe/cases/{id}/hib/findings — Save or submit the findings for review","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/hib/findings","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","hib","findings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save or submit the findings for review"}},{"name":"POST /osafe/cases/{id}/hib/review — Review findings and record the staff determination","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/hib/review","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","hib","review"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Review findings and record the staff determination"}},{"name":"POST /osafe/cases/{id}/hib/board — Board meeting date / prepare the board report line","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/hib/board","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","hib","board"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Board meeting date / prepare the board report line"}},{"name":"GET /osafe/cases/{id}/hib/board — The de-identified board report line","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/hib/board","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","hib","board"]},"description":"The de-identified board report line"}},{"name":"POST /osafe/cases/{id}/hib/notices — Prepare a parent / guardian notice (staff send it)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/hib/notices","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","hib","notices"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Prepare a parent / guardian notice (staff send it)"}},{"name":"POST /osafe/notices/{id} — Approve a notice, or record it as sent","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/notices/{id}","host":["{{baseUrl}}"],"path":["osafe","notices","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve a notice, or record it as sent"}},{"name":"POST /osafe/cases/{id}/dep-link — Escalate into (or link) a DEP discipline incident + HIB investigation","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/cases/{id}/dep-link","host":["{{baseUrl}}"],"path":["osafe","cases","{id}","dep-link"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Escalate into (or link) a DEP discipline incident + HIB investigation"}},{"name":"GET /osafe/dep-incidents — Recent DEP HIB incidents (to link)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/dep-incidents","host":["{{baseUrl}}"],"path":["osafe","dep-incidents"]},"description":"Recent DEP HIB incidents (to link)"}},{"name":"GET /osafe/escalations — Escalations with every delivery attempt","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/escalations","host":["{{baseUrl}}"],"path":["osafe","escalations"]},"description":"Escalations with every delivery attempt"}},{"name":"POST /osafe/escalations/{id}/acknowledge — Acknowledge an escalation (a person, not a delivery receipt)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/osafe/escalations/{id}/acknowledge","host":["{{baseUrl}}"],"path":["osafe","escalations","{id}","acknowledge"]},"description":"Acknowledge an escalation (a person, not a delivery receipt)"}},{"name":"GET /osafe/notifications — My OmniSafe notices","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/notifications","host":["{{baseUrl}}"],"path":["osafe","notifications"]},"description":"My OmniSafe notices"}},{"name":"POST /osafe/notifications/read — Mark one (or all) notices read","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/notifications/read","host":["{{baseUrl}}"],"path":["osafe","notifications","read"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark one (or all) notices read"}},{"name":"POST /osafe/ai/runs — Ask for an AI draft (background job; staff approve the result)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/ai/runs","host":["{{baseUrl}}"],"path":["osafe","ai","runs"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask for an AI draft (background job; staff approve the result)"}},{"name":"GET /osafe/ai/runs — AI runs I can see, with review metrics","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/ai/runs","host":["{{baseUrl}}"],"path":["osafe","ai","runs"]},"description":"AI runs I can see, with review metrics"}},{"name":"GET /osafe/ai/runs/{id} — One AI run (draft, marked unverified)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/ai/runs/{id}","host":["{{baseUrl}}"],"path":["osafe","ai","runs","{id}"]},"description":"One AI run (draft, marked unverified)"}},{"name":"POST /osafe/ai/runs/{id}/retry — Retry a failed run","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/osafe/ai/runs/{id}/retry","host":["{{baseUrl}}"],"path":["osafe","ai","runs","{id}","retry"]},"description":"Retry a failed run"}},{"name":"POST /osafe/ai/runs/{id}/review — Approve, edit or reject a draft","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/ai/runs/{id}/review","host":["{{baseUrl}}"],"path":["osafe","ai","runs","{id}","review"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve, edit or reject a draft"}},{"name":"GET /osafe/climate — KPIs and report-type mix (small cells suppressed)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/climate","host":["{{baseUrl}}"],"path":["osafe","climate"]},"description":"KPIs and report-type mix (small cells suppressed)"}},{"name":"POST /osafe/climate/export — Export the KPIs as CSV (audited)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/climate/export","host":["{{baseUrl}}"],"path":["osafe","climate","export"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Export the KPIs as CSV (audited)"}},{"name":"GET /osafe/settings — District OmniSafe settings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/settings","host":["{{baseUrl}}"],"path":["osafe","settings"]},"description":"District OmniSafe settings"}},{"name":"PUT /osafe/settings — Change district OmniSafe settings","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/settings","host":["{{baseUrl}}"],"path":["osafe","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change district OmniSafe settings"}},{"name":"GET /osafe/team — The OmniSafe team","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/team","host":["{{baseUrl}}"],"path":["osafe","team"]},"description":"The OmniSafe team"}},{"name":"PUT /osafe/team — Add or change a team member (membership is the module grant)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/team","host":["{{baseUrl}}"],"path":["osafe","team"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add or change a team member (membership is the module grant)"}},{"name":"GET /osafe/contacts — On-call / escalation contacts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/contacts","host":["{{baseUrl}}"],"path":["osafe","contacts"]},"description":"On-call / escalation contacts"}},{"name":"POST /osafe/contacts — Add an on-call contact","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/contacts","host":["{{baseUrl}}"],"path":["osafe","contacts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an on-call contact"}},{"name":"PUT /osafe/contacts/{id} — Change an on-call contact","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/contacts/{id}","host":["{{baseUrl}}"],"path":["osafe","contacts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change an on-call contact"}},{"name":"GET /osafe/links — School report links and QR codes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/links","host":["{{baseUrl}}"],"path":["osafe","links"]},"description":"School report links and QR codes"}},{"name":"POST /osafe/links — Create or rotate a school link (the old one stops working)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/links","host":["{{baseUrl}}"],"path":["osafe","links"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create or rotate a school link (the old one stops working)"}},{"name":"GET /osafe/policies — Policy versions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/policies","host":["{{baseUrl}}"],"path":["osafe","policies"]},"description":"Policy versions"}},{"name":"POST /osafe/policies — Start a new draft version","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/policies","host":["{{baseUrl}}"],"path":["osafe","policies"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a new draft version"}},{"name":"PUT /osafe/policies/{id} — Edit a draft (published versions never change)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/policies/{id}","host":["{{baseUrl}}"],"path":["osafe","policies","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a draft (published versions never change)"}},{"name":"POST /osafe/policies/{id}/publish — Approve and publish (a second person; the previous version retires)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/policies/{id}/publish","host":["{{baseUrl}}"],"path":["osafe","policies","{id}","publish"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve and publish (a second person; the previous version retires)"}},{"name":"GET /osafe/holds — Legal holds and the retention schedule","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/holds","host":["{{baseUrl}}"],"path":["osafe","holds"]},"description":"Legal holds and the retention schedule"}},{"name":"POST /osafe/holds — Place a legal hold","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/holds","host":["{{baseUrl}}"],"path":["osafe","holds"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Place a legal hold"}},{"name":"POST /osafe/holds/{id}/release — Release a legal hold","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/holds/{id}/release","host":["{{baseUrl}}"],"path":["osafe","holds","{id}","release"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Release a legal hold"}},{"name":"POST /osafe/retention — Preview or run the report retention schedule (holds always win)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/retention","host":["{{baseUrl}}"],"path":["osafe","retention"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Preview or run the report retention schedule (holds always win)"}},{"name":"GET /osafe/audit — The tamper-evident timeline with chain verification","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/audit","host":["{{baseUrl}}"],"path":["osafe","audit"]},"description":"The tamper-evident timeline with chain verification"}},{"name":"GET /osafe/exports — Past exports with their hashes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/exports","host":["{{baseUrl}}"],"path":["osafe","exports"]},"description":"Past exports with their hashes"}},{"name":"POST /osafe/exports/district — The district's full OmniSafe data export (audited)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/exports/district","host":["{{baseUrl}}"],"path":["osafe","exports","district"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The district's full OmniSafe data export (audited)"}},{"name":"GET /osafe/health — System health: chain, scanner, deliveries, AI","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/health","host":["{{baseUrl}}"],"path":["osafe","health"]},"description":"System health: chain, scanner, deliveries, AI"}},{"name":"GET /osafe/dep-link/incidents/{id} — Is an OmniSafe case linked to this DEP incident?","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/dep-link/incidents/{id}","host":["{{baseUrl}}"],"path":["osafe","dep-link","incidents","{id}"]},"description":"Is an OmniSafe case linked to this DEP incident?"}}]},{"name":"OmniSafe AI (public)","item":[{"name":"GET /osafe/public/links/{code} — The school reporting page (public)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/osafe/public/links/{code}","host":["{{baseUrl}}"],"path":["osafe","public","links","{code}"]},"description":"The school reporting page (public)"}},{"name":"POST /osafe/public/challenge — Proof-of-work challenge for the report form (public)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/public/challenge","host":["{{baseUrl}}"],"path":["osafe","public","challenge"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Proof-of-work challenge for the report form (public)"}},{"name":"POST /osafe/public/reports — Send a report (public; anonymous or named)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/public/reports","host":["{{baseUrl}}"],"path":["osafe","public","reports"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send a report (public; anonymous or named)"}},{"name":"POST /osafe/public/reports/{ref}/evidence — Add one file to a report (public; upload ticket)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/osafe/public/reports/{ref}/evidence","host":["{{baseUrl}}"],"path":["osafe","public","reports","{ref}","evidence"]},"description":"Add one file to a report (public; upload ticket)"}},{"name":"POST /osafe/public/status — Check a report with its reference and code (public; limited answer)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/public/status","host":["{{baseUrl}}"],"path":["osafe","public","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Check a report with its reference and code (public; limited answer)"}},{"name":"POST /osafe/public/messages — Send more information on a report (public; claim token)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/osafe/public/messages","host":["{{baseUrl}}"],"path":["osafe","public","messages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send more information on a report (public; claim token)"}}]},{"name":"Teacher Command Center","item":[{"name":"GET /tcc/access — My Teacher Command Center roles and the sidebar menu","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/access","host":["{{baseUrl}}"],"path":["tcc","access"]},"description":"My Teacher Command Center roles and the sidebar menu"}},{"name":"GET /tcc/dashboard — Teacher dashboard summary (today, to review, tasks, notifications, generations)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/dashboard","host":["{{baseUrl}}"],"path":["tcc","dashboard"]},"description":"Teacher dashboard summary (today, to review, tasks, notifications, generations)"}},{"name":"GET /tcc/classes — My assigned classes (from DEP sections and rosters)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/classes","host":["{{baseUrl}}"],"path":["tcc","classes"]},"description":"My assigned classes (from DEP sections and rosters)"}},{"name":"GET /tcc/classes/{id} — One of my classes: roster, attendance summary, assessment summaries","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/classes/{id}","host":["{{baseUrl}}"],"path":["tcc","classes","{id}"]},"description":"One of my classes: roster, attendance summary, assessment summaries"}},{"name":"GET /tcc/classes/{id}/students — Authorized roster of one of my classes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/classes/{id}/students","host":["{{baseUrl}}"],"path":["tcc","classes","{id}","students"]},"description":"Authorized roster of one of my classes"}},{"name":"GET /tcc/classes/{id}/students/{personId} — Student profile (a student in my class; read only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/classes/{id}/students/{personId}","host":["{{baseUrl}}"],"path":["tcc","classes","{id}","students","{personId}"]},"description":"Student profile (a student in my class; read only)"}},{"name":"GET /tcc/standards — District-approved NJSLS standards (search)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/standards","host":["{{baseUrl}}"],"path":["tcc","standards"]},"description":"District-approved NJSLS standards (search)"}},{"name":"POST /tcc/standards/validate — Validate standard codes against the approved catalog","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/standards/validate","host":["{{baseUrl}}"],"path":["tcc","standards","validate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Validate standard codes against the approved catalog"}},{"name":"GET /tcc/standards/sets — Catalog versions and the district adoption of each","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/standards/sets","host":["{{baseUrl}}"],"path":["tcc","standards","sets"]},"description":"Catalog versions and the district adoption of each"}},{"name":"POST /tcc/standards/sets/{id}/adoption — Approve or retire a catalog version for the district (curriculum admin)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/standards/sets/{id}/adoption","host":["{{baseUrl}}"],"path":["tcc","standards","sets","{id}","adoption"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve or retire a catalog version for the district (curriculum admin)"}},{"name":"GET /tcc/lessons — My lessons","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/lessons","host":["{{baseUrl}}"],"path":["tcc","lessons"]},"description":"My lessons"}},{"name":"POST /tcc/lessons — Create a lesson (written by the teacher)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/lessons","host":["{{baseUrl}}"],"path":["tcc","lessons"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a lesson (written by the teacher)"}},{"name":"POST /tcc/lessons/generate — Start AI lesson generation (background job; poll /tcc/jobs/:id)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/lessons/generate","host":["{{baseUrl}}"],"path":["tcc","lessons","generate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start AI lesson generation (background job; poll /tcc/jobs/:id)"}},{"name":"GET /tcc/lessons/{id} — A lesson with its ten sections, standards and versions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/lessons/{id}","host":["{{baseUrl}}"],"path":["tcc","lessons","{id}"]},"description":"A lesson with its ten sections, standards and versions"}},{"name":"PATCH /tcc/lessons/{id} — Edit a lesson (any section); saves a new version","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/lessons/{id}","host":["{{baseUrl}}"],"path":["tcc","lessons","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a lesson (any section); saves a new version"}},{"name":"DELETE /tcc/lessons/{id} — Delete a lesson","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/lessons/{id}","host":["{{baseUrl}}"],"path":["tcc","lessons","{id}"]},"description":"Delete a lesson"}},{"name":"POST /tcc/lessons/{id}/status — Move a lesson through Draft → Teacher review → Approved → Scheduled → Completed → Archived","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/lessons/{id}/status","host":["{{baseUrl}}"],"path":["tcc","lessons","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Move a lesson through Draft → Teacher review → Approved → Scheduled → Completed → Archived"}},{"name":"POST /tcc/lessons/{id}/sections/{section}/regenerate — Regenerate one section with AI (background job)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/lessons/{id}/sections/{section}/regenerate","host":["{{baseUrl}}"],"path":["tcc","lessons","{id}","sections","{section}","regenerate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Regenerate one section with AI (background job)"}},{"name":"POST /tcc/lessons/{id}/duplicate — Duplicate a lesson as a new draft","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tcc/lessons/{id}/duplicate","host":["{{baseUrl}}"],"path":["tcc","lessons","{id}","duplicate"]},"description":"Duplicate a lesson as a new draft"}},{"name":"GET /tcc/lessons/{id}/versions/{version} — One saved version of a lesson","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/lessons/{id}/versions/{version}","host":["{{baseUrl}}"],"path":["tcc","lessons","{id}","versions","{version}"]},"description":"One saved version of a lesson"}},{"name":"POST /tcc/lessons/{id}/versions/{version}/restore — Restore a saved version (as a new version)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tcc/lessons/{id}/versions/{version}/restore","host":["{{baseUrl}}"],"path":["tcc","lessons","{id}","versions","{version}","restore"]},"description":"Restore a saved version (as a new version)"}},{"name":"GET /tcc/jobs — My recent AI generation jobs","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/jobs","host":["{{baseUrl}}"],"path":["tcc","jobs"]},"description":"My recent AI generation jobs"}},{"name":"GET /tcc/jobs/{id} — AI generation job status","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/jobs/{id}","host":["{{baseUrl}}"],"path":["tcc","jobs","{id}"]},"description":"AI generation job status"}},{"name":"POST /tcc/jobs/{id}/cancel — Cancel a queued or running generation","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tcc/jobs/{id}/cancel","host":["{{baseUrl}}"],"path":["tcc","jobs","{id}","cancel"]},"description":"Cancel a queued or running generation"}},{"name":"POST /tcc/jobs/{id}/retry — Retry a failed generation","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tcc/jobs/{id}/retry","host":["{{baseUrl}}"],"path":["tcc","jobs","{id}","retry"]},"description":"Retry a failed generation"}},{"name":"GET /tcc/usage — AI usage summary (mine, or the district for administrators)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/usage","host":["{{baseUrl}}"],"path":["tcc","usage"]},"description":"AI usage summary (mine, or the district for administrators)"}},{"name":"GET /tcc/settings — District AI controls and module rules","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/settings","host":["{{baseUrl}}"],"path":["tcc","settings"]},"description":"District AI controls and module rules"}},{"name":"PUT /tcc/settings — Change district AI controls (district administrators)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/settings","host":["{{baseUrl}}"],"path":["tcc","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change district AI controls (district administrators)"}},{"name":"GET /tcc/members — Curriculum administrators and coaches","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/members","host":["{{baseUrl}}"],"path":["tcc","members"]},"description":"Curriculum administrators and coaches"}},{"name":"POST /tcc/members — Add a curriculum administrator or coach (district administrators)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/members","host":["{{baseUrl}}"],"path":["tcc","members"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a curriculum administrator or coach (district administrators)"}},{"name":"DELETE /tcc/members/{id} — Remove a module role","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/members/{id}","host":["{{baseUrl}}"],"path":["tcc","members","{id}"]},"description":"Remove a module role"}},{"name":"GET /tcc/schools — Schools of the district (coach scope picker)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/schools","host":["{{baseUrl}}"],"path":["tcc","schools"]},"description":"Schools of the district (coach scope picker)"}},{"name":"GET /tcc/staff — Search staff (for module roles)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/staff","host":["{{baseUrl}}"],"path":["tcc","staff"]},"description":"Search staff (for module roles)"}},{"name":"GET /tcc/preferences — My profile, preferences and accessibility settings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/preferences","host":["{{baseUrl}}"],"path":["tcc","preferences"]},"description":"My profile, preferences and accessibility settings"}},{"name":"PUT /tcc/preferences — Save my preferences","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/preferences","host":["{{baseUrl}}"],"path":["tcc","preferences"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save my preferences"}},{"name":"GET /tcc/lessons/{id}/export — Export a lesson as PDF or DOCX","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/lessons/{id}/export","host":["{{baseUrl}}"],"path":["tcc","lessons","{id}","export"]},"description":"Export a lesson as PDF or DOCX"}},{"name":"POST /tcc/lessons/{id}/library — Save the lesson to the Resource Library","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/lessons/{id}/library","host":["{{baseUrl}}"],"path":["tcc","lessons","{id}","library"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save the lesson to the Resource Library"}},{"name":"GET /tcc/assignments — My assignments","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/assignments","host":["{{baseUrl}}"],"path":["tcc","assignments"]},"description":"My assignments"}},{"name":"POST /tcc/assignments — Create an assignment (written by the teacher)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assignments","host":["{{baseUrl}}"],"path":["tcc","assignments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an assignment (written by the teacher)"}},{"name":"POST /tcc/assignments/generate — Generate an assignment with foundational / grade-level / enrichment versions (background job)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assignments/generate","host":["{{baseUrl}}"],"path":["tcc","assignments","generate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generate an assignment with foundational / grade-level / enrichment versions (background job)"}},{"name":"POST /tcc/assignments/adapt — Convert material into instructional levels (background job)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assignments/adapt","host":["{{baseUrl}}"],"path":["tcc","assignments","adapt"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Convert material into instructional levels (background job)"}},{"name":"GET /tcc/assignments/{id} — An assignment with its versions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/assignments/{id}","host":["{{baseUrl}}"],"path":["tcc","assignments","{id}"]},"description":"An assignment with its versions"}},{"name":"PATCH /tcc/assignments/{id} — Edit an assignment","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assignments/{id}","host":["{{baseUrl}}"],"path":["tcc","assignments","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an assignment"}},{"name":"DELETE /tcc/assignments/{id} — Delete an assignment","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/assignments/{id}","host":["{{baseUrl}}"],"path":["tcc","assignments","{id}"]},"description":"Delete an assignment"}},{"name":"PUT /tcc/assignments/{id}/variants/{level} — Edit (or add) one differentiated version","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assignments/{id}/variants/{level}","host":["{{baseUrl}}"],"path":["tcc","assignments","{id}","variants","{level}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit (or add) one differentiated version"}},{"name":"DELETE /tcc/assignments/{id}/variants/{level} — Remove one version","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/assignments/{id}/variants/{level}","host":["{{baseUrl}}"],"path":["tcc","assignments","{id}","variants","{level}"]},"description":"Remove one version"}},{"name":"POST /tcc/assignments/{id}/status — Review, approve, publish (needs approval) or archive","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assignments/{id}/status","host":["{{baseUrl}}"],"path":["tcc","assignments","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Review, approve, publish (needs approval) or archive"}},{"name":"POST /tcc/assignments/{id}/duplicate — Duplicate an assignment","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tcc/assignments/{id}/duplicate","host":["{{baseUrl}}"],"path":["tcc","assignments","{id}","duplicate"]},"description":"Duplicate an assignment"}},{"name":"GET /tcc/assignments/{id}/export — Export as PDF or DOCX (one version, or every selected version; optional answer key)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/assignments/{id}/export","host":["{{baseUrl}}"],"path":["tcc","assignments","{id}","export"]},"description":"Export as PDF or DOCX (one version, or every selected version; optional answer key)"}},{"name":"POST /tcc/assignments/{id}/library — Save the assignment to the Resource Library (beyond private needs approval)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assignments/{id}/library","host":["{{baseUrl}}"],"path":["tcc","assignments","{id}","library"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save the assignment to the Resource Library (beyond private needs approval)"}},{"name":"GET /tcc/assessments — My assessments","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/assessments","host":["{{baseUrl}}"],"path":["tcc","assessments"]},"description":"My assessments"}},{"name":"POST /tcc/assessments — Create an assessment (questions added by the teacher or from the bank)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assessments","host":["{{baseUrl}}"],"path":["tcc","assessments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create an assessment (questions added by the teacher or from the bank)"}},{"name":"POST /tcc/assessments/generate — Generate an assessment, answer key and rubric (background job)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assessments/generate","host":["{{baseUrl}}"],"path":["tcc","assessments","generate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generate an assessment, answer key and rubric (background job)"}},{"name":"GET /tcc/assessments/{id} — An assessment with its questions, key and rubric","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/assessments/{id}","host":["{{baseUrl}}"],"path":["tcc","assessments","{id}"]},"description":"An assessment with its questions, key and rubric"}},{"name":"PATCH /tcc/assessments/{id} — Edit assessment settings","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assessments/{id}","host":["{{baseUrl}}"],"path":["tcc","assessments","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit assessment settings"}},{"name":"DELETE /tcc/assessments/{id} — Delete an assessment","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/assessments/{id}","host":["{{baseUrl}}"],"path":["tcc","assessments","{id}"]},"description":"Delete an assessment"}},{"name":"POST /tcc/assessments/{id}/questions — Add a question (also saved to the bank)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assessments/{id}/questions","host":["{{baseUrl}}"],"path":["tcc","assessments","{id}","questions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a question (also saved to the bank)"}},{"name":"POST /tcc/assessments/{id}/questions/generate — Generate more questions into this assessment (background job)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assessments/{id}/questions/generate","host":["{{baseUrl}}"],"path":["tcc","assessments","{id}","questions","generate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generate more questions into this assessment (background job)"}},{"name":"PATCH /tcc/assessments/{id}/questions/{questionId} — Edit a question (a colleague’s bank question is copied first)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assessments/{id}/questions/{questionId}","host":["{{baseUrl}}"],"path":["tcc","assessments","{id}","questions","{questionId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a question (a colleague’s bank question is copied first)"}},{"name":"DELETE /tcc/assessments/{id}/questions/{questionId} — Remove a question from this assessment (it stays in the bank)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/assessments/{id}/questions/{questionId}","host":["{{baseUrl}}"],"path":["tcc","assessments","{id}","questions","{questionId}"]},"description":"Remove a question from this assessment (it stays in the bank)"}},{"name":"PUT /tcc/assessments/{id}/order — Reorder questions","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assessments/{id}/order","host":["{{baseUrl}}"],"path":["tcc","assessments","{id}","order"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reorder questions"}},{"name":"POST /tcc/assessments/{id}/bank — Reuse questions from the bank","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assessments/{id}/bank","host":["{{baseUrl}}"],"path":["tcc","assessments","{id}","bank"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reuse questions from the bank"}},{"name":"POST /tcc/assessments/{id}/status — Review, approve, publish (needs approval) or archive","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assessments/{id}/status","host":["{{baseUrl}}"],"path":["tcc","assessments","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Review, approve, publish (needs approval) or archive"}},{"name":"POST /tcc/assessments/{id}/duplicate — Duplicate an assessment","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tcc/assessments/{id}/duplicate","host":["{{baseUrl}}"],"path":["tcc","assessments","{id}","duplicate"]},"description":"Duplicate an assessment"}},{"name":"GET /tcc/assessments/{id}/export — Printable PDF / DOCX: student copy, answer key, or both","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/assessments/{id}/export","host":["{{baseUrl}}"],"path":["tcc","assessments","{id}","export"]},"description":"Printable PDF / DOCX: student copy, answer key, or both"}},{"name":"POST /tcc/assessments/{id}/library — Save the assessment to the Resource Library","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assessments/{id}/library","host":["{{baseUrl}}"],"path":["tcc","assessments","{id}","library"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save the assessment to the Resource Library"}},{"name":"GET /tcc/questions — Question bank (mine, my school’s, the district’s)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/questions","host":["{{baseUrl}}"],"path":["tcc","questions"]},"description":"Question bank (mine, my school’s, the district’s)"}},{"name":"PATCH /tcc/questions/{id} — Share a bank question with my school (or district, curriculum admins)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/questions/{id}","host":["{{baseUrl}}"],"path":["tcc","questions","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Share a bank question with my school (or district, curriculum admins)"}},{"name":"DELETE /tcc/questions/{id} — Delete a question from my bank","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/questions/{id}","host":["{{baseUrl}}"],"path":["tcc","questions","{id}"]},"description":"Delete a question from my bank"}},{"name":"GET /tcc/resources — Search the library (mine, saved, shared, school, district)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/resources","host":["{{baseUrl}}"],"path":["tcc","resources"]},"description":"Search the library (mine, saved, shared, school, district)"}},{"name":"POST /tcc/resources — Save a resource (district scope goes to curriculum review)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/resources","host":["{{baseUrl}}"],"path":["tcc","resources"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save a resource (district scope goes to curriculum review)"}},{"name":"GET /tcc/resources/{id} — A library item with versions, sharing and approval","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/resources/{id}","host":["{{baseUrl}}"],"path":["tcc","resources","{id}"]},"description":"A library item with versions, sharing and approval"}},{"name":"PATCH /tcc/resources/{id} — Edit (new version) or change who can see it","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/resources/{id}","host":["{{baseUrl}}"],"path":["tcc","resources","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit (new version) or change who can see it"}},{"name":"DELETE /tcc/resources/{id} — Delete a library item","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/resources/{id}","host":["{{baseUrl}}"],"path":["tcc","resources","{id}"]},"description":"Delete a library item"}},{"name":"POST /tcc/resources/{id}/file — Upload a file (multipart, field \"file\"); creates a new version","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tcc/resources/{id}/file","host":["{{baseUrl}}"],"path":["tcc","resources","{id}","file"]},"description":"Upload a file (multipart, field \"file\"); creates a new version"}},{"name":"GET /tcc/resources/{id}/file — Download the file (optionally an older version)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/resources/{id}/file","host":["{{baseUrl}}"],"path":["tcc","resources","{id}","file"]},"description":"Download the file (optionally an older version)"}},{"name":"POST /tcc/resources/{id}/versions/{version}/restore — Restore an older version","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tcc/resources/{id}/versions/{version}/restore","host":["{{baseUrl}}"],"path":["tcc","resources","{id}","versions","{version}","restore"]},"description":"Restore an older version"}},{"name":"POST /tcc/resources/{id}/share — Share with a named colleague","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/resources/{id}/share","host":["{{baseUrl}}"],"path":["tcc","resources","{id}","share"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Share with a named colleague"}},{"name":"DELETE /tcc/resources/{id}/share/{userId} — Stop sharing with a colleague","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/resources/{id}/share/{userId}","host":["{{baseUrl}}"],"path":["tcc","resources","{id}","share","{userId}"]},"description":"Stop sharing with a colleague"}},{"name":"POST /tcc/resources/{id}/save — Save to (or remove from) My Library","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/resources/{id}/save","host":["{{baseUrl}}"],"path":["tcc","resources","{id}","save"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save to (or remove from) My Library"}},{"name":"GET /tcc/colleagues — Search colleagues to share with","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/colleagues","host":["{{baseUrl}}"],"path":["tcc","colleagues"]},"description":"Search colleagues to share with"}},{"name":"GET /tcc/approvals — Approvals: my requests, the queue waiting for me, or decided","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/approvals","host":["{{baseUrl}}"],"path":["tcc","approvals"]},"description":"Approvals: my requests, the queue waiting for me, or decided"}},{"name":"POST /tcc/approvals/{id}/decide — Approve or reject (curriculum admin for the district library; principal for parent messages)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/approvals/{id}/decide","host":["{{baseUrl}}"],"path":["tcc","approvals","{id}","decide"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve or reject (curriculum admin for the district library; principal for parent messages)"}},{"name":"GET /tcc/workflow — Workflow Center: tasks, drafts, approvals and generations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/workflow","host":["{{baseUrl}}"],"path":["tcc","workflow"]},"description":"Workflow Center: tasks, drafts, approvals and generations"}},{"name":"GET /tcc/drafts — Drafts in progress across the studios","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/drafts","host":["{{baseUrl}}"],"path":["tcc","drafts"]},"description":"Drafts in progress across the studios"}},{"name":"GET /tcc/tasks — My tasks and reminders","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/tasks","host":["{{baseUrl}}"],"path":["tcc","tasks"]},"description":"My tasks and reminders"}},{"name":"POST /tcc/tasks — Add a task or reminder","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/tasks","host":["{{baseUrl}}"],"path":["tcc","tasks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a task or reminder"}},{"name":"PATCH /tcc/tasks/{id} — Edit, complete or reopen a task","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/tasks/{id}","host":["{{baseUrl}}"],"path":["tcc","tasks","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit, complete or reopen a task"}},{"name":"DELETE /tcc/tasks/{id} — Delete a task","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/tasks/{id}","host":["{{baseUrl}}"],"path":["tcc","tasks","{id}"]},"description":"Delete a task"}},{"name":"GET /tcc/notifications — My Teacher Command Center notifications","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/notifications","host":["{{baseUrl}}"],"path":["tcc","notifications"]},"description":"My Teacher Command Center notifications"}},{"name":"POST /tcc/notifications/read — Mark notifications read","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/notifications/read","host":["{{baseUrl}}"],"path":["tcc","notifications","read"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark notifications read"}},{"name":"GET /tcc/assistant/conversations — My assistant conversations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/assistant/conversations","host":["{{baseUrl}}"],"path":["tcc","assistant","conversations"]},"description":"My assistant conversations"}},{"name":"GET /tcc/assistant/conversations/{id} — A conversation with its messages and attached documents","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/assistant/conversations/{id}","host":["{{baseUrl}}"],"path":["tcc","assistant","conversations","{id}"]},"description":"A conversation with its messages and attached documents"}},{"name":"PATCH /tcc/assistant/conversations/{id} — Rename, archive, attach or detach library documents","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assistant/conversations/{id}","host":["{{baseUrl}}"],"path":["tcc","assistant","conversations","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rename, archive, attach or detach library documents"}},{"name":"DELETE /tcc/assistant/conversations/{id} — Delete a conversation","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/assistant/conversations/{id}","host":["{{baseUrl}}"],"path":["tcc","assistant","conversations","{id}"]},"description":"Delete a conversation"}},{"name":"POST /tcc/assistant/messages — Ask the assistant (answer runs in the background; poll the message)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assistant/messages","host":["{{baseUrl}}"],"path":["tcc","assistant","messages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask the assistant (answer runs in the background; poll the message)"}},{"name":"GET /tcc/assistant/messages/{id} — One assistant message (poll while running)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/assistant/messages/{id}","host":["{{baseUrl}}"],"path":["tcc","assistant","messages","{id}"]},"description":"One assistant message (poll while running)"}},{"name":"POST /tcc/assistant/messages/{id}/save — Save (or unsave) an answer to Saved outputs","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/assistant/messages/{id}/save","host":["{{baseUrl}}"],"path":["tcc","assistant","messages","{id}","save"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save (or unsave) an answer to Saved outputs"}},{"name":"GET /tcc/assistant/saved — Saved outputs","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/assistant/saved","host":["{{baseUrl}}"],"path":["tcc","assistant","saved"]},"description":"Saved outputs"}},{"name":"GET /tcc/grading — My grading sets","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/grading","host":["{{baseUrl}}"],"path":["tcc","grading"]},"description":"My grading sets"}},{"name":"POST /tcc/grading — Start a grading set with a rubric","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/grading","host":["{{baseUrl}}"],"path":["tcc","grading"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a grading set with a rubric"}},{"name":"GET /tcc/grading/{id} — A grading set with responses, AI suggestions and teacher decisions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/grading/{id}","host":["{{baseUrl}}"],"path":["tcc","grading","{id}"]},"description":"A grading set with responses, AI suggestions and teacher decisions"}},{"name":"PATCH /tcc/grading/{id} — Edit the set or its rubric","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/grading/{id}","host":["{{baseUrl}}"],"path":["tcc","grading","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit the set or its rubric"}},{"name":"DELETE /tcc/grading/{id} — Delete a grading set","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/grading/{id}","host":["{{baseUrl}}"],"path":["tcc","grading","{id}"]},"description":"Delete a grading set"}},{"name":"POST /tcc/grading/{id}/items — Add student responses","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/grading/{id}/items","host":["{{baseUrl}}"],"path":["tcc","grading","{id}","items"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add student responses"}},{"name":"DELETE /tcc/grading/{id}/items/{itemId} — Remove a response","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/grading/{id}/items/{itemId}","host":["{{baseUrl}}"],"path":["tcc","grading","{id}","items","{itemId}"]},"description":"Remove a response"}},{"name":"POST /tcc/grading/{id}/suggest — Ask the AI for rubric-score suggestions and feedback drafts (the teacher decides)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/grading/{id}/suggest","host":["{{baseUrl}}"],"path":["tcc","grading","{id}","suggest"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask the AI for rubric-score suggestions and feedback drafts (the teacher decides)"}},{"name":"POST /tcc/grading/{id}/items/{itemId}/review — The teacher’s final score and feedback","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/grading/{id}/items/{itemId}/review","host":["{{baseUrl}}"],"path":["tcc","grading","{id}","items","{itemId}","review"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"The teacher’s final score and feedback"}},{"name":"GET /tcc/grading/{id}/export — Final scores as CSV (to enter in the gradebook)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/grading/{id}/export","host":["{{baseUrl}}"],"path":["tcc","grading","{id}","export"]},"description":"Final scores as CSV (to enter in the gradebook)"}},{"name":"GET /tcc/insights/{id} — Trends for one of my classes and the latest AI recommendations","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/insights/{id}","host":["{{baseUrl}}"],"path":["tcc","insights","{id}"]},"description":"Trends for one of my classes and the latest AI recommendations"}},{"name":"POST /tcc/insights/{id}/recommend — Ask for instructional recommendations (aggregate data only; background job)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tcc/insights/{id}/recommend","host":["{{baseUrl}}"],"path":["tcc","insights","{id}","recommend"]},"description":"Ask for instructional recommendations (aggregate data only; background job)"}},{"name":"GET /tcc/interventions — My support plans","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/interventions","host":["{{baseUrl}}"],"path":["tcc","interventions"]},"description":"My support plans"}},{"name":"POST /tcc/interventions — Create a support plan for a student in my class","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/interventions","host":["{{baseUrl}}"],"path":["tcc","interventions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a support plan for a student in my class"}},{"name":"GET /tcc/interventions/{id} — A support plan with progress monitoring","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/interventions/{id}","host":["{{baseUrl}}"],"path":["tcc","interventions","{id}"]},"description":"A support plan with progress monitoring"}},{"name":"PATCH /tcc/interventions/{id} — Edit, close or reopen a plan","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/interventions/{id}","host":["{{baseUrl}}"],"path":["tcc","interventions","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit, close or reopen a plan"}},{"name":"DELETE /tcc/interventions/{id} — Delete a plan","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/interventions/{id}","host":["{{baseUrl}}"],"path":["tcc","interventions","{id}"]},"description":"Delete a plan"}},{"name":"POST /tcc/interventions/{id}/entries — Record progress","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/interventions/{id}/entries","host":["{{baseUrl}}"],"path":["tcc","interventions","{id}","entries"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record progress"}},{"name":"DELETE /tcc/interventions/{id}/entries/{entryId} — Remove a progress entry","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/interventions/{id}/entries/{entryId}","host":["{{baseUrl}}"],"path":["tcc","interventions","{id}","entries","{entryId}"]},"description":"Remove a progress entry"}},{"name":"GET /tcc/parents/templates — Message templates (mine, school, district)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/parents/templates","host":["{{baseUrl}}"],"path":["tcc","parents","templates"]},"description":"Message templates (mine, school, district)"}},{"name":"POST /tcc/parents/templates — Create a template","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/parents/templates","host":["{{baseUrl}}"],"path":["tcc","parents","templates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a template"}},{"name":"PUT /tcc/parents/templates/{id} — Edit a template","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/parents/templates/{id}","host":["{{baseUrl}}"],"path":["tcc","parents","templates","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a template"}},{"name":"DELETE /tcc/parents/templates/{id} — Delete a template","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/parents/templates/{id}","host":["{{baseUrl}}"],"path":["tcc","parents","templates","{id}"]},"description":"Delete a template"}},{"name":"GET /tcc/parents/messages — My parent messages","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/parents/messages","host":["{{baseUrl}}"],"path":["tcc","parents","messages"]},"description":"My parent messages"}},{"name":"POST /tcc/parents/messages — Write a parent message (draft)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/parents/messages","host":["{{baseUrl}}"],"path":["tcc","parents","messages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Write a parent message (draft)"}},{"name":"POST /tcc/parents/messages/draft — Draft a parent message with AI (background job)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/parents/messages/draft","host":["{{baseUrl}}"],"path":["tcc","parents","messages","draft"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Draft a parent message with AI (background job)"}},{"name":"GET /tcc/parents/messages/{id} — A parent message with translations and approval","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/parents/messages/{id}","host":["{{baseUrl}}"],"path":["tcc","parents","messages","{id}"]},"description":"A parent message with translations and approval"}},{"name":"PATCH /tcc/parents/messages/{id} — Edit a draft","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/parents/messages/{id}","host":["{{baseUrl}}"],"path":["tcc","parents","messages","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a draft"}},{"name":"DELETE /tcc/parents/messages/{id} — Delete a draft","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/parents/messages/{id}","host":["{{baseUrl}}"],"path":["tcc","parents","messages","{id}"]},"description":"Delete a draft"}},{"name":"GET /tcc/parents/messages/{id}/recipients — Who will receive it (counts and home languages)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/parents/messages/{id}/recipients","host":["{{baseUrl}}"],"path":["tcc","parents","messages","{id}","recipients"]},"description":"Who will receive it (counts and home languages)"}},{"name":"POST /tcc/parents/messages/{id}/translate — Translate with AI (background job)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/parents/messages/{id}/translate","host":["{{baseUrl}}"],"path":["tcc","parents","messages","{id}","translate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Translate with AI (background job)"}},{"name":"PUT /tcc/parents/messages/{id}/translations/{language} — Edit (or remove) a translation","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/parents/messages/{id}/translations/{language}","host":["{{baseUrl}}"],"path":["tcc","parents","messages","{id}","translations","{language}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit (or remove) a translation"}},{"name":"POST /tcc/parents/messages/{id}/submit — Submit for approval (or approve directly when the district does not require it)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/parents/messages/{id}/submit","host":["{{baseUrl}}"],"path":["tcc","parents","messages","{id}","submit"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Submit for approval (or approve directly when the district does not require it)"}},{"name":"POST /tcc/parents/messages/{id}/withdraw — Withdraw from approval","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tcc/parents/messages/{id}/withdraw","host":["{{baseUrl}}"],"path":["tcc","parents","messages","{id}","withdraw"]},"description":"Withdraw from approval"}},{"name":"POST /tcc/parents/messages/{id}/send — Send an approved message through DEP messaging","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tcc/parents/messages/{id}/send","host":["{{baseUrl}}"],"path":["tcc","parents","messages","{id}","send"]},"description":"Send an approved message through DEP messaging"}}]},{"name":"Teacher Command Center — integrations","item":[{"name":"GET /tcc/integrations — My classroom-system connections and what the district has set up","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations","host":["{{baseUrl}}"],"path":["tcc","integrations"]},"description":"My classroom-system connections and what the district has set up"}},{"name":"POST /tcc/integrations/{provider}/connect — Start connecting my account (returns the provider sign-in URL)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/integrations/{provider}/connect","host":["{{baseUrl}}"],"path":["tcc","integrations","{provider}","connect"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start connecting my account (returns the provider sign-in URL)"}},{"name":"GET /tcc/integrations/oauth/{provider}/callback — OAuth callback (redirects back into the Teacher Command Center)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/oauth/{provider}/callback","host":["{{baseUrl}}"],"path":["tcc","integrations","oauth","{provider}","callback"]},"description":"OAuth callback (redirects back into the Teacher Command Center)"}},{"name":"DELETE /tcc/integrations/{provider} — Disconnect my account (revokes the sign-in where the provider allows it)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/{provider}","host":["{{baseUrl}}"],"path":["tcc","integrations","{provider}"]},"description":"Disconnect my account (revokes the sign-in where the provider allows it)"}},{"name":"GET /tcc/integrations/{provider}/courses — My courses / class teams / sections there, with suggested links to my DEP classes","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/{provider}/courses","host":["{{baseUrl}}"],"path":["tcc","integrations","{provider}","courses"]},"description":"My courses / class teams / sections there, with suggested links to my DEP classes"}},{"name":"GET /tcc/integrations/google/topics — Topics of one Google Classroom class","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/google/topics","host":["{{baseUrl}}"],"path":["tcc","integrations","google","topics"]},"description":"Topics of one Google Classroom class"}},{"name":"GET /tcc/integrations/mappings — My class links","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/mappings","host":["{{baseUrl}}"],"path":["tcc","integrations","mappings"]},"description":"My class links"}},{"name":"PUT /tcc/integrations/mappings — Link one of my DEP classes to a course there (teacher confirms)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/integrations/mappings","host":["{{baseUrl}}"],"path":["tcc","integrations","mappings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Link one of my DEP classes to a course there (teacher confirms)"}},{"name":"DELETE /tcc/integrations/mappings/{id} — Remove a class link","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/mappings/{id}","host":["{{baseUrl}}"],"path":["tcc","integrations","mappings","{id}"]},"description":"Remove a class link"}},{"name":"POST /tcc/integrations/post — Post a lesson / assignment / assessment to linked classes (draft or published)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/integrations/post","host":["{{baseUrl}}"],"path":["tcc","integrations","post"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Post a lesson / assignment / assessment to linked classes (draft or published)"}},{"name":"GET /tcc/integrations/posts — What I posted (by item, class or date range)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/posts","host":["{{baseUrl}}"],"path":["tcc","integrations","posts"]},"description":"What I posted (by item, class or date range)"}},{"name":"DELETE /tcc/integrations/posts/{id} — Forget a post record (does not delete it in the provider)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/posts/{id}","host":["{{baseUrl}}"],"path":["tcc","integrations","posts","{id}"]},"description":"Forget a post record (does not delete it in the provider)"}},{"name":"POST /tcc/integrations/posts/{id}/results/pull — Bring in Google Classroom submission states / scores as suggestions","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/posts/{id}/results/pull","host":["{{baseUrl}}"],"path":["tcc","integrations","posts","{id}","results","pull"]},"description":"Bring in Google Classroom submission states / scores as suggestions"}},{"name":"GET /tcc/integrations/posts/{id}/results — Classroom results pulled for one post (suggestions only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/posts/{id}/results","host":["{{baseUrl}}"],"path":["tcc","integrations","posts","{id}","results"]},"description":"Classroom results pulled for one post (suggestions only)"}},{"name":"POST /tcc/integrations/onedrive/save — Save an export to my OneDrive folder \"Omni Forge DEP\"","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/integrations/onedrive/save","host":["{{baseUrl}}"],"path":["tcc","integrations","onedrive","save"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save an export to my OneDrive folder \"Omni Forge DEP\""}},{"name":"GET /tcc/integrations/{provider}/files — Browse my Google Drive / OneDrive","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/{provider}/files","host":["{{baseUrl}}"],"path":["tcc","integrations","{provider}","files"]},"description":"Browse my Google Drive / OneDrive"}},{"name":"POST /tcc/integrations/{provider}/import — Import a copy into my Resource Library (or a new version of an item I imported)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/integrations/{provider}/import","host":["{{baseUrl}}"],"path":["tcc","integrations","{provider}","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Import a copy into my Resource Library (or a new version of an item I imported)"}},{"name":"GET /tcc/integrations/imports/{id} — Where a library item was imported from","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/imports/{id}","host":["{{baseUrl}}"],"path":["tcc","integrations","imports","{id}"]},"description":"Where a library item was imported from"}},{"name":"GET /tcc/integrations/admin — Provider setup for the district (district administrators)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/admin","host":["{{baseUrl}}"],"path":["tcc","integrations","admin"]},"description":"Provider setup for the district (district administrators)"}},{"name":"PUT /tcc/integrations/admin/{provider} — Save a provider: switch, credentials (write-only), site, tenant, features","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/tcc/integrations/admin/{provider}","host":["{{baseUrl}}"],"path":["tcc","integrations","admin","{provider}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save a provider: switch, credentials (write-only), site, tenant, features"}},{"name":"DELETE /tcc/integrations/admin/{provider} — Remove the district credentials (switches it off and disconnects every teacher)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/admin/{provider}","host":["{{baseUrl}}"],"path":["tcc","integrations","admin","{provider}"]},"description":"Remove the district credentials (switches it off and disconnects every teacher)"}},{"name":"POST /tcc/integrations/admin/{provider}/check — Health check of the provider credentials","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/tcc/integrations/admin/{provider}/check","host":["{{baseUrl}}"],"path":["tcc","integrations","admin","{provider}","check"]},"description":"Health check of the provider credentials"}}]},{"name":"Professional School Counselors","item":[{"name":"GET /psc/me — My roles in Professional School Counselors and the sidebar menu","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/me","host":["{{baseUrl}}"],"path":["psc","me"]},"description":"My roles in Professional School Counselors and the sidebar menu"}},{"name":"GET /psc/home — My counseling (a PSC’s home)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/home","host":["{{baseUrl}}"],"path":["psc","home"]},"description":"My counseling (a PSC’s home)"}},{"name":"GET /psc/overview — Supervisor home: compliance, support queue, Early Graduation pipeline, per-school summaries","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/overview","host":["{{baseUrl}}"],"path":["psc","overview"]},"description":"Supervisor home: compliance, support queue, Early Graduation pipeline, per-school summaries"}},{"name":"GET /psc/schools — District schools (for filters and the monthly report)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/schools","host":["{{baseUrl}}"],"path":["psc","schools"]},"description":"District schools (for filters and the monthly report)"}},{"name":"GET /psc/counselors — The Professional School Counselors this person may see","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/counselors","host":["{{baseUrl}}"],"path":["psc","counselors"]},"description":"The Professional School Counselors this person may see"}},{"name":"GET /psc/counselors/{id} — One PSC: weeks, months, support items and reviews","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/counselors/{id}","host":["{{baseUrl}}"],"path":["psc","counselors","{id}"]},"description":"One PSC: weeks, months, support items and reviews"}},{"name":"GET /psc/weekly — My check-in for a week (blank when not started); defaults to this week","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/weekly","host":["{{baseUrl}}"],"path":["psc","weekly"]},"description":"My check-in for a week (blank when not started); defaults to this week"}},{"name":"PUT /psc/weekly — Save my check-in as a draft","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/weekly","host":["{{baseUrl}}"],"path":["psc","weekly"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save my check-in as a draft"}},{"name":"GET /psc/weekly/history — My recent weeks, including weeks with nothing submitted","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/weekly/history","host":["{{baseUrl}}"],"path":["psc","weekly","history"]},"description":"My recent weeks, including weeks with nothing submitted"}},{"name":"POST /psc/weekly/submit — Submit my check-in (needs every required answer and the attestation; then locked)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/weekly/submit","host":["{{baseUrl}}"],"path":["psc","weekly","submit"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Submit my check-in (needs every required answer and the attestation; then locked)"}},{"name":"GET /psc/weekly/{id} — One weekly check-in","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/weekly/{id}","host":["{{baseUrl}}"],"path":["psc","weekly","{id}"]},"description":"One weekly check-in"}},{"name":"POST /psc/weekly/{id}/return — Return a submitted check-in for correction (supervisor)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/weekly/{id}/return","host":["{{baseUrl}}"],"path":["psc","weekly","{id}","return"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Return a submitted check-in for correction (supervisor)"}},{"name":"GET /psc/monthly/config — Months, schools (plus Other), deliverables and the form text","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/monthly/config","host":["{{baseUrl}}"],"path":["psc","monthly","config"]},"description":"Months, schools (plus Other), deliverables and the form text"}},{"name":"GET /psc/monthly — My monthly reports and the months still to report","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/monthly","host":["{{baseUrl}}"],"path":["psc","monthly"]},"description":"My monthly reports and the months still to report"}},{"name":"POST /psc/monthly — Start a monthly report for a month and school","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/monthly","host":["{{baseUrl}}"],"path":["psc","monthly"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a monthly report for a month and school"}},{"name":"GET /psc/monthly/{id} — One monthly report","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/monthly/{id}","host":["{{baseUrl}}"],"path":["psc","monthly","{id}"]},"description":"One monthly report"}},{"name":"PATCH /psc/monthly/{id} — Save a monthly report draft","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/monthly/{id}","host":["{{baseUrl}}"],"path":["psc","monthly","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save a monthly report draft"}},{"name":"DELETE /psc/monthly/{id} — Delete a monthly report draft never submitted","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/psc/monthly/{id}","host":["{{baseUrl}}"],"path":["psc","monthly","{id}"]},"description":"Delete a monthly report draft never submitted"}},{"name":"POST /psc/monthly/{id}/submit — Submit a monthly report (locked until returned)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/monthly/{id}/submit","host":["{{baseUrl}}"],"path":["psc","monthly","{id}","submit"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Submit a monthly report (locked until returned)"}},{"name":"POST /psc/monthly/{id}/return — Return a submitted monthly report for correction (supervisor)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/monthly/{id}/return","host":["{{baseUrl}}"],"path":["psc","monthly","{id}","return"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Return a submitted monthly report for correction (supervisor)"}},{"name":"POST /psc/monthly/{id}/files — Upload evidence (multipart field \"file\", optional field \"label\"); 5 files, 10 MB each","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/psc/monthly/{id}/files","host":["{{baseUrl}}"],"path":["psc","monthly","{id}","files"]},"description":"Upload evidence (multipart field \"file\", optional field \"label\"); 5 files, 10 MB each"}},{"name":"POST /psc/early-grad/{id}/files — Upload a supporting document (multipart field \"file\", optional \"label\")","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/psc/early-grad/{id}/files","host":["{{baseUrl}}"],"path":["psc","early-grad","{id}","files"]},"description":"Upload a supporting document (multipart field \"file\", optional \"label\")"}},{"name":"POST /psc/conferences/{id}/files — Upload a conference document (multipart field \"file\", optional \"label\")","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/psc/conferences/{id}/files","host":["{{baseUrl}}"],"path":["psc","conferences","{id}","files"]},"description":"Upload a conference document (multipart field \"file\", optional \"label\")"}},{"name":"GET /psc/files/{id} — Download a file (the reader’s own access is checked)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/files/{id}","host":["{{baseUrl}}"],"path":["psc","files","{id}"]},"description":"Download a file (the reader’s own access is checked)"}},{"name":"DELETE /psc/files/{id} — Remove a file (the owner, while the report / review is editable)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/psc/files/{id}","host":["{{baseUrl}}"],"path":["psc","files","{id}"]},"description":"Remove a file (the owner, while the report / review is editable)"}},{"name":"GET /psc/compliance/weekly — PSCs × weeks: submitted, late, missing, support needed","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/compliance/weekly","host":["{{baseUrl}}"],"path":["psc","compliance","weekly"]},"description":"PSCs × weeks: submitted, late, missing, support needed"}},{"name":"GET /psc/compliance/monthly — PSCs × months, plus the deliverable-completion summary","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/compliance/monthly","host":["{{baseUrl}}"],"path":["psc","compliance","monthly"]},"description":"PSCs × months, plus the deliverable-completion summary"}},{"name":"GET /psc/early-grad — Early Graduation reviews I may see (filters: status, school, decision, search, mine)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/early-grad","host":["{{baseUrl}}"],"path":["psc","early-grad"]},"description":"Early Graduation reviews I may see (filters: status, school, decision, search, mine)"}},{"name":"POST /psc/early-grad — Start a review for a student (prefilled from DEP)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/early-grad","host":["{{baseUrl}}"],"path":["psc","early-grad"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a review for a student (prefilled from DEP)"}},{"name":"GET /psc/early-grad/pipeline — Reviews by stage, decision and school","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/early-grad/pipeline","host":["{{baseUrl}}"],"path":["psc","early-grad","pipeline"]},"description":"Reviews by stage, decision and school"}},{"name":"GET /psc/early-grad/students — Grade 9–12 students at my school(s) or on my caseload (to start a review)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/early-grad/students","host":["{{baseUrl}}"],"path":["psc","early-grad","students"]},"description":"Grade 9–12 students at my school(s) or on my caseload (to start a review)"}},{"name":"GET /psc/early-grad/{id} — One review: answers, DEP figures, documents, rubric, decision, trail","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/early-grad/{id}","host":["{{baseUrl}}"],"path":["psc","early-grad","{id}"]},"description":"One review: answers, DEP figures, documents, rubric, decision, trail"}},{"name":"PATCH /psc/early-grad/{id} — Save answers (draft)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/early-grad/{id}","host":["{{baseUrl}}"],"path":["psc","early-grad","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save answers (draft)"}},{"name":"DELETE /psc/early-grad/{id} — Delete a draft review never submitted (its PSC)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/psc/early-grad/{id}","host":["{{baseUrl}}"],"path":["psc","early-grad","{id}"]},"description":"Delete a draft review never submitted (its PSC)"}},{"name":"POST /psc/early-grad/{id}/info-needed — Save as “Additional information needed”","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/early-grad/{id}/info-needed","host":["{{baseUrl}}"],"path":["psc","early-grad","{id}","info-needed"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save as “Additional information needed”"}},{"name":"POST /psc/early-grad/{id}/submit — Sign and submit to the Early Graduation Review Committee","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/early-grad/{id}/submit","host":["{{baseUrl}}"],"path":["psc","early-grad","{id}","submit"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Sign and submit to the Early Graduation Review Committee"}},{"name":"POST /psc/early-grad/{id}/return — Return a submitted review to the PSC for correction (supervisor)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/early-grad/{id}/return","host":["{{baseUrl}}"],"path":["psc","early-grad","{id}","return"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Return a submitted review to the PSC for correction (supervisor)"}},{"name":"POST /psc/early-grad/{id}/decision — Record the committee decision with the Readiness Rubric (committee members)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/early-grad/{id}/decision","host":["{{baseUrl}}"],"path":["psc","early-grad","{id}","decision"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record the committee decision with the Readiness Rubric (committee members)"}},{"name":"GET /psc/early-grad/{id}/trail — The review’s audit trail","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/early-grad/{id}/trail","host":["{{baseUrl}}"],"path":["psc","early-grad","{id}","trail"]},"description":"The review’s audit trail"}},{"name":"GET /psc/support — Support items (status open|in_progress|resolved|active, school, counselor, mine)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/support","host":["{{baseUrl}}"],"path":["psc","support"]},"description":"Support items (status open|in_progress|resolved|active, school, counselor, mine)"}},{"name":"GET /psc/support/{id} — One support item with its response thread","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/support/{id}","host":["{{baseUrl}}"],"path":["psc","support","{id}"]},"description":"One support item with its response thread"}},{"name":"POST /psc/support/{id}/messages — Respond (and, for the supervisor, set the status)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/support/{id}/messages","host":["{{baseUrl}}"],"path":["psc","support","{id}","messages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Respond (and, for the supervisor, set the status)"}},{"name":"GET /psc/committee — The Early Graduation Review Committee roster","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/committee","host":["{{baseUrl}}"],"path":["psc","committee"]},"description":"The Early Graduation Review Committee roster"}},{"name":"POST /psc/committee — Add a committee member (supervisor / district admin)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/committee","host":["{{baseUrl}}"],"path":["psc","committee"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a committee member (supervisor / district admin)"}},{"name":"GET /psc/committee/staff — Find staff to add to the committee","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/committee/staff","host":["{{baseUrl}}"],"path":["psc","committee","staff"]},"description":"Find staff to add to the committee"}},{"name":"PATCH /psc/committee/{id} — Change a member’s role or title, or deactivate","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/committee/{id}","host":["{{baseUrl}}"],"path":["psc","committee","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a member’s role or title, or deactivate"}},{"name":"DELETE /psc/committee/{id} — Remove a committee member","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/psc/committee/{id}","host":["{{baseUrl}}"],"path":["psc","committee","{id}"]},"description":"Remove a committee member"}},{"name":"GET /psc/settings — Due-date rules, weekly sections, monthly deliverables and the rubric","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/settings","host":["{{baseUrl}}"],"path":["psc","settings"]},"description":"Due-date rules, weekly sections, monthly deliverables and the rubric"}},{"name":"PUT /psc/settings — Change due-date rules and the rubric title","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/settings","host":["{{baseUrl}}"],"path":["psc","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change due-date rules and the rubric title"}},{"name":"POST /psc/settings/{kind} — Add a weekly section, deliverable or rubric criterion","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/settings/{kind}","host":["{{baseUrl}}"],"path":["psc","settings","{kind}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a weekly section, deliverable or rubric criterion"}},{"name":"PATCH /psc/settings/{kind}/{id} — Edit, reorder or switch off a weekly section, deliverable or rubric criterion","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/settings/{kind}/{id}","host":["{{baseUrl}}"],"path":["psc","settings","{kind}","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit, reorder or switch off a weekly section, deliverable or rubric criterion"}},{"name":"DELETE /psc/settings/{kind}/{id} — Delete a weekly section, deliverable or rubric criterion (submissions keep their copy)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/psc/settings/{kind}/{id}","host":["{{baseUrl}}"],"path":["psc","settings","{kind}","{id}"]},"description":"Delete a weekly section, deliverable or rubric criterion (submissions keep their copy)"}},{"name":"POST /psc/settings/{kind}/restore — Restore the form’s own wording (district-added items kept)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/psc/settings/{kind}/restore","host":["{{baseUrl}}"],"path":["psc","settings","{kind}","restore"]},"description":"Restore the form’s own wording (district-added items kept)"}},{"name":"GET /psc/audit — Module audit trail (supervisor and district leaders)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/audit","host":["{{baseUrl}}"],"path":["psc","audit"]},"description":"Module audit trail (supervisor and district leaders)"}},{"name":"GET /psc/caseload — My caseload (counselor_assignments) with last contact, follow-ups, Xello and flags","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/caseload","host":["{{baseUrl}}"],"path":["psc","caseload"]},"description":"My caseload (counselor_assignments) with last contact, follow-ups, Xello and flags"}},{"name":"GET /psc/students — Student picker: my caseload first, then my school(s)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/students","host":["{{baseUrl}}"],"path":["psc","students"]},"description":"Student picker: my caseload first, then my school(s)"}},{"name":"GET /psc/students/{id} — One student’s counseling page","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/students/{id}","host":["{{baseUrl}}"],"path":["psc","students","{id}"]},"description":"One student’s counseling page"}},{"name":"GET /psc/contacts — My contact log (counselor)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/contacts","host":["{{baseUrl}}"],"path":["psc","contacts"]},"description":"My contact log (counselor)"}},{"name":"POST /psc/contacts — Log a contact (one student, a group, a class, a parent…)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/contacts","host":["{{baseUrl}}"],"path":["psc","contacts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Log a contact (one student, a group, a class, a parent…)"}},{"name":"GET /psc/contacts/summary — Counts and categories only (supervisor, leaders, principals; a counselor’s own totals)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/contacts/summary","host":["{{baseUrl}}"],"path":["psc","contacts","summary"]},"description":"Counts and categories only (supervisor, leaders, principals; a counselor’s own totals)"}},{"name":"GET /psc/contacts/shared — Contacts shared with the Supervisor of School Counseling","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/contacts/shared","host":["{{baseUrl}}"],"path":["psc","contacts","shared"]},"description":"Contacts shared with the Supervisor of School Counseling"}},{"name":"GET /psc/contacts/{id} — One contact (its writer, a successor counselor, or the supervisor when shared)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/contacts/{id}","host":["{{baseUrl}}"],"path":["psc","contacts","{id}"]},"description":"One contact (its writer, a successor counselor, or the supervisor when shared)"}},{"name":"PUT /psc/contacts/{id} — Change a contact (its writer); completes a draft","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/contacts/{id}","host":["{{baseUrl}}"],"path":["psc","contacts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a contact (its writer); completes a draft"}},{"name":"DELETE /psc/contacts/{id} — Delete a contact (its writer)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/psc/contacts/{id}","host":["{{baseUrl}}"],"path":["psc","contacts","{id}"]},"description":"Delete a contact (its writer)"}},{"name":"POST /psc/contacts/{id}/follow-up — Mark the follow-up done (or reopen it)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/contacts/{id}/follow-up","host":["{{baseUrl}}"],"path":["psc","contacts","{id}","follow-up"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark the follow-up done (or reopen it)"}},{"name":"GET /psc/conferences — My Genesis conference log","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/conferences","host":["{{baseUrl}}"],"path":["psc","conferences"]},"description":"My Genesis conference log"}},{"name":"POST /psc/conferences — Log a conference","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/conferences","host":["{{baseUrl}}"],"path":["psc","conferences"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Log a conference"}},{"name":"GET /psc/conferences/summary — Conferences by type, month and counselor (counts only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/conferences/summary","host":["{{baseUrl}}"],"path":["psc","conferences","summary"]},"description":"Conferences by type, month and counselor (counts only)"}},{"name":"GET /psc/conferences/shared — Conferences shared with the Supervisor of School Counseling","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/conferences/shared","host":["{{baseUrl}}"],"path":["psc","conferences","shared"]},"description":"Conferences shared with the Supervisor of School Counseling"}},{"name":"GET /psc/conferences/{id} — One conference with its documents","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/conferences/{id}","host":["{{baseUrl}}"],"path":["psc","conferences","{id}"]},"description":"One conference with its documents"}},{"name":"PUT /psc/conferences/{id} — Change a conference (its writer); completes a draft","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/conferences/{id}","host":["{{baseUrl}}"],"path":["psc","conferences","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a conference (its writer); completes a draft"}},{"name":"DELETE /psc/conferences/{id} — Delete a conference (its writer)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/psc/conferences/{id}","host":["{{baseUrl}}"],"path":["psc","conferences","{id}"]},"description":"Delete a conference (its writer)"}},{"name":"POST /psc/conferences/{id}/follow-up — Mark the follow-up done (or reopen it)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/conferences/{id}/follow-up","host":["{{baseUrl}}"],"path":["psc","conferences","{id}","follow-up"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark the follow-up done (or reopen it)"}},{"name":"GET /psc/team-meetings — ASCA / Building Team and committee meetings I may see","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/team-meetings","host":["{{baseUrl}}"],"path":["psc","team-meetings"]},"description":"ASCA / Building Team and committee meetings I may see"}},{"name":"POST /psc/team-meetings — Record or schedule a meeting","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/team-meetings","host":["{{baseUrl}}"],"path":["psc","team-meetings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record or schedule a meeting"}},{"name":"GET /psc/team-meetings/weekly — Weekly ASCA meeting per building, last weeks","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/team-meetings/weekly","host":["{{baseUrl}}"],"path":["psc","team-meetings","weekly"]},"description":"Weekly ASCA meeting per building, last weeks"}},{"name":"GET /psc/team-meetings/staff — A building’s team (attendees and action-item owners)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/team-meetings/staff","host":["{{baseUrl}}"],"path":["psc","team-meetings","staff"]},"description":"A building’s team (attendees and action-item owners)"}},{"name":"GET /psc/team-meetings/{id} — One meeting with attendees, notes, decisions and action items","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/team-meetings/{id}","host":["{{baseUrl}}"],"path":["psc","team-meetings","{id}"]},"description":"One meeting with attendees, notes, decisions and action items"}},{"name":"PUT /psc/team-meetings/{id} — Update a meeting","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/team-meetings/{id}","host":["{{baseUrl}}"],"path":["psc","team-meetings","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a meeting"}},{"name":"DELETE /psc/team-meetings/{id} — Delete a meeting","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/psc/team-meetings/{id}","host":["{{baseUrl}}"],"path":["psc","team-meetings","{id}"]},"description":"Delete a meeting"}},{"name":"POST /psc/team-meetings/{id}/actions — Add an action item (it goes onto its owner’s tasks)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/team-meetings/{id}/actions","host":["{{baseUrl}}"],"path":["psc","team-meetings","{id}","actions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an action item (it goes onto its owner’s tasks)"}},{"name":"PATCH /psc/action-items/{id} — Update an action item (organisers; owners may change status and notes)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/action-items/{id}","host":["{{baseUrl}}"],"path":["psc","action-items","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update an action item (organisers; owners may change status and notes)"}},{"name":"DELETE /psc/action-items/{id} — Remove an action item","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/psc/action-items/{id}","host":["{{baseUrl}}"],"path":["psc","action-items","{id}"]},"description":"Remove an action item"}},{"name":"GET /psc/xello/students — Students and their Xello progress this school year","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/xello/students","host":["{{baseUrl}}"],"path":["psc","xello","students"]},"description":"Students and their Xello progress this school year"}},{"name":"GET /psc/xello/completion — Xello completion by grade and school (counts)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/xello/completion","host":["{{baseUrl}}"],"path":["psc","xello","completion"]},"description":"Xello completion by grade and school (counts)"}},{"name":"PUT /psc/xello/students/{id} — Update one student’s Xello progress","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/xello/students/{id}","host":["{{baseUrl}}"],"path":["psc","xello","students","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update one student’s Xello progress"}},{"name":"POST /psc/xello/import/preview — Preview a Xello CSV with a column mapping (guessed when not given); writes nothing","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/xello/import/preview","host":["{{baseUrl}}"],"path":["psc","xello","import","preview"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Preview a Xello CSV with a column mapping (guessed when not given); writes nothing"}},{"name":"POST /psc/xello/import — Apply a Xello CSV with the confirmed mapping","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/xello/import","host":["{{baseUrl}}"],"path":["psc","xello","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Apply a Xello CSV with the confirmed mapping"}},{"name":"GET /psc/xello/imports — Recent Xello imports","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/xello/imports","host":["{{baseUrl}}"],"path":["psc","xello","imports"]},"description":"Recent Xello imports"}},{"name":"GET /psc/xello/requirements — Xello requirements by grade","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/xello/requirements","host":["{{baseUrl}}"],"path":["psc","xello","requirements"]},"description":"Xello requirements by grade"}},{"name":"PUT /psc/xello/requirements — Set Xello requirements by grade (supervisor or district administrator)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/xello/requirements","host":["{{baseUrl}}"],"path":["psc","xello","requirements"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set Xello requirements by grade (supervisor or district administrator)"}},{"name":"GET /psc/tasks — Everything waiting on me in the module, plus my own tasks (scope=department: the whole department’s)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/tasks","host":["{{baseUrl}}"],"path":["psc","tasks"]},"description":"Everything waiting on me in the module, plus my own tasks (scope=department: the whole department’s)"}},{"name":"POST /psc/tasks — Add a task for myself, or put one on a counsellor (ownerUserId; supervisor, district administrator or superintendent only)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/tasks","host":["{{baseUrl}}"],"path":["psc","tasks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a task for myself, or put one on a counsellor (ownerUserId; supervisor, district administrator or superintendent only)"}},{"name":"PATCH /psc/tasks/{id} — Change or complete my task","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/tasks/{id}","host":["{{baseUrl}}"],"path":["psc","tasks","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change or complete my task"}},{"name":"DELETE /psc/tasks/{id} — Delete my task","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/psc/tasks/{id}","host":["{{baseUrl}}"],"path":["psc","tasks","{id}"]},"description":"Delete my task"}},{"name":"GET /psc/weekly/suggestions — What my log says about a week, per check-in section (suggestions only; nothing is answered or submitted)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/weekly/suggestions","host":["{{baseUrl}}"],"path":["psc","weekly","suggestions"]},"description":"What my log says about a week, per check-in section (suggestions only; nothing is answered or submitted)"}},{"name":"GET /psc/reports — The reports I may run, and the monthly reports I can attach them to","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/reports","host":["{{baseUrl}}"],"path":["psc","reports"]},"description":"The reports I may run, and the monthly reports I can attach them to"}},{"name":"GET /psc/reports/{key} — Run a report (JSON)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/reports/{key}","host":["{{baseUrl}}"],"path":["psc","reports","{key}"]},"description":"Run a report (JSON)"}},{"name":"GET /psc/reports/{key}/csv — Run a report as CSV","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/reports/{key}/csv","host":["{{baseUrl}}"],"path":["psc","reports","{key}","csv"]},"description":"Run a report as CSV"}},{"name":"POST /psc/reports/{key}/attach — Attach this report (frozen, counts only) to one of my monthly reports as evidence","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/reports/{key}/attach","host":["{{baseUrl}}"],"path":["psc","reports","{key}","attach"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Attach this report (frozen, counts only) to one of my monthly reports as evidence"}},{"name":"GET /psc/monthly/{id}/evidence — Reports attached to a monthly report","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/monthly/{id}/evidence","host":["{{baseUrl}}"],"path":["psc","monthly","{id}","evidence"]},"description":"Reports attached to a monthly report"}},{"name":"GET /psc/report-evidence/{id} — One attached report, as it was when attached","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/report-evidence/{id}","host":["{{baseUrl}}"],"path":["psc","report-evidence","{id}"]},"description":"One attached report, as it was when attached"}},{"name":"DELETE /psc/report-evidence/{id} — Remove an attached report (while the monthly report is editable)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/psc/report-evidence/{id}","host":["{{baseUrl}}"],"path":["psc","report-evidence","{id}"]},"description":"Remove an attached report (while the monthly report is editable)"}},{"name":"GET /psc/video/status — Is Omni Forge Video on (module `video`) and connected?","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/video/status","host":["{{baseUrl}}"],"path":["psc","video","status"]},"description":"Is Omni Forge Video on (module `video`) and connected?"}},{"name":"GET /psc/video — My counseling video meetings (scope=department: the department’s)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/video","host":["{{baseUrl}}"],"path":["psc","video"]},"description":"My counseling video meetings (scope=department: the department’s)"}},{"name":"POST /psc/video — Start now or schedule a video meeting from a student, conference, team meeting, Early Graduation review or the committee; creates the log entry to complete","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/video","host":["{{baseUrl}}"],"path":["psc","video"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start now or schedule a video meeting from a student, conference, team meeting, Early Graduation review or the committee; creates the log entry to complete"}},{"name":"GET /psc/video/{id} — One meeting: people, guest links, the record it created","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/video/{id}","host":["{{baseUrl}}"],"path":["psc","video","{id}"]},"description":"One meeting: people, guest links, the record it created"}},{"name":"POST /psc/video/{id}/guests — Invite a guardian or a guest (they get their own link)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/video/{id}/guests","host":["{{baseUrl}}"],"path":["psc","video","{id}","guests"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Invite a guardian or a guest (they get their own link)"}},{"name":"DELETE /psc/video/{id}/guests/{participantId} — Remove a guest (their link stops working)","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/psc/video/{id}/guests/{participantId}","host":["{{baseUrl}}"],"path":["psc","video","{id}","guests","{participantId}"]},"description":"Remove a guest (their link stops working)"}},{"name":"POST /psc/video/{id}/cancel — Cancel a scheduled meeting, or end a live one","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/psc/video/{id}/cancel","host":["{{baseUrl}}"],"path":["psc","video","{id}","cancel"]},"description":"Cancel a scheduled meeting, or end a live one"}},{"name":"GET /psc/whole-child/form — The guided whole-child conference: prompts, the district’s required areas and the student’s DEP figures","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/whole-child/form","host":["{{baseUrl}}"],"path":["psc","whole-child","form"]},"description":"The guided whole-child conference: prompts, the district’s required areas and the student’s DEP figures"}},{"name":"GET /psc/whole-child/facts/{id} — One student’s whole-child figures from DEP (attendance, academics, behaviour, Xello, plan flags)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/whole-child/facts/{id}","host":["{{baseUrl}}"],"path":["psc","whole-child","facts","{id}"]},"description":"One student’s whole-child figures from DEP (attendance, academics, behaviour, Xello, plan flags)"}},{"name":"POST /psc/whole-child — Document a whole-child conference (an unresolved concern creates its follow-up automatically)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/whole-child","host":["{{baseUrl}}"],"path":["psc","whole-child"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Document a whole-child conference (an unresolved concern creates its follow-up automatically)"}},{"name":"PUT /psc/whole-child/{id} — Change a whole-child conference (its writer)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/whole-child/{id}","host":["{{baseUrl}}"],"path":["psc","whole-child","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a whole-child conference (its writer)"}},{"name":"GET /psc/whole-child/summary — Whole-child documentation in aggregate (counts and categories only)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/whole-child/summary","host":["{{baseUrl}}"],"path":["psc","whole-child","summary"]},"description":"Whole-child documentation in aggregate (counts and categories only)"}},{"name":"GET /psc/conference-follow-ups — My conference follow-ups (open and recently closed)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/conference-follow-ups","host":["{{baseUrl}}"],"path":["psc","conference-follow-ups"]},"description":"My conference follow-ups (open and recently closed)"}},{"name":"GET /psc/conferences/{id}/follow-ups — The follow-ups on one conference","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/conferences/{id}/follow-ups","host":["{{baseUrl}}"],"path":["psc","conferences","{id}","follow-ups"]},"description":"The follow-ups on one conference"}},{"name":"POST /psc/conference-follow-ups/{id} — Close a follow-up with its outcome (or reopen it)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/conference-follow-ups/{id}","host":["{{baseUrl}}"],"path":["psc","conference-follow-ups","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Close a follow-up with its outcome (or reopen it)"}},{"name":"GET /psc/cross-checks — My weeks compared with my own records, and the disagreements to explain","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/cross-checks","host":["{{baseUrl}}"],"path":["psc","cross-checks"]},"description":"My weeks compared with my own records, and the disagreements to explain"}},{"name":"GET /psc/weekly/{id}/cross-check — One check-in’s cross-check, with every attempt","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/weekly/{id}/cross-check","host":["{{baseUrl}}"],"path":["psc","weekly","{id}","cross-check"]},"description":"One check-in’s cross-check, with every attempt"}},{"name":"POST /psc/discrepancies/{id}/explain — Explain a disagreement (the counsellor it is about)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/discrepancies/{id}/explain","host":["{{baseUrl}}"],"path":["psc","discrepancies","{id}","explain"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Explain a disagreement (the counsellor it is about)"}},{"name":"POST /psc/discrepancies/{id}/review — Accept or decline an explanation (the supervisor)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/discrepancies/{id}/review","host":["{{baseUrl}}"],"path":["psc","discrepancies","{id}","review"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Accept or decline an explanation (the supervisor)"}},{"name":"GET /psc/data-quality — The supervisor’s scorecard per counsellor for a reporting period","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/data-quality","host":["{{baseUrl}}"],"path":["psc","data-quality"]},"description":"The supervisor’s scorecard per counsellor for a reporting period"}},{"name":"GET /psc/data-quality/queue — Open attestation discrepancies across the counsellors you may see","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/data-quality/queue","host":["{{baseUrl}}"],"path":["psc","data-quality","queue"]},"description":"Open attestation discrepancies across the counsellors you may see"}},{"name":"GET /psc/data-quality/{id} — One counsellor’s scorecard (their own, or leadership’s view of it)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/data-quality/{id}","host":["{{baseUrl}}"],"path":["psc","data-quality","{id}"]},"description":"One counsellor’s scorecard (their own, or leadership’s view of it)"}},{"name":"GET /psc/weekly/prefill — The week as the system would fill it in (nothing is saved)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/weekly/prefill","host":["{{baseUrl}}"],"path":["psc","weekly","prefill"]},"description":"The week as the system would fill it in (nothing is saved)"}},{"name":"POST /psc/weekly/prefill — Write the generated answers as a draft for the counsellor to review and attest","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/weekly/prefill","host":["{{baseUrl}}"],"path":["psc","weekly","prefill"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Write the generated answers as a draft for the counsellor to review and attest"}},{"name":"GET /psc/use-of-time — Use-of-time dashboard: this period, the trend, by counsellor and school, against the district’s targets","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/use-of-time","host":["{{baseUrl}}"],"path":["psc","use-of-time"]},"description":"Use-of-time dashboard: this period, the trend, by counsellor and school, against the district’s targets"}},{"name":"GET /psc/use-of-time/mine — My five-day studies by quarter","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/use-of-time/mine","host":["{{baseUrl}}"],"path":["psc","use-of-time","mine"]},"description":"My five-day studies by quarter"}},{"name":"POST /psc/use-of-time/studies — Start a five-day study for a quarter","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/use-of-time/studies","host":["{{baseUrl}}"],"path":["psc","use-of-time","studies"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a five-day study for a quarter"}},{"name":"GET /psc/use-of-time/studies/{id} — One study with its days, totals, percentages and comparison","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/use-of-time/studies/{id}","host":["{{baseUrl}}"],"path":["psc","use-of-time","studies","{id}"]},"description":"One study with its days, totals, percentages and comparison"}},{"name":"POST /psc/use-of-time/studies/{id}/entries — Record minutes on one activity on one day","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/use-of-time/studies/{id}/entries","host":["{{baseUrl}}"],"path":["psc","use-of-time","studies","{id}","entries"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record minutes on one activity on one day"}},{"name":"POST /psc/use-of-time/studies/{id}/submit — Submit a completed five-day study","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/psc/use-of-time/studies/{id}/submit","host":["{{baseUrl}}"],"path":["psc","use-of-time","studies","{id}","submit"]},"description":"Submit a completed five-day study"}},{"name":"POST /psc/use-of-time/studies/{id}/reopen — Reopen a submitted study (the supervisor)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/psc/use-of-time/studies/{id}/reopen","host":["{{baseUrl}}"],"path":["psc","use-of-time","studies","{id}","reopen"]},"description":"Reopen a submitted study (the supervisor)"}},{"name":"GET /psc/goals — Department annual goals and closing-the-gap plans, with progress","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/goals","host":["{{baseUrl}}"],"path":["psc","goals"]},"description":"Department annual goals and closing-the-gap plans, with progress"}},{"name":"POST /psc/goals — Add a goal or closing-the-gap plan","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/goals","host":["{{baseUrl}}"],"path":["psc","goals"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a goal or closing-the-gap plan"}},{"name":"PUT /psc/goals/{id} — Change a goal","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/goals/{id}","host":["{{baseUrl}}"],"path":["psc","goals","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a goal"}},{"name":"DELETE /psc/goals/{id} — Remove a goal","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/psc/goals/{id}","host":["{{baseUrl}}"],"path":["psc","goals","{id}"]},"description":"Remove a goal"}},{"name":"POST /psc/goals/{id}/progress — Record progress against a goal","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/goals/{id}/progress","host":["{{baseUrl}}"],"path":["psc","goals","{id}","progress"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record progress against a goal"}},{"name":"GET /psc/early-warning — Flagged students, with who is responsible and what has been done","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/early-warning","host":["{{baseUrl}}"],"path":["psc","early-warning"]},"description":"Flagged students, with who is responsible and what has been done"}},{"name":"POST /psc/early-warning/run — Run the indicators now (dry run available)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/early-warning/run","host":["{{baseUrl}}"],"path":["psc","early-warning","run"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Run the indicators now (dry run available)"}},{"name":"GET /psc/early-warning/indicators — The district’s indicator thresholds (and whether notifying is wired up)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/early-warning/indicators","host":["{{baseUrl}}"],"path":["psc","early-warning","indicators"]},"description":"The district’s indicator thresholds (and whether notifying is wired up)"}},{"name":"PUT /psc/early-warning/indicators/{id} — Set an indicator’s threshold, comparator, grades, severity or switch it off","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/early-warning/indicators/{id}","host":["{{baseUrl}}"],"path":["psc","early-warning","indicators","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set an indicator’s threshold, comparator, grades, severity or switch it off"}},{"name":"GET /psc/early-warning/outcomes — Did things improve? Closed flags with their measured outcome","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/early-warning/outcomes","host":["{{baseUrl}}"],"path":["psc","early-warning","outcomes"]},"description":"Did things improve? Closed flags with their measured outcome"}},{"name":"GET /psc/early-warning/{id} — One flag: the figure, the rule, the plan, the contacts and the outcome","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/early-warning/{id}","host":["{{baseUrl}}"],"path":["psc","early-warning","{id}"]},"description":"One flag: the figure, the rule, the plan, the contacts and the outcome"}},{"name":"PUT /psc/early-warning/{id} — Assign responsibility, set the timeline, record the plan, close with an outcome","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/early-warning/{id}","host":["{{baseUrl}}"],"path":["psc","early-warning","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assign responsibility, set the timeline, record the plan, close with an outcome"}},{"name":"POST /psc/early-warning/{id}/actions — Record a contact attempted or completed, a referral, a plan or a progress check","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/early-warning/{id}/actions","host":["{{baseUrl}}"],"path":["psc","early-warning","{id}","actions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record a contact attempted or completed, a referral, a plan or a progress check"}},{"name":"GET /psc/graduation — Graduation readiness: credits, requirements, FAFSA, Xello, pathway and who needs immediate follow-up","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/graduation","host":["{{baseUrl}}"],"path":["psc","graduation"]},"description":"Graduation readiness: credits, requirements, FAFSA, Xello, pathway and who needs immediate follow-up"}},{"name":"GET /psc/graduation/{id} — One student’s senior checklist (DEP items recalculated each time)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/graduation/{id}","host":["{{baseUrl}}"],"path":["psc","graduation","{id}"]},"description":"One student’s senior checklist (DEP items recalculated each time)"}},{"name":"PUT /psc/graduation/{id} — Record the counsellor’s own checklist items, pathway and planned date","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/graduation/{id}","host":["{{baseUrl}}"],"path":["psc","graduation","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record the counsellor’s own checklist items, pathway and planned date"}},{"name":"GET /psc/exits — Students DEP records as having left, with the exit interview where one exists","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/exits","host":["{{baseUrl}}"],"path":["psc","exits"]},"description":"Students DEP records as having left, with the exit interview where one exists"}},{"name":"POST /psc/exits — Open the exit interview for a student who has left","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/exits","host":["{{baseUrl}}"],"path":["psc","exits"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Open the exit interview for a student who has left"}},{"name":"GET /psc/exits/patterns — Why students are leaving: reasons, buildings, grades, months, and how much is documented","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/exits/patterns","host":["{{baseUrl}}"],"path":["psc","exits","patterns"]},"description":"Why students are leaving: reasons, buildings, grades, months, and how much is documented"}},{"name":"GET /psc/exits/{id} — One exit interview and withdrawal checklist","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/exits/{id}","host":["{{baseUrl}}"],"path":["psc","exits","{id}"]},"description":"One exit interview and withdrawal checklist"}},{"name":"PUT /psc/exits/{id} — Record the conversation, the destination, the concerns and the checklist","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/exits/{id}","host":["{{baseUrl}}"],"path":["psc","exits","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record the conversation, the destination, the concerns and the checklist"}},{"name":"GET /psc/executive — The Director’s dashboard: only what needs attention, filterable by counsellor, school, grade, period and initiative","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/executive","host":["{{baseUrl}}"],"path":["psc","executive"]},"description":"The Director’s dashboard: only what needs attention, filterable by counsellor, school, grade, period and initiative"}},{"name":"GET /psc/executive/weekly — The weekly executive summary (printable)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/executive/weekly","host":["{{baseUrl}}"],"path":["psc","executive","weekly"]},"description":"The weekly executive summary (printable)"}},{"name":"GET /psc/workload — Caseloads, ratios, buildings served and who is covering","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/workload","host":["{{baseUrl}}"],"path":["psc","workload"]},"description":"Caseloads, ratios, buildings served and who is covering"}},{"name":"GET /psc/workload/{id} — One counsellor’s caseload by grade and building","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/workload/{id}","host":["{{baseUrl}}"],"path":["psc","workload","{id}"]},"description":"One counsellor’s caseload by grade and building"}},{"name":"POST /psc/workload/coverage — Record cover for an absent counsellor","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/workload/coverage","host":["{{baseUrl}}"],"path":["psc","workload","coverage"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record cover for an absent counsellor"}},{"name":"PUT /psc/workload/coverage/{id} — Change a cover arrangement","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/workload/coverage/{id}","host":["{{baseUrl}}"],"path":["psc","workload","coverage","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a cover arrangement"}},{"name":"POST /psc/workload/coverage/{id}/end — End a cover arrangement today","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/psc/workload/coverage/{id}/end","host":["{{baseUrl}}"],"path":["psc","workload","coverage","{id}","end"]},"description":"End a cover arrangement today"}},{"name":"GET /psc/calendar — The department’s annual calendar and the state of each month","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/calendar","host":["{{baseUrl}}"],"path":["psc","calendar"]},"description":"The department’s annual calendar and the state of each month"}},{"name":"POST /psc/calendar/items — Add a deliverable to the annual calendar","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/calendar/items","host":["{{baseUrl}}"],"path":["psc","calendar","items"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a deliverable to the annual calendar"}},{"name":"PUT /psc/calendar/items/{id} — Change a calendar deliverable","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/calendar/items/{id}","host":["{{baseUrl}}"],"path":["psc","calendar","items","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change a calendar deliverable"}},{"name":"DELETE /psc/calendar/items/{id} — Remove a calendar deliverable","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/psc/calendar/items/{id}","host":["{{baseUrl}}"],"path":["psc","calendar","items","{id}"]},"description":"Remove a calendar deliverable"}},{"name":"GET /psc/calendar/months/{id} — One month’s generated deliverables (id = YYYY-MM)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/calendar/months/{id}","host":["{{baseUrl}}"],"path":["psc","calendar","months","{id}"]},"description":"One month’s generated deliverables (id = YYYY-MM)"}},{"name":"PUT /psc/calendar/months/{id} — Adjust a generated month (add, drop or annotate)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/calendar/months/{id}","host":["{{baseUrl}}"],"path":["psc","calendar","months","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Adjust a generated month (add, drop or annotate)"}},{"name":"POST /psc/calendar/months/{id}/generate — Generate a month from the annual calendar","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/calendar/months/{id}/generate","host":["{{baseUrl}}"],"path":["psc","calendar","months","{id}","generate"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generate a month from the annual calendar"}},{"name":"POST /psc/calendar/months/{id}/publish — Publish a month to the counsellors it applies to","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/psc/calendar/months/{id}/publish","host":["{{baseUrl}}"],"path":["psc","calendar","months","{id}","publish"]},"description":"Publish a month to the counsellors it applies to"}},{"name":"GET /psc/calendar/mine/{id} — The published deliverables for me in one month (id = YYYY-MM)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/calendar/mine/{id}","host":["{{baseUrl}}"],"path":["psc","calendar","mine","{id}"]},"description":"The published deliverables for me in one month (id = YYYY-MM)"}},{"name":"GET /psc/settings/phase3 — Required whole-child areas, ASCA targets, the recommended caseload and the early-warning switches","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/psc/settings/phase3","host":["{{baseUrl}}"],"path":["psc","settings","phase3"]},"description":"Required whole-child areas, ASCA targets, the recommended caseload and the early-warning switches"}},{"name":"PUT /psc/settings/phase3 — Change the phase 3 configuration (supervisor or district administrator)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/psc/settings/phase3","host":["{{baseUrl}}"],"path":["psc","settings","phase3"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change the phase 3 configuration (supervisor or district administrator)"}}]},{"name":"Public Information Office","item":[{"name":"GET /pio/me — My part in the Public Information Office and the sidebar menu","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/me","host":["{{baseUrl}}"],"path":["pio","me"]},"description":"My part in the Public Information Office and the sidebar menu"}},{"name":"GET /pio/home — Home: decisions waiting, what is going out, what came in, this month","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/home","host":["{{baseUrl}}"],"path":["pio","home"]},"description":"Home: decisions waiting, what is going out, what came in, this month"}},{"name":"GET /pio/schools — District schools","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/schools","host":["{{baseUrl}}"],"path":["pio","schools"]},"description":"District schools"}},{"name":"GET /pio/staff — Staff to assign work to","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/staff","host":["{{baseUrl}}"],"path":["pio","staff"]},"description":"Staff to assign work to"}},{"name":"GET /pio/people — Find guardians, staff or students by name (lists, photo tagging)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/people","host":["{{baseUrl}}"],"path":["pio","people"]},"description":"Find guardians, staff or students by name (lists, photo tagging)"}},{"name":"GET /pio/sections — Classes at a school (class audiences)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/sections","host":["{{baseUrl}}"],"path":["pio","sections"]},"description":"Classes at a school (class audiences)"}},{"name":"GET /pio/grades — Grade levels with enrolled students","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/grades","host":["{{baseUrl}}"],"path":["pio","grades"]},"description":"Grade levels with enrolled students"}},{"name":"GET /pio/posts — Posts (filter by status, kind, scope, school, campaign, dates, text)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/posts","host":["{{baseUrl}}"],"path":["pio","posts"]},"description":"Posts (filter by status, kind, scope, school, campaign, dates, text)"}},{"name":"POST /pio/posts — Start a post (draft)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/posts","host":["{{baseUrl}}"],"path":["pio","posts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a post (draft)"}},{"name":"GET /pio/posts/{id} — A post with its approvals, delivery and read statistics","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/posts/{id}","host":["{{baseUrl}}"],"path":["pio","posts","{id}"]},"description":"A post with its approvals, delivery and read statistics"}},{"name":"PATCH /pio/posts/{id} — Edit a draft / returned post (one waiting for approval goes back to draft)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/posts/{id}","host":["{{baseUrl}}"],"path":["pio","posts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a draft / returned post (one waiting for approval goes back to draft)"}},{"name":"DELETE /pio/posts/{id} — Remove a draft, returned or cancelled post","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/pio/posts/{id}","host":["{{baseUrl}}"],"path":["pio","posts","{id}"]},"description":"Remove a draft, returned or cancelled post"}},{"name":"POST /pio/posts/preview-audience — Who a post would reach (counts by kind, language, address coverage)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/posts/preview-audience","host":["{{baseUrl}}"],"path":["pio","posts","preview-audience"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Who a post would reach (counts by kind, language, address coverage)"}},{"name":"POST /pio/posts/{id}/submit — Send for approval, schedule, or send now (as the approval rules allow)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/posts/{id}/submit","host":["{{baseUrl}}"],"path":["pio","posts","{id}","submit"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send for approval, schedule, or send now (as the approval rules allow)"}},{"name":"POST /pio/posts/{id}/approve — Approve (the second person for district-wide urgent alerts)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/posts/{id}/approve","host":["{{baseUrl}}"],"path":["pio","posts","{id}","approve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Approve (the second person for district-wide urgent alerts)"}},{"name":"POST /pio/posts/{id}/reject — Return to the author with a note","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/posts/{id}/reject","host":["{{baseUrl}}"],"path":["pio","posts","{id}","reject"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Return to the author with a note"}},{"name":"POST /pio/posts/{id}/cancel — Cancel a post that has not gone out","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/posts/{id}/cancel","host":["{{baseUrl}}"],"path":["pio","posts","{id}","cancel"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Cancel a post that has not gone out"}},{"name":"POST /pio/posts/{id}/send-now — Send a scheduled post now","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/pio/posts/{id}/send-now","host":["{{baseUrl}}"],"path":["pio","posts","{id}","send-now"]},"description":"Send a scheduled post now"}},{"name":"POST /pio/posts/{id}/duplicate — Copy a post into a new draft","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/pio/posts/{id}/duplicate","host":["{{baseUrl}}"],"path":["pio","posts","{id}","duplicate"]},"description":"Copy a post into a new draft"}},{"name":"GET /pio/posts/{id}/recipients — Recipients and their channel outcomes (filter: unseen, seen, failed, unreachable)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/posts/{id}/recipients","host":["{{baseUrl}}"],"path":["pio","posts","{id}","recipients"]},"description":"Recipients and their channel outcomes (filter: unseen, seen, failed, unreachable)"}},{"name":"POST /pio/posts/{id}/follow-up — Draft a follow-up to everyone who has not seen it","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/posts/{id}/follow-up","host":["{{baseUrl}}"],"path":["pio","posts","{id}","follow-up"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Draft a follow-up to everyone who has not seen it"}},{"name":"GET /pio/lists — Audience lists","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/lists","host":["{{baseUrl}}"],"path":["pio","lists"]},"description":"Audience lists"}},{"name":"POST /pio/lists — New list","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/lists","host":["{{baseUrl}}"],"path":["pio","lists"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"New list"}},{"name":"GET /pio/lists/{id} — A list and its members","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/lists/{id}","host":["{{baseUrl}}"],"path":["pio","lists","{id}"]},"description":"A list and its members"}},{"name":"PATCH /pio/lists/{id} — Rename / describe a list","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/lists/{id}","host":["{{baseUrl}}"],"path":["pio","lists","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Rename / describe a list"}},{"name":"DELETE /pio/lists/{id} — Remove a list","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/pio/lists/{id}","host":["{{baseUrl}}"],"path":["pio","lists","{id}"]},"description":"Remove a list"}},{"name":"POST /pio/lists/{id}/members — Add DEP people and / or outside contacts","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/lists/{id}/members","host":["{{baseUrl}}"],"path":["pio","lists","{id}","members"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add DEP people and / or outside contacts"}},{"name":"DELETE /pio/lists/{id}/members/{memberId} — Remove a member","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/pio/lists/{id}/members/{memberId}","host":["{{baseUrl}}"],"path":["pio","lists","{id}","members","{memberId}"]},"description":"Remove a member"}},{"name":"GET /pio/templates — Template library (regular, urgent, crisis, social, press, follow-up)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/templates","host":["{{baseUrl}}"],"path":["pio","templates"]},"description":"Template library (regular, urgent, crisis, social, press, follow-up)"}},{"name":"POST /pio/templates — New template","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/templates","host":["{{baseUrl}}"],"path":["pio","templates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"New template"}},{"name":"PATCH /pio/templates/{id} — Edit a template (rewording a pre-approved one needs approval again)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/templates/{id}","host":["{{baseUrl}}"],"path":["pio","templates","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a template (rewording a pre-approved one needs approval again)"}},{"name":"DELETE /pio/templates/{id} — Remove a template","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/pio/templates/{id}","host":["{{baseUrl}}"],"path":["pio","templates","{id}"]},"description":"Remove a template"}},{"name":"POST /pio/templates/{id}/approve — Pre-approve (or withdraw approval of) a template","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/templates/{id}/approve","host":["{{baseUrl}}"],"path":["pio","templates","{id}","approve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Pre-approve (or withdraw approval of) a template"}},{"name":"GET /pio/settings — Module settings, delivery state and social network setup","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/settings","host":["{{baseUrl}}"],"path":["pio","settings"]},"description":"Module settings, delivery state and social network setup"}},{"name":"PATCH /pio/settings — Change settings (director)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/settings","host":["{{baseUrl}}"],"path":["pio","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change settings (director)"}},{"name":"GET /pio/parentsquare-map — What ParentSquare did and where it lives in DEP","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/parentsquare-map","host":["{{baseUrl}}"],"path":["pio","parentsquare-map"]},"description":"What ParentSquare did and where it lives in DEP"}},{"name":"GET /pio/social/accounts — Connected social accounts and what each network needs","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/social/accounts","host":["{{baseUrl}}"],"path":["pio","social","accounts"]},"description":"Connected social accounts and what each network needs"}},{"name":"POST /pio/social/accounts — Add an account (not connected until signed in)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/social/accounts","host":["{{baseUrl}}"],"path":["pio","social","accounts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an account (not connected until signed in)"}},{"name":"PATCH /pio/social/accounts/{id} — Edit an account","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/social/accounts/{id}","host":["{{baseUrl}}"],"path":["pio","social","accounts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an account"}},{"name":"DELETE /pio/social/accounts/{id} — Remove an account","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/pio/social/accounts/{id}","host":["{{baseUrl}}"],"path":["pio","social","accounts","{id}"]},"description":"Remove an account"}},{"name":"POST /pio/social/accounts/{id}/connect — Start \"Connect account\" (the network sign-in URL, or why it cannot)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/pio/social/accounts/{id}/connect","host":["{{baseUrl}}"],"path":["pio","social","accounts","{id}","connect"]},"description":"Start \"Connect account\" (the network sign-in URL, or why it cannot)"}},{"name":"POST /pio/social/accounts/{id}/disconnect — Disconnect (forget the tokens)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/pio/social/accounts/{id}/disconnect","host":["{{baseUrl}}"],"path":["pio","social","accounts","{id}","disconnect"]},"description":"Disconnect (forget the tokens)"}},{"name":"GET /pio/social/posts — Social posts (per account version)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/social/posts","host":["{{baseUrl}}"],"path":["pio","social","posts"]},"description":"Social posts (per account version)"}},{"name":"POST /pio/social/groups — Compose a cross-post (submit=true to schedule / send for approval)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/social/groups","host":["{{baseUrl}}"],"path":["pio","social","groups"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Compose a cross-post (submit=true to schedule / send for approval)"}},{"name":"GET /pio/social/groups/{id} — A cross-post with its per-network versions, checks and results","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/social/groups/{id}","host":["{{baseUrl}}"],"path":["pio","social","groups","{id}"]},"description":"A cross-post with its per-network versions, checks and results"}},{"name":"PUT /pio/social/groups/{id} — Edit a cross-post","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/social/groups/{id}","host":["{{baseUrl}}"],"path":["pio","social","groups","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a cross-post"}},{"name":"POST /pio/social/groups/{id}/approve — Approve a cross-post","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/pio/social/groups/{id}/approve","host":["{{baseUrl}}"],"path":["pio","social","groups","{id}","approve"]},"description":"Approve a cross-post"}},{"name":"POST /pio/social/groups/{id}/reject — Return a cross-post","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/social/groups/{id}/reject","host":["{{baseUrl}}"],"path":["pio","social","groups","{id}","reject"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Return a cross-post"}},{"name":"POST /pio/social/groups/{id}/cancel — Cancel what has not been published","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/pio/social/groups/{id}/cancel","host":["{{baseUrl}}"],"path":["pio","social","groups","{id}","cancel"]},"description":"Cancel what has not been published"}},{"name":"POST /pio/social/posts/{id}/published — Mark a version published by hand (with its link)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/social/posts/{id}/published","host":["{{baseUrl}}"],"path":["pio","social","posts","{id}","published"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark a version published by hand (with its link)"}},{"name":"POST /pio/social/posts/{id}/metrics — Record results by hand","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/social/posts/{id}/metrics","host":["{{baseUrl}}"],"path":["pio","social","posts","{id}","metrics"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Record results by hand"}},{"name":"GET /pio/social/credentials — This district’s social network app credentials (never the secrets)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/social/credentials","host":["{{baseUrl}}"],"path":["pio","social","credentials"]},"description":"This district’s social network app credentials (never the secrets)"}},{"name":"PUT /pio/social/credentials/{appKey} — Save this district’s client id, replace its secret, or switch its pair on or off","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/social/credentials/{appKey}","host":["{{baseUrl}}"],"path":["pio","social","credentials","{appKey}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save this district’s client id, replace its secret, or switch its pair on or off"}},{"name":"DELETE /pio/social/credentials/{appKey} — Clear this district’s pair, so the app that serves every district takes over again","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/pio/social/credentials/{appKey}","host":["{{baseUrl}}"],"path":["pio","social","credentials","{appKey}"]},"description":"Clear this district’s pair, so the app that serves every district takes over again"}},{"name":"POST /pio/social/credentials/{appKey}/test — Check the pair against the network’s token endpoint (posts nothing)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/pio/social/credentials/{appKey}/test","host":["{{baseUrl}}"],"path":["pio","social","credentials","{appKey}","test"]},"description":"Check the pair against the network’s token endpoint (posts nothing)"}},{"name":"GET /pio/social/inbox — Comments, mentions and messages to monitor","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/social/inbox","host":["{{baseUrl}}"],"path":["pio","social","inbox"]},"description":"Comments, mentions and messages to monitor"}},{"name":"POST /pio/social/inbox — Log a comment or mention by hand","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/social/inbox","host":["{{baseUrl}}"],"path":["pio","social","inbox"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Log a comment or mention by hand"}},{"name":"PATCH /pio/social/inbox/{id} — Assign, note, reply or close an inbox item","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/social/inbox/{id}","host":["{{baseUrl}}"],"path":["pio","social","inbox","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Assign, note, reply or close an inbox item"}},{"name":"GET /pio/press — Press releases","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/press","host":["{{baseUrl}}"],"path":["pio","press"]},"description":"Press releases"}},{"name":"POST /pio/press — New press release","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/press","host":["{{baseUrl}}"],"path":["pio","press"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"New press release"}},{"name":"GET /pio/press/{id} — A press release","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/press/{id}","host":["{{baseUrl}}"],"path":["pio","press","{id}"]},"description":"A press release"}},{"name":"PATCH /pio/press/{id} — Edit a press release","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/press/{id}","host":["{{baseUrl}}"],"path":["pio","press","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a press release"}},{"name":"DELETE /pio/press/{id} — Remove a draft release","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/pio/press/{id}","host":["{{baseUrl}}"],"path":["pio","press","{id}"]},"description":"Remove a draft release"}},{"name":"POST /pio/press/{id}/{action} — submit | approve | reject | publish | archive | unarchive","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/press/{id}/{action}","host":["{{baseUrl}}"],"path":["pio","press","{id}","{action}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"submit | approve | reject | publish | archive | unarchive"}},{"name":"POST /pio/press/{id}/distribute — Send to media contacts (held while delivery is off)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/press/{id}/distribute","host":["{{baseUrl}}"],"path":["pio","press","{id}","distribute"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send to media contacts (held while delivery is off)"}},{"name":"GET /pio/media/contacts — Media contacts directory","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/media/contacts","host":["{{baseUrl}}"],"path":["pio","media","contacts"]},"description":"Media contacts directory"}},{"name":"POST /pio/media/contacts — Add a media contact","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/media/contacts","host":["{{baseUrl}}"],"path":["pio","media","contacts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a media contact"}},{"name":"PATCH /pio/media/contacts/{id} — Edit a media contact","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/media/contacts/{id}","host":["{{baseUrl}}"],"path":["pio","media","contacts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a media contact"}},{"name":"DELETE /pio/media/contacts/{id} — Remove a media contact","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/pio/media/contacts/{id}","host":["{{baseUrl}}"],"path":["pio","media","contacts","{id}"]},"description":"Remove a media contact"}},{"name":"GET /pio/media/requests — Media inquiries and interview / filming / photo requests","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/media/requests","host":["{{baseUrl}}"],"path":["pio","media","requests"]},"description":"Media inquiries and interview / filming / photo requests"}},{"name":"POST /pio/media/requests — Log a media request","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/media/requests","host":["{{baseUrl}}"],"path":["pio","media","requests"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Log a media request"}},{"name":"GET /pio/media/requests/{id} — A media request with its history","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/media/requests/{id}","host":["{{baseUrl}}"],"path":["pio","media","requests","{id}"]},"description":"A media request with its history"}},{"name":"PATCH /pio/media/requests/{id} — Update a media request (assign, respond, schedule, close)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/media/requests/{id}","host":["{{baseUrl}}"],"path":["pio","media","requests","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a media request (assign, respond, schedule, close)"}},{"name":"DELETE /pio/media/requests/{id} — Remove a media request","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/pio/media/requests/{id}","host":["{{baseUrl}}"],"path":["pio","media","requests","{id}"]},"description":"Remove a media request"}},{"name":"GET /pio/crisis/incidents — Crisis communications incidents","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/crisis/incidents","host":["{{baseUrl}}"],"path":["pio","crisis","incidents"]},"description":"Crisis communications incidents"}},{"name":"POST /pio/crisis/incidents — Open an incident","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/crisis/incidents","host":["{{baseUrl}}"],"path":["pio","crisis","incidents"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Open an incident"}},{"name":"GET /pio/crisis/incidents/{id} — An incident: statement, messages, timeline","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/crisis/incidents/{id}","host":["{{baseUrl}}"],"path":["pio","crisis","incidents","{id}"]},"description":"An incident: statement, messages, timeline"}},{"name":"PATCH /pio/crisis/incidents/{id} — Update an incident (status, lead, schools, safety link)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/crisis/incidents/{id}","host":["{{baseUrl}}"],"path":["pio","crisis","incidents","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update an incident (status, lead, schools, safety link)"}},{"name":"POST /pio/crisis/incidents/{id}/log — Add to the timeline","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/crisis/incidents/{id}/log","host":["{{baseUrl}}"],"path":["pio","crisis","incidents","{id}","log"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add to the timeline"}},{"name":"POST /pio/crisis/incidents/{id}/statement/{action} — Holding statement: save | submit | approve | reject | publish","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/crisis/incidents/{id}/statement/{action}","host":["{{baseUrl}}"],"path":["pio","crisis","incidents","{id}","statement","{action}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Holding statement: save | submit | approve | reject | publish"}},{"name":"POST /pio/crisis/send — One-click alert from a crisis template (two-person rule for district-wide)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/crisis/send","host":["{{baseUrl}}"],"path":["pio","crisis","send"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"One-click alert from a crisis template (two-person rule for district-wide)"}},{"name":"GET /pio/calendar — Editorial calendar across channels with the district calendar","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/calendar","host":["{{baseUrl}}"],"path":["pio","calendar"]},"description":"Editorial calendar across channels with the district calendar"}},{"name":"POST /pio/calendar/items — Plan an entry","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/calendar/items","host":["{{baseUrl}}"],"path":["pio","calendar","items"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Plan an entry"}},{"name":"GET /pio/calendar/items/{id} — A planned entry","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/calendar/items/{id}","host":["{{baseUrl}}"],"path":["pio","calendar","items","{id}"]},"description":"A planned entry"}},{"name":"PATCH /pio/calendar/items/{id} — Edit a planned entry","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/calendar/items/{id}","host":["{{baseUrl}}"],"path":["pio","calendar","items","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a planned entry"}},{"name":"DELETE /pio/calendar/items/{id} — Remove a planned entry","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/pio/calendar/items/{id}","host":["{{baseUrl}}"],"path":["pio","calendar","items","{id}"]},"description":"Remove a planned entry"}},{"name":"GET /pio/campaigns — Campaigns with results","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/campaigns","host":["{{baseUrl}}"],"path":["pio","campaigns"]},"description":"Campaigns with results"}},{"name":"POST /pio/campaigns — New campaign","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/campaigns","host":["{{baseUrl}}"],"path":["pio","campaigns"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"New campaign"}},{"name":"GET /pio/campaigns/{id} — A campaign: goal, content and results","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/campaigns/{id}","host":["{{baseUrl}}"],"path":["pio","campaigns","{id}"]},"description":"A campaign: goal, content and results"}},{"name":"PATCH /pio/campaigns/{id} — Edit a campaign (including the result so far)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/campaigns/{id}","host":["{{baseUrl}}"],"path":["pio","campaigns","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a campaign (including the result so far)"}},{"name":"DELETE /pio/campaigns/{id} — Remove a campaign","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/pio/campaigns/{id}","host":["{{baseUrl}}"],"path":["pio","campaigns","{id}"]},"description":"Remove a campaign"}},{"name":"GET /pio/assets — Brand and asset library","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/assets","host":["{{baseUrl}}"],"path":["pio","assets"]},"description":"Brand and asset library"}},{"name":"POST /pio/assets — Add a link asset (a video or recording kept elsewhere)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/assets","host":["{{baseUrl}}"],"path":["pio","assets"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a link asset (a video or recording kept elsewhere)"}},{"name":"POST /pio/assets/upload — Upload a file (multipart \"file\" + title, kind, tags, usageRights, altText…); virus-scanned and encrypted","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/pio/assets/upload","host":["{{baseUrl}}"],"path":["pio","assets","upload"]},"description":"Upload a file (multipart \"file\" + title, kind, tags, usageRights, altText…); virus-scanned and encrypted"}},{"name":"GET /pio/assets/{id} — An asset with tagged students and their releases","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/assets/{id}","host":["{{baseUrl}}"],"path":["pio","assets","{id}"]},"description":"An asset with tagged students and their releases"}},{"name":"PATCH /pio/assets/{id} — Edit an asset (tags, rights, alt text…)","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/assets/{id}","host":["{{baseUrl}}"],"path":["pio","assets","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit an asset (tags, rights, alt text…)"}},{"name":"DELETE /pio/assets/{id} — Remove an asset","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/pio/assets/{id}","host":["{{baseUrl}}"],"path":["pio","assets","{id}"]},"description":"Remove an asset"}},{"name":"POST /pio/assets/{id}/people — Tag / untag students (photo releases)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/assets/{id}/people","host":["{{baseUrl}}"],"path":["pio","assets","{id}","people"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Tag / untag students (photo releases)"}},{"name":"GET /pio/assets/{id}/file — Download the file","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/assets/{id}/file","host":["{{baseUrl}}"],"path":["pio","assets","{id}","file"]},"description":"Download the file"}},{"name":"GET /pio/releases — Student photo / media releases (filter by school, grade, status, name)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/releases","host":["{{baseUrl}}"],"path":["pio","releases"]},"description":"Student photo / media releases (filter by school, grade, status, name)"}},{"name":"POST /pio/releases — Set the release for one or more students","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/releases","host":["{{baseUrl}}"],"path":["pio","releases"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Set the release for one or more students"}},{"name":"GET /pio/releases/{id}/assets — Assets a student is tagged in","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/releases/{id}/assets","host":["{{baseUrl}}"],"path":["pio","releases","{id}","assets"]},"description":"Assets a student is tagged in"}},{"name":"GET /pio/talk/departments — Let’s Talk departments, owners and response targets","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/talk/departments","host":["{{baseUrl}}"],"path":["pio","talk","departments"]},"description":"Let’s Talk departments, owners and response targets"}},{"name":"POST /pio/talk/departments — Add a department","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/talk/departments","host":["{{baseUrl}}"],"path":["pio","talk","departments"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a department"}},{"name":"PATCH /pio/talk/departments/{id} — Edit a department","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/talk/departments/{id}","host":["{{baseUrl}}"],"path":["pio","talk","departments","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a department"}},{"name":"GET /pio/talk — Community inquiries (Let’s Talk)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/talk","host":["{{baseUrl}}"],"path":["pio","talk"]},"description":"Community inquiries (Let’s Talk)"}},{"name":"POST /pio/talk — Log an inquiry that came by phone, email or in person","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/talk","host":["{{baseUrl}}"],"path":["pio","talk"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Log an inquiry that came by phone, email or in person"}},{"name":"GET /pio/talk/{id} — An inquiry and its conversation","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/talk/{id}","host":["{{baseUrl}}"],"path":["pio","talk","{id}"]},"description":"An inquiry and its conversation"}},{"name":"PATCH /pio/talk/{id} — Route, assign or change status","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/talk/{id}","host":["{{baseUrl}}"],"path":["pio","talk","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Route, assign or change status"}},{"name":"POST /pio/talk/{id}/reply — Answer (optionally by email — held while delivery is off) or add an internal note","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/talk/{id}/reply","host":["{{baseUrl}}"],"path":["pio","talk","{id}","reply"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Answer (optionally by email — held while delivery is off) or add an internal note"}},{"name":"GET /pio/parentsquare/imports — ParentSquare imports","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/parentsquare/imports","host":["{{baseUrl}}"],"path":["pio","parentsquare","imports"]},"description":"ParentSquare imports"}},{"name":"GET /pio/parentsquare/imports/{id} — One import with unmatched rows","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/parentsquare/imports/{id}","host":["{{baseUrl}}"],"path":["pio","parentsquare","imports","{id}"]},"description":"One import with unmatched rows"}},{"name":"POST /pio/parentsquare/import — Preview or apply a ParentSquare CSV (multipart \"file\" + kind, apply, mapping JSON, importId)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/pio/parentsquare/import","host":["{{baseUrl}}"],"path":["pio","parentsquare","import"]},"description":"Preview or apply a ParentSquare CSV (multipart \"file\" + kind, apply, mapping JSON, importId)"}},{"name":"GET /pio/parentsquare/export.csv — Sent posts as CSV (dual running / records)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/parentsquare/export.csv","host":["{{baseUrl}}"],"path":["pio","parentsquare","export.csv"]},"description":"Sent posts as CSV (dual running / records)"}},{"name":"GET /pio/reports/summary — Reach, read rates, social, inquiries, campaigns for a range or month","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/reports/summary","host":["{{baseUrl}}"],"path":["pio","reports","summary"]},"description":"Reach, read rates, social, inquiries, campaigns for a range or month"}},{"name":"GET /pio/reports/trend — Six months of posts, reach and seen rate","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/reports/trend","host":["{{baseUrl}}"],"path":["pio","reports","trend"]},"description":"Six months of posts, reach and seen rate"}},{"name":"GET /pio/reports/csv/{section} — CSV export: posts | social | media | talk | campaigns","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/reports/csv/{section}","host":["{{baseUrl}}"],"path":["pio","reports","csv","{section}"]},"description":"CSV export: posts | social | media | talk | campaigns"}},{"name":"GET /pio/reports/monthly-pdf — Board-ready monthly communications summary (PDF)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/reports/monthly-pdf","host":["{{baseUrl}}"],"path":["pio","reports","monthly-pdf"]},"description":"Board-ready monthly communications summary (PDF)"}},{"name":"GET /pio/video — Press conferences, town halls, interviews and crisis rooms","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/video","host":["{{baseUrl}}"],"path":["pio","video"]},"description":"Press conferences, town halls, interviews and crisis rooms"}},{"name":"POST /pio/video — Schedule (or open now) an Omni Forge Video meeting, linked to a post, release, request, incident or calendar entry","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/video","host":["{{baseUrl}}"],"path":["pio","video"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Schedule (or open now) an Omni Forge Video meeting, linked to a post, release, request, incident or calendar entry"}},{"name":"GET /pio/video/{id} — A meeting with its guest links and recordings","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/video/{id}","host":["{{baseUrl}}"],"path":["pio","video","{id}"]},"description":"A meeting with its guest links and recordings"}},{"name":"POST /pio/video/{id}/guests — Add a guest or the community link","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/video/{id}/guests","host":["{{baseUrl}}"],"path":["pio","video","{id}","guests"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a guest or the community link"}},{"name":"POST /pio/video/{id}/guests/{participantId}/email — Email a guest their link (only when delivery is on)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/pio/video/{id}/guests/{participantId}/email","host":["{{baseUrl}}"],"path":["pio","video","{id}","guests","{participantId}","email"]},"description":"Email a guest their link (only when delivery is on)"}},{"name":"POST /pio/video/{id}/cancel — Cancel (or end) a meeting","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/pio/video/{id}/cancel","host":["{{baseUrl}}"],"path":["pio","video","{id}","cancel"]},"description":"Cancel (or end) a meeting"}}]},{"name":"Public Information Office (public)","item":[{"name":"GET /pio/public/{code} — The district’s public communications page (public)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/public/{code}","host":["{{baseUrl}}"],"path":["pio","public","{code}"]},"description":"The district’s public communications page (public)"}},{"name":"POST /pio/public/{code}/talk — Ask a Let’s Talk question (public)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/public/{code}/talk","host":["{{baseUrl}}"],"path":["pio","public","{code}","talk"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Ask a Let’s Talk question (public)"}},{"name":"POST /pio/public/{code}/talk/status — Check a Let’s Talk question (public; reference + code)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/public/{code}/talk/status","host":["{{baseUrl}}"],"path":["pio","public","{code}","talk","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Check a Let’s Talk question (public; reference + code)"}},{"name":"POST /pio/public/{code}/talk/follow-up — Add to a Let’s Talk question (public; reference + code)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/public/{code}/talk/follow-up","host":["{{baseUrl}}"],"path":["pio","public","{code}","talk","follow-up"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add to a Let’s Talk question (public; reference + code)"}},{"name":"GET /pio/public/{code}/news — The district newsroom (public)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/public/{code}/news","host":["{{baseUrl}}"],"path":["pio","public","{code}","news"]},"description":"The district newsroom (public)"}},{"name":"GET /pio/public/{code}/news/{id} — One newsroom story (public)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/public/{code}/news/{id}","host":["{{baseUrl}}"],"path":["pio","public","{code}","news","{id}"]},"description":"One newsroom story (public)"}},{"name":"POST /pio/public/{code}/media-request — A reporter’s inquiry or interview / filming request (public)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/pio/public/{code}/media-request","host":["{{baseUrl}}"],"path":["pio","public","{code}","media-request"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"A reporter’s inquiry or interview / filming request (public)"}},{"name":"GET /pio/social/oauth/callback — Social network sign-in returns here (public; state token)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/pio/social/oauth/callback","host":["{{baseUrl}}"],"path":["pio","social","oauth","callback"]},"description":"Social network sign-in returns here (public; state token)"}}]},{"name":"Document Signing","item":[{"name":"GET /esign/me — Who I am in Document Signing (menu, counts)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/me","host":["{{baseUrl}}"],"path":["esign","me"]},"description":"Who I am in Document Signing (menu, counts)"}},{"name":"GET /esign/options — Choices for filters and forms","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/options","host":["{{baseUrl}}"],"path":["esign","options"]},"description":"Choices for filters and forms"}},{"name":"GET /esign/dashboard — Dashboard: awaiting me, waiting on others, completed, overdue, activity","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/dashboard","host":["{{baseUrl}}"],"path":["esign","dashboard"]},"description":"Dashboard: awaiting me, waiting on others, completed, overdue, activity"}},{"name":"GET /esign/inbox — Documents addressed to me","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/inbox","host":["{{baseUrl}}"],"path":["esign","inbox"]},"description":"Documents addressed to me"}},{"name":"POST /esign/inbox/{id}/open — My signing link in YRCDoc","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/esign/inbox/{id}/open","host":["{{baseUrl}}"],"path":["esign","inbox","{id}","open"]},"description":"My signing link in YRCDoc"}},{"name":"GET /esign/notifications — My Document Signing notices","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/notifications","host":["{{baseUrl}}"],"path":["esign","notifications"]},"description":"My Document Signing notices"}},{"name":"POST /esign/notifications/read — Mark notices read","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/esign/notifications/read","host":["{{baseUrl}}"],"path":["esign","notifications","read"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Mark notices read"}},{"name":"GET /esign/envelopes — Documents (filters: status, sender, school, template, department, dates, due, search)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/envelopes","host":["{{baseUrl}}"],"path":["esign","envelopes"]},"description":"Documents (filters: status, sender, school, template, department, dates, due, search)"}},{"name":"POST /esign/envelopes — Create a document for signature (and send it)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/esign/envelopes","host":["{{baseUrl}}"],"path":["esign","envelopes"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a document for signature (and send it)"}},{"name":"GET /esign/envelopes/{id} — One document: recipients, fields, timeline, actions","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/envelopes/{id}","host":["{{baseUrl}}"],"path":["esign","envelopes","{id}"]},"description":"One document: recipients, fields, timeline, actions"}},{"name":"DELETE /esign/envelopes/{id} — Discard a draft","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/esign/envelopes/{id}","host":["{{baseUrl}}"],"path":["esign","envelopes","{id}"]},"description":"Discard a draft"}},{"name":"POST /esign/envelopes/{id}/send — Send a draft","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/esign/envelopes/{id}/send","host":["{{baseUrl}}"],"path":["esign","envelopes","{id}","send"]},"description":"Send a draft"}},{"name":"POST /esign/envelopes/{id}/remind — Remind recipients who have not signed","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/esign/envelopes/{id}/remind","host":["{{baseUrl}}"],"path":["esign","envelopes","{id}","remind"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Remind recipients who have not signed"}},{"name":"POST /esign/envelopes/{id}/void — Void a document in progress","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/esign/envelopes/{id}/void","host":["{{baseUrl}}"],"path":["esign","envelopes","{id}","void"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Void a document in progress"}},{"name":"POST /esign/envelopes/{id}/refresh — Refresh status from YRCDoc now","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/esign/envelopes/{id}/refresh","host":["{{baseUrl}}"],"path":["esign","envelopes","{id}","refresh"]},"description":"Refresh status from YRCDoc now"}},{"name":"POST /esign/envelopes/{id}/recipients/{recipientId}/link — A signing link to hand to a recipient (sender only)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/esign/envelopes/{id}/recipients/{recipientId}/link","host":["{{baseUrl}}"],"path":["esign","envelopes","{id}","recipients","{recipientId}","link"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"A signing link to hand to a recipient (sender only)"}},{"name":"GET /esign/envelopes/{id}/audit — YRCDoc audit trail for the document","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/envelopes/{id}/audit","host":["{{baseUrl}}"],"path":["esign","envelopes","{id}","audit"]},"description":"YRCDoc audit trail for the document"}},{"name":"GET /esign/envelopes/{id}/download/{kind} — Download the original, the signed PDF, the certificate or the audit log","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/envelopes/{id}/download/{kind}","host":["{{baseUrl}}"],"path":["esign","envelopes","{id}","download","{kind}"]},"description":"Download the original, the signed PDF, the certificate or the audit log"}},{"name":"GET /esign/envelopes/{id}/pages/{page} — One page of the document as an image (field preview)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/envelopes/{id}/pages/{page}","host":["{{baseUrl}}"],"path":["esign","envelopes","{id}","pages","{page}"]},"description":"One page of the document as an image (field preview)"}},{"name":"POST /esign/uploads — Upload a PDF to send or to make a template (multipart, field \"file\")","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/esign/uploads","host":["{{baseUrl}}"],"path":["esign","uploads"]},"description":"Upload a PDF to send or to make a template (multipart, field \"file\")"}},{"name":"GET /esign/files/info — Pages of an uploaded or template PDF","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/files/info","host":["{{baseUrl}}"],"path":["esign","files","info"]},"description":"Pages of an uploaded or template PDF"}},{"name":"GET /esign/files/page — One page of an uploaded or template PDF as an image","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/files/page","host":["{{baseUrl}}"],"path":["esign","files","page"]},"description":"One page of an uploaded or template PDF as an image"}},{"name":"GET /esign/files/pdf — An uploaded or template PDF","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/files/pdf","host":["{{baseUrl}}"],"path":["esign","files","pdf"]},"description":"An uploaded or template PDF"}},{"name":"GET /esign/people — Find staff, guardians and students 18+","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/people","host":["{{baseUrl}}"],"path":["esign","people"]},"description":"Find staff, guardians and students 18+"}},{"name":"GET /esign/groups — Groups I can bulk-send to","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/groups","host":["{{baseUrl}}"],"path":["esign","groups"]},"description":"Groups I can bulk-send to"}},{"name":"GET /esign/groups/members — Who is in a group","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/groups/members","host":["{{baseUrl}}"],"path":["esign","groups","members"]},"description":"Who is in a group"}},{"name":"GET /esign/templates — Templates","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/templates","host":["{{baseUrl}}"],"path":["esign","templates"]},"description":"Templates"}},{"name":"POST /esign/templates — Create a template (uploaded PDF, or text DEP turns into a PDF)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/esign/templates","host":["{{baseUrl}}"],"path":["esign","templates"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a template (uploaded PDF, or text DEP turns into a PDF)"}},{"name":"GET /esign/templates/{id} — One template","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/templates/{id}","host":["{{baseUrl}}"],"path":["esign","templates","{id}"]},"description":"One template"}},{"name":"PATCH /esign/templates/{id} — Edit a template","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/esign/templates/{id}","host":["{{baseUrl}}"],"path":["esign","templates","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Edit a template"}},{"name":"POST /esign/templates/{id}/archive — Archive a template","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/esign/templates/{id}/archive","host":["{{baseUrl}}"],"path":["esign","templates","{id}","archive"]},"description":"Archive a template"}},{"name":"POST /esign/templates/{id}/restore — Restore an archived template","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/esign/templates/{id}/restore","host":["{{baseUrl}}"],"path":["esign","templates","{id}","restore"]},"description":"Restore an archived template"}},{"name":"POST /esign/templates/{id}/use — Send a document from a template","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/esign/templates/{id}/use","host":["{{baseUrl}}"],"path":["esign","templates","{id}","use"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send a document from a template"}},{"name":"POST /esign/templates/{id}/bulk — Send a template to a group (one document each, names merged)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/esign/templates/{id}/bulk","host":["{{baseUrl}}"],"path":["esign","templates","{id}","bulk"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Send a template to a group (one document each, names merged)"}},{"name":"GET /esign/bulk-sends — Bulk sends","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/bulk-sends","host":["{{baseUrl}}"],"path":["esign","bulk-sends"]},"description":"Bulk sends"}},{"name":"GET /esign/settings — District settings and YRCDoc connection health","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/settings","host":["{{baseUrl}}"],"path":["esign","settings"]},"description":"District settings and YRCDoc connection health"}},{"name":"PUT /esign/settings — Change district settings (district administrator)","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/esign/settings","host":["{{baseUrl}}"],"path":["esign","settings"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Change district settings (district administrator)"}},{"name":"POST /esign/settings/check — Check the YRCDoc connection now","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/esign/settings/check","host":["{{baseUrl}}"],"path":["esign","settings","check"]},"description":"Check the YRCDoc connection now"}},{"name":"GET /esign/reports — Turnaround, completion rate, by school, department, template and sender","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/reports","host":["{{baseUrl}}"],"path":["esign","reports"]},"description":"Turnaround, completion rate, by school, department, template and sender"}},{"name":"GET /esign/reports/rows — Every document sent in the period (CSV export)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/reports/rows","host":["{{baseUrl}}"],"path":["esign","reports","rows"]},"description":"Every document sent in the period (CSV export)"}},{"name":"POST /esign/sources/import — Use a PDF already in DEP (personnel file, project or building document)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/esign/sources/import","host":["{{baseUrl}}"],"path":["esign","sources","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Use a PDF already in DEP (personnel file, project or building document)"}},{"name":"GET /esign/sources/context — Template and signers for a field trip, IEP or 504 plan","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/esign/sources/context","host":["{{baseUrl}}"],"path":["esign","sources","context"]},"description":"Template and signers for a field trip, IEP or 504 plan"}}]},{"name":"Websites","item":[{"name":"GET /websites/templates — List available website templates","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/templates","host":["{{baseUrl}}"],"path":["websites","templates"]},"description":"List available website templates"}},{"name":"GET /websites/sites — List sites for this district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/sites","host":["{{baseUrl}}"],"path":["websites","sites"]},"description":"List sites for this district"}},{"name":"POST /websites/sites — Create a site","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites","host":["{{baseUrl}}"],"path":["websites","sites"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a site"}},{"name":"GET /websites/sites/{siteId} — Get a site","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}"]},"description":"Get a site"}},{"name":"PATCH /websites/sites/{siteId} — Update a site","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a site"}},{"name":"DELETE /websites/sites/{siteId} — Archive (soft-delete) a site","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}"]},"description":"Archive (soft-delete) a site"}},{"name":"GET /websites/sites/{siteId}/pages — List pages for a site","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/pages","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","pages"]},"description":"List pages for a site"}},{"name":"POST /websites/sites/{siteId}/pages — Create a page","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/pages","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","pages"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a page"}},{"name":"GET /websites/sites/{siteId}/pages/{pageId} — Get a page with its blocks","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/pages/{pageId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","pages","{pageId}"]},"description":"Get a page with its blocks"}},{"name":"PATCH /websites/sites/{siteId}/pages/{pageId} — Update a page","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/pages/{pageId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","pages","{pageId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a page"}},{"name":"DELETE /websites/sites/{siteId}/pages/{pageId} — Delete a page","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/pages/{pageId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","pages","{pageId}"]},"description":"Delete a page"}},{"name":"POST /websites/sites/{siteId}/pages/{pageId}/blocks — Add a block to a page","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/pages/{pageId}/blocks","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","pages","{pageId}","blocks"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a block to a page"}},{"name":"PATCH /websites/sites/{siteId}/pages/{pageId}/blocks/{blockId} — Update a block","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/pages/{pageId}/blocks/{blockId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","pages","{pageId}","blocks","{blockId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a block"}},{"name":"DELETE /websites/sites/{siteId}/pages/{pageId}/blocks/{blockId} — Remove a block","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/pages/{pageId}/blocks/{blockId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","pages","{pageId}","blocks","{blockId}"]},"description":"Remove a block"}},{"name":"POST /websites/sites/{siteId}/pages/{pageId}/blocks/reorder — Reorder blocks on a page","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/pages/{pageId}/blocks/reorder","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","pages","{pageId}","blocks","reorder"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Reorder blocks on a page"}},{"name":"GET /websites/sites/{siteId}/branding — Get branding for a site","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/branding","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","branding"]},"description":"Get branding for a site"}},{"name":"PUT /websites/sites/{siteId}/branding — Upsert branding for a site","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/branding","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","branding"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Upsert branding for a site"}},{"name":"GET /websites/sites/{siteId}/domains — List domains for a site","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/domains","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","domains"]},"description":"List domains for a site"}},{"name":"POST /websites/sites/{siteId}/domains — Add a custom domain","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/domains","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","domains"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a custom domain"}},{"name":"POST /websites/sites/{siteId}/domains/{domainId}/verify — Trigger domain verification","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/domains/{domainId}/verify","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","domains","{domainId}","verify"]},"description":"Trigger domain verification"}},{"name":"DELETE /websites/sites/{siteId}/domains/{domainId} — Remove a domain","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/domains/{domainId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","domains","{domainId}"]},"description":"Remove a domain"}},{"name":"GET /websites/sites/{siteId}/redirects — List redirects for a site","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/redirects","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","redirects"]},"description":"List redirects for a site"}},{"name":"POST /websites/sites/{siteId}/redirects — Create a redirect","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/redirects","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","redirects"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a redirect"}},{"name":"PATCH /websites/sites/{siteId}/redirects/{redirectId} — Update a redirect","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/redirects/{redirectId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","redirects","{redirectId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update a redirect"}},{"name":"DELETE /websites/sites/{siteId}/redirects/{redirectId} — Delete a redirect","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/redirects/{redirectId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","redirects","{redirectId}"]},"description":"Delete a redirect"}},{"name":"POST /websites/sites/{siteId}/redirects/bulk-approve — Bulk approve crawl-suggested redirects","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/redirects/bulk-approve","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","redirects","bulk-approve"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Bulk approve crawl-suggested redirects"}},{"name":"GET /websites/sites/{siteId}/media — List media assets for a site","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/media","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","media"]},"description":"List media assets for a site"}},{"name":"POST /websites/sites/{siteId}/media — Register an uploaded media asset","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/media","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","media"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Register an uploaded media asset"}},{"name":"DELETE /websites/sites/{siteId}/media/{assetId} — Soft-delete a media asset","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/media/{assetId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","media","{assetId}"]},"description":"Soft-delete a media asset"}},{"name":"GET /websites/sites/{siteId}/crawl — List crawl jobs for a site","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/crawl","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","crawl"]},"description":"List crawl jobs for a site"}},{"name":"POST /websites/sites/{siteId}/crawl — Start a site crawl job","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/crawl","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","crawl"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Start a site crawl job"}},{"name":"GET /websites/sites/{siteId}/crawl/{jobId} — Get crawl job with results","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/crawl/{jobId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","crawl","{jobId}"]},"description":"Get crawl job with results"}},{"name":"GET /websites/sites/{siteId}/permissions — List editor permissions for a site","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/permissions","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","permissions"]},"description":"List editor permissions for a site"}},{"name":"POST /websites/sites/{siteId}/permissions — Add an editor to a site","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/permissions","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","permissions"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add an editor to a site"}},{"name":"PATCH /websites/sites/{siteId}/permissions/{permId} — Update editor role","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/permissions/{permId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","permissions","{permId}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update editor role"}},{"name":"DELETE /websites/sites/{siteId}/permissions/{permId} — Remove an editor from a site","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/websites/sites/{siteId}/permissions/{permId}","host":["{{baseUrl}}"],"path":["websites","sites","{siteId}","permissions","{permId}"]},"description":"Remove an editor from a site"}}]},{"name":"Websites – Preview","item":[{"name":"GET /websites/preview/{previewSlug} — Get site layout (public)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/preview/{previewSlug}","host":["{{baseUrl}}"],"path":["websites","preview","{previewSlug}"]},"description":"Get site layout (public)"}},{"name":"GET /websites/preview/{previewSlug}/page — Get a page with blocks (public)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/preview/{previewSlug}/page","host":["{{baseUrl}}"],"path":["websites","preview","{previewSlug}","page"]},"description":"Get a page with blocks (public)"}},{"name":"GET /websites/preview/{previewSlug}/live-data — Get live district data for website blocks (public)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/preview/{previewSlug}/live-data","host":["{{baseUrl}}"],"path":["websites","preview","{previewSlug}","live-data"]},"description":"Get live district data for website blocks (public)"}},{"name":"GET /websites/preview/{previewSlug}/sis-data — District data for the website blocks the SIS can fill (public)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/websites/preview/{previewSlug}/sis-data","host":["{{baseUrl}}"],"path":["websites","preview","{previewSlug}","sis-data"]},"description":"District data for the website blocks the SIS can fill (public)"}}]},{"name":"Integrations · OneRoster","item":[{"name":"GET /integrations/oneroster/outbound/export — Generate and download a OneRoster 1.2 CSV ZIP export","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/integrations/oneroster/outbound/export","host":["{{baseUrl}}"],"path":["integrations","oneroster","outbound","export"]},"description":"Generates a complete OneRoster 1.2 bulk export for the district and returns it as a ZIP file. Requires the district to be on Professional or Enterprise plan."}},{"name":"GET /integrations/oneroster/outbound/status — Last OneRoster export metadata","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/integrations/oneroster/outbound/status","host":["{{baseUrl}}"],"path":["integrations","oneroster","outbound","status"]},"description":"Last OneRoster export metadata"}},{"name":"POST /integrations/oneroster/outbound/sync — Push OneRoster export to configured endpoint","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/integrations/oneroster/outbound/sync","host":["{{baseUrl}}"],"path":["integrations","oneroster","outbound","sync"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generates a fresh OneRoster export and pushes it to the configured push endpoint. Configure the endpoint URL + bearer token in district settings.oneRoster.endpointUrl / .bearerToken."}},{"name":"PATCH /integrations/oneroster/outbound/config — Save the OneRoster outbound push endpoint config","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/integrations/oneroster/outbound/config","host":["{{baseUrl}}"],"path":["integrations","oneroster","outbound","config"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Save the OneRoster outbound push endpoint config"}}]},{"name":"Integrations · Microsoft 365","item":[{"name":"GET /integrations/m365/config — Get M365 integration config for the district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/integrations/m365/config","host":["{{baseUrl}}"],"path":["integrations","m365","config"]},"description":"Get M365 integration config for the district"}},{"name":"PATCH /integrations/m365/config — Update M365 tenantId, clientId, or sync toggle","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/integrations/m365/config","host":["{{baseUrl}}"],"path":["integrations","m365","config"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update the M365 configuration. Client secret is NOT stored here — set it as an environment variable: ${DISTRICT_ID}__M365_CLIENT_SECRET."}},{"name":"POST /integrations/m365/sync-users — Sync all active students and staff to M365","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/integrations/m365/sync-users","host":["{{baseUrl}}"],"path":["integrations","m365","sync-users"]},"description":"Provisions or updates all active STUDENT and STAFF persons in Azure AD. Respects the configured tenantId/clientId and reads M365_CLIENT_SECRET from env."}},{"name":"POST /integrations/m365/sync-teams — Sync section roster as Teams class groups","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/integrations/m365/sync-teams","host":["{{baseUrl}}"],"path":["integrations","m365","sync-teams"]},"description":"Creates or updates Microsoft Teams Education class groups for each active section. Each section becomes a Teams class with the lead teacher as owner."}},{"name":"GET /integrations/m365/sync-status — Last M365 sync results","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/integrations/m365/sync-status","host":["{{baseUrl}}"],"path":["integrations","m365","sync-status"]},"description":"Last M365 sync results"}}]},{"name":"Platform","item":[{"name":"POST /api/platform/v1/auth/login — Operator login (Super Admin Console)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/auth/login","host":["{{baseUrl}}"],"path":["api","platform","v1","auth","login"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Operator login (Super Admin Console)"}},{"name":"POST /api/platform/v1/auth/mfa-verify — Complete operator login with a TOTP code","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/auth/mfa-verify","host":["{{baseUrl}}"],"path":["api","platform","v1","auth","mfa-verify"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Complete operator login with a TOTP code"}},{"name":"POST /api/platform/v1/auth/logout — Operator logout","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/auth/logout","host":["{{baseUrl}}"],"path":["api","platform","v1","auth","logout"]},"description":"Operator logout"}},{"name":"GET /api/platform/v1/auth/session — Current operator session, if any","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/auth/session","host":["{{baseUrl}}"],"path":["api","platform","v1","auth","session"]},"description":"Current operator session, if any"}},{"name":"GET /api/platform/v1/support/users — Search a district’s users to support","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/support/users","host":["{{baseUrl}}"],"path":["api","platform","v1","support","users"]},"description":"Search a district’s users to support"}},{"name":"POST /api/platform/v1/support/request — Request support access — emails a one-time code to the user","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/support/request","host":["{{baseUrl}}"],"path":["api","platform","v1","support","request"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Request support access — emails a one-time code to the user"}},{"name":"POST /api/platform/v1/support/verify — Verify the code and start an operator support session","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/support/verify","host":["{{baseUrl}}"],"path":["api","platform","v1","support","verify"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Verify the code and start an operator support session"}},{"name":"GET /api/platform/v1/dashboard/summary — Super Admin: aggregate platform metrics","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/dashboard/summary","host":["{{baseUrl}}"],"path":["api","platform","v1","dashboard","summary"]},"description":"Super Admin: aggregate platform metrics"}},{"name":"GET /api/platform/v1/districts — Super Admin: list every district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts","host":["{{baseUrl}}"],"path":["api","platform","v1","districts"]},"description":"Super Admin: list every district"}},{"name":"POST /api/platform/v1/districts — Super Admin: provision a new district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts","host":["{{baseUrl}}"],"path":["api","platform","v1","districts"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: provision a new district"}},{"name":"GET /api/platform/v1/audit — Recent platform audit entries","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/audit","host":["{{baseUrl}}"],"path":["api","platform","v1","audit"]},"description":"Recent platform audit entries"}},{"name":"GET /api/platform/v1/feature-flags — Feature flags with per-district override counts","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/feature-flags","host":["{{baseUrl}}"],"path":["api","platform","v1","feature-flags"]},"description":"Feature flags with per-district override counts"}},{"name":"POST /api/platform/v1/feature-flags — Super Admin: create a feature flag","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/feature-flags","host":["{{baseUrl}}"],"path":["api","platform","v1","feature-flags"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: create a feature flag"}},{"name":"GET /api/platform/v1/districts/{id} — Super Admin: district detail","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}"]},"description":"Super Admin: district detail"}},{"name":"PATCH /api/platform/v1/districts/{id} — Super Admin: edit district","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: edit district"}},{"name":"POST /api/platform/v1/districts/{id}/status — Super Admin: activate / suspend / churn a district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}/status","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: activate / suspend / churn a district"}},{"name":"POST /api/platform/v1/districts/{id}/trial — Super Admin: start, extend or set the end of a district trial","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}/trial","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}","trial"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: start, extend or set the end of a district trial"}},{"name":"GET /api/platform/v1/districts/{id}/users — Super Admin: list users of a district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}/users","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}","users"]},"description":"Super Admin: list users of a district"}},{"name":"POST /api/platform/v1/districts/{id}/users/{userId}/status — Super Admin: activate / suspend / disable a district user","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}/users/{userId}/status","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}","users","{userId}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: activate / suspend / disable a district user"}},{"name":"PATCH /api/platform/v1/districts/{id}/users/{userId}/roles — Super Admin: replace role set for a district user","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}/users/{userId}/roles","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}","users","{userId}","roles"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: replace role set for a district user"}},{"name":"GET /api/platform/v1/operators — Super Admin: list YRC operators","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/operators","host":["{{baseUrl}}"],"path":["api","platform","v1","operators"]},"description":"Super Admin: list YRC operators"}},{"name":"POST /api/platform/v1/operators — Super Admin: invite a new YRC operator","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/operators","host":["{{baseUrl}}"],"path":["api","platform","v1","operators"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: invite a new YRC operator"}},{"name":"PATCH /api/platform/v1/operators/{id} — Super Admin: update YRC operator","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/operators/{id}","host":["{{baseUrl}}"],"path":["api","platform","v1","operators","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: update YRC operator"}},{"name":"POST /api/platform/v1/operators/{id}/status — Super Admin: activate / suspend / disable YRC operator","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/operators/{id}/status","host":["{{baseUrl}}"],"path":["api","platform","v1","operators","{id}","status"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: activate / suspend / disable YRC operator"}},{"name":"POST /api/platform/v1/operators/{id}/reset-password — Super Admin: generate a new temporary password","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/operators/{id}/reset-password","host":["{{baseUrl}}"],"path":["api","platform","v1","operators","{id}","reset-password"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: generate a new temporary password"}},{"name":"GET /api/platform/v1/districts/{id}/feature-flags — Super Admin: all flags with this district's overrides","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}/feature-flags","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}","feature-flags"]},"description":"Super Admin: all flags with this district's overrides"}},{"name":"PATCH /api/platform/v1/feature-flags/{key} — Super Admin: update feature flag default / description","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/feature-flags/{key}","host":["{{baseUrl}}"],"path":["api","platform","v1","feature-flags","{key}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: update feature flag default / description"}},{"name":"POST /api/platform/v1/districts/{id}/feature-flags/{key}/override — Super Admin: set a district-level feature flag override","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}/feature-flags/{key}/override","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}","feature-flags","{key}","override"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: set a district-level feature flag override"}},{"name":"DELETE /api/platform/v1/districts/{id}/feature-flags/{key}/override — Super Admin: remove a district-level feature flag override","request":{"method":"DELETE","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}/feature-flags/{key}/override","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}","feature-flags","{key}","override"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: remove a district-level feature flag override"}},{"name":"GET /api/platform/v1/tenant-pool — Tenant pool inventory by state","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/tenant-pool","host":["{{baseUrl}}"],"path":["api","platform","v1","tenant-pool"]},"description":"How many pre-seeded districts are unclaimed and how many are running as pilots, per state. Drives the top-up decision."}},{"name":"GET /api/platform/v1/tenant-pool/slots — Every pool slot, claimed or not","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/tenant-pool/slots","host":["{{baseUrl}}"],"path":["api","platform","v1","tenant-pool","slots"]},"description":"Every pool slot, claimed or not"}},{"name":"POST /api/platform/v1/tenant-pool/claim — Claim a pre-seeded district for a prospect","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/tenant-pool/claim","host":["{{baseUrl}}"],"path":["api","platform","v1","tenant-pool","claim"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Takes one unclaimed slot, renames it to the prospect’s organization, creates their district administrator, starts the pilot clock and returns a sign-in link. The password is generated here and returned exactly once."}},{"name":"GET /api/platform/v1/tenant-pool/expired — Pilots past their end date","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/tenant-pool/expired","host":["{{baseUrl}}"],"path":["api","platform","v1","tenant-pool","expired"]},"description":"Reported, never released automatically: releasing a slot deletes a prospect’s work, and that should be somebody’s decision."}},{"name":"POST /api/platform/v1/tenant-pool/{districtId}/release — Return a claimed slot to the pool","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/tenant-pool/{districtId}/release","host":["{{baseUrl}}"],"path":["api","platform","v1","tenant-pool","{districtId}","release"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Removes the pilot administrator and everything private to them (sessions, My day, ITW/IRW membership, AI conversations, drafts), hands their shared records to the seeded district admin, removes colleagues they invited, marks their lead released and restores the seeded district name. The slot is then queued for refill: unclaimable until the trial keeper has wiped it, seeded it again and run the normal fill."}},{"name":"POST /api/platform/v1/reconciler/run — Trigger projection reconciliation (all districts or one)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/reconciler/run","host":["{{baseUrl}}"],"path":["api","platform","v1","reconciler","run"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Trigger projection reconciliation (all districts or one)"}},{"name":"GET /api/platform/v1/reconciler/status — Last reconciler run summary per district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/reconciler/status","host":["{{baseUrl}}"],"path":["api","platform","v1","reconciler","status"]},"description":"Last reconciler run summary per district"}},{"name":"GET /api/platform/v1/districts/{districtId}/api-keys — Super Admin: list API keys for a district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{districtId}/api-keys","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{districtId}","api-keys"]},"description":"Returns all non-revoked API keys for the district. The key hash is never returned."}},{"name":"POST /api/platform/v1/districts/{districtId}/api-keys — Super Admin: create an API key for a district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{districtId}/api-keys","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{districtId}","api-keys"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Generates a cryptographically random key. The plaintext key is returned ONCE and cannot be retrieved again."}},{"name":"DELETE /api/platform/v1/districts/{districtId}/api-keys/{keyId} — Super Admin: revoke an API key","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{districtId}/api-keys/{keyId}","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{districtId}","api-keys","{keyId}"]},"description":"Soft-deletes the key by setting revokedAt to now. The key stops working immediately."}}]},{"name":"Platform · Integrations","item":[{"name":"GET /api/platform/v1/integrations/districts/{districtId}/connectors — List available connectors and their configuration status for a district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/integrations/districts/{districtId}/connectors","host":["{{baseUrl}}"],"path":["api","platform","v1","integrations","districts","{districtId}","connectors"]},"description":"List available connectors and their configuration status for a district"}},{"name":"PUT /api/platform/v1/integrations/districts/{districtId}/connectors/{id}/config — Upsert a connector configuration for a district","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/integrations/districts/{districtId}/connectors/{id}/config","host":["{{baseUrl}}"],"path":["api","platform","v1","integrations","districts","{districtId}","connectors","{id}","config"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Upsert a connector configuration for a district"}},{"name":"GET /api/platform/v1/integrations/districts/{districtId}/sync-runs — History of connector sync runs for a district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/integrations/districts/{districtId}/sync-runs","host":["{{baseUrl}}"],"path":["api","platform","v1","integrations","districts","{districtId}","sync-runs"]},"description":"History of connector sync runs for a district"}},{"name":"POST /api/platform/v1/integrations/districts/{districtId}/genesis/import — Import a Genesis CSV export into a district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/integrations/districts/{districtId}/genesis/import","host":["{{baseUrl}}"],"path":["api","platform","v1","integrations","districts","{districtId}","genesis","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Paste CSV bodies directly. Default `dryRun: true` — run once to preview counts, then set false to apply."}},{"name":"POST /api/platform/v1/integrations/districts/{districtId}/powerschool/import — Import a PowerSchool CSV export into a district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/integrations/districts/{districtId}/powerschool/import","host":["{{baseUrl}}"],"path":["api","platform","v1","integrations","districts","{districtId}","powerschool","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Import a PowerSchool CSV export into a district"}},{"name":"POST /api/platform/v1/integrations/districts/{districtId}/oneroster/import — Import a OneRoster 1.2 CSV set into a district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/integrations/districts/{districtId}/oneroster/import","host":["{{baseUrl}}"],"path":["api","platform","v1","integrations","districts","{districtId}","oneroster","import"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Import a OneRoster 1.2 CSV set into a district"}},{"name":"POST /api/platform/v1/integrations/districts/{districtId}/lti/launch — Canvas LTI 1.3 launch endpoint (scaffold)","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/integrations/districts/{districtId}/lti/launch","host":["{{baseUrl}}"],"path":["api","platform","v1","integrations","districts","{districtId}","lti","launch"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Accepts the LTI 1.3 `id_token` POST from Canvas, validates the JWT against the configured platform keys, and redirects the user into Forge with a session. M11 ships the endpoint shape; full JWT validation + user provisioning lands when a district configures Canvas."}},{"name":"GET /api/platform/v1/integrations/lti/schoology/config — Schoology LTI 1.3 registration metadata","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/integrations/lti/schoology/config","host":["{{baseUrl}}"],"path":["api","platform","v1","integrations","lti","schoology","config"]},"description":"Returns the Schoology LTI 1.3 registration payload. Requires `integration.admin` permission. Use this to populate Schoology LTI tool registration manually or via the register endpoint."}},{"name":"POST /api/platform/v1/integrations/districts/{districtId}/lti/schoology/register — Register Forge as Schoology LTI 1.3 tool","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/integrations/districts/{districtId}/lti/schoology/register","host":["{{baseUrl}}"],"path":["api","platform","v1","integrations","districts","{districtId}","lti","schoology","register"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Calls Schoology API to register the Forge SIS LTI tool for a district."}},{"name":"GET /api/platform/v1/integrations/lti/blackboard/config — Blackboard LTI 1.3 registration metadata","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/integrations/lti/blackboard/config","host":["{{baseUrl}}"],"path":["api","platform","v1","integrations","lti","blackboard","config"]},"description":"Returns the Blackboard LTI 1.3 registration payload. Requires `integration.admin` permission. Use this to populate Blackboard LTI tool registration manually or via the register endpoint."}},{"name":"POST /api/platform/v1/integrations/districts/{districtId}/lti/blackboard/register — Register Forge as Blackboard LTI 1.3 tool","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/integrations/districts/{districtId}/lti/blackboard/register","host":["{{baseUrl}}"],"path":["api","platform","v1","integrations","districts","{districtId}","lti","blackboard","register"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Calls Blackboard API to register the Forge SIS LTI tool for a district."}}]},{"name":"Platform · Billing","item":[{"name":"GET /api/platform/v1/districts/{id}/billing — Get subscription info for a district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}/billing","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}","billing"]},"description":"Get subscription info for a district"}},{"name":"POST /api/platform/v1/districts/{id}/billing/create-customer — Create a Stripe customer for a district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}/billing/create-customer","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}","billing","create-customer"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a Stripe customer for a district"}},{"name":"POST /api/platform/v1/districts/{id}/billing/subscribe — Create a Stripe subscription for a district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}/billing/subscribe","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}","billing","subscribe"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Create a Stripe subscription for a district"}},{"name":"POST /api/platform/v1/districts/{id}/billing/cancel — Cancel the Stripe subscription for a district","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}/billing/cancel","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}","billing","cancel"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Cancel the Stripe subscription for a district"}},{"name":"GET /api/platform/v1/districts/{id}/invoices — List invoices for a district","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}/invoices","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}","invoices"]},"description":"List invoices for a district"}},{"name":"GET /api/platform/v1/districts/{id}/ai-usage — Per-district AI usage report for billing passthrough","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/districts/{id}/ai-usage","host":["{{baseUrl}}"],"path":["api","platform","v1","districts","{id}","ai-usage"]},"description":"Returns AI token counts and USD cost for a district in the given period. If `from` and `to` are omitted, defaults to the rolling 30-day window. The `invoiceLineItem` field is pre-formatted for inclusion on a platform invoice."}}]},{"name":"Platform — Billing","item":[{"name":"GET /api/platform/v1/billing/prospects — List Stripe checkouts pending or completed district provisioning","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/billing/prospects","host":["{{baseUrl}}"],"path":["api","platform","v1","billing","prospects"]},"description":"List Stripe checkouts pending or completed district provisioning"}},{"name":"POST /api/platform/v1/billing/prospects/{auditId}/provision — Provision a District + initial district_admin user from a prospect","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/billing/prospects/{auditId}/provision","host":["{{baseUrl}}"],"path":["api","platform","v1","billing","prospects","{auditId}","provision"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Creates the District row using the supplied details, an initial User with the prospect email as a district_admin, and binds the existing Stripe customer/subscription. Idempotent — if the prospect was already provisioned, returns the existing districtId."}}]},{"name":"Platform — Logs","item":[{"name":"GET /api/platform/v1/logs/processes — List PM2 processes with status + uptime","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/logs/processes","host":["{{baseUrl}}"],"path":["api","platform","v1","logs","processes"]},"description":"List PM2 processes with status + uptime"}},{"name":"GET /api/platform/v1/logs/tail — Tail the last N lines of a process log","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/logs/tail","host":["{{baseUrl}}"],"path":["api","platform","v1","logs","tail"]},"description":"Tail the last N lines of a process log"}}]},{"name":"Platform — Queues","item":[{"name":"GET /api/platform/v1/queues — List BullMQ queue depths","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/queues","host":["{{baseUrl}}"],"path":["api","platform","v1","queues"]},"description":"List BullMQ queue depths"}},{"name":"GET /api/platform/v1/queues/{name}/failed — List recent failed jobs in a queue","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/queues/{name}/failed","host":["{{baseUrl}}"],"path":["api","platform","v1","queues","{name}","failed"]},"description":"List recent failed jobs in a queue"}}]},{"name":"Platform — Trial leads","item":[{"name":"GET /api/platform/v1/trial-leads — Trial leads with sign-in, usage and follow-up status","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/trial-leads","host":["{{baseUrl}}"],"path":["api","platform","v1","trial-leads"]},"description":"Trial leads with sign-in, usage and follow-up status"}},{"name":"GET /api/platform/v1/trial-leads/export.csv — The filtered trial-lead list as CSV","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/trial-leads/export.csv","host":["{{baseUrl}}"],"path":["api","platform","v1","trial-leads","export.csv"]},"description":"The filtered trial-lead list as CSV"}},{"name":"GET /api/platform/v1/trial-leads/{id} — One trial lead in full","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/trial-leads/{id}","host":["{{baseUrl}}"],"path":["api","platform","v1","trial-leads","{id}"]},"description":"One trial lead in full"}},{"name":"PATCH /api/platform/v1/trial-leads/{id} — Update the sales stage, next follow-up date or owner","request":{"method":"PATCH","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/trial-leads/{id}","host":["{{baseUrl}}"],"path":["api","platform","v1","trial-leads","{id}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Update the sales stage, next follow-up date or owner"}},{"name":"POST /api/platform/v1/trial-leads/{id}/notes — Add a note to a trial lead","request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/trial-leads/{id}/notes","host":["{{baseUrl}}"],"path":["api","platform","v1","trial-leads","{id}","notes"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Add a note to a trial lead"}},{"name":"DELETE /api/platform/v1/trial-leads/{id}/notes/{noteId} — Remove a note from a trial lead","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/trial-leads/{id}/notes/{noteId}","host":["{{baseUrl}}"],"path":["api","platform","v1","trial-leads","{id}","notes","{noteId}"]},"description":"Remove a note from a trial lead"}},{"name":"POST /api/platform/v1/trial-leads/{id}/resend-welcome — Email the lead their trial link again","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/trial-leads/{id}/resend-welcome","host":["{{baseUrl}}"],"path":["api","platform","v1","trial-leads","{id}","resend-welcome"]},"description":"Email the lead their trial link again"}}]},{"name":"Platform — PIO social networks","item":[{"name":"GET /api/platform/v1/pio/social-apps — Super Admin: the social networks' developer-app credentials (never the secrets)","request":{"method":"GET","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/pio/social-apps","host":["{{baseUrl}}"],"path":["api","platform","v1","pio","social-apps"]},"description":"Super Admin: the social networks' developer-app credentials (never the secrets)"}},{"name":"PUT /api/platform/v1/pio/social-apps/{appKey} — Super Admin: save a client id, replace a secret, or switch an app on or off","request":{"method":"PUT","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/api/platform/v1/pio/social-apps/{appKey}","host":["{{baseUrl}}"],"path":["api","platform","v1","pio","social-apps","{appKey}"]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}},"description":"Super Admin: save a client id, replace a secret, or switch an app on or off"}},{"name":"DELETE /api/platform/v1/pio/social-apps/{appKey} — Super Admin: clear the stored pair so the environment variable takes over again","request":{"method":"DELETE","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/pio/social-apps/{appKey}","host":["{{baseUrl}}"],"path":["api","platform","v1","pio","social-apps","{appKey}"]},"description":"Super Admin: clear the stored pair so the environment variable takes over again"}},{"name":"POST /api/platform/v1/pio/social-apps/{appKey}/test — Super Admin: check the credential pair against the network's token endpoint (posts nothing)","request":{"method":"POST","header":[],"url":{"raw":"{{baseUrl}}/api/platform/v1/pio/social-apps/{appKey}/test","host":["{{baseUrl}}"],"path":["api","platform","v1","pio","social-apps","{appKey}","test"]},"description":"Super Admin: check the credential pair against the network's token endpoint (posts nothing)"}}]}]}