{
  "status": "planned",
  "captureOwner": "Claude",
  "sourceScope": "Current development; match the documented source revision.",
  "desktop": {
    "width": 1440,
    "height": 1000,
    "deviceScaleFactor": 2,
    "theme": "light"
  },
  "mobile": {
    "width": 390,
    "height": 844,
    "deviceScaleFactor": 2,
    "theme": "light"
  },
  "optionalThemes": [
    "dark"
  ],
  "data": "Use fictional records in a disposable local installation.",
  "shots": [
    {
      "id": "install-checks",
      "guide": "current/getting-started/installation",
      "section": "Complete the browser installer",
      "routeName": "install.index",
      "additionalRouteNames": [
        "install.world.setup"
      ],
      "priority": "essential",
      "path": "/images/current/install-checks-light-desktop.webp",
      "alt": "The installer lists its checks. The countries and states check failed and offers an install button.",
      "caption": "A failed check shows its cause and, where possible, an action to fix it.",
      "requiredState": "Fresh migrated database without country reference data.",
      "routeParameters": [],
      "captureAccess": "installer",
      "captureRole": null,
      "additionalPermissions": []
    },
    {
      "id": "install-form",
      "guide": "current/getting-started/installation",
      "section": "Complete the browser installer",
      "routeName": "install.index",
      "additionalRouteNames": [
        "install.store"
      ],
      "priority": "essential",
      "path": "/images/current/install-form-light-desktop.webp",
      "alt": "The completed installer form for a fictional school district and its first elementary campus.",
      "caption": "All checks pass and the form holds the administrator, organization, and first campus.",
      "requiredState": "All checks pass; form filled with fictional administrator and campus details; demo notice off.",
      "routeParameters": [],
      "captureAccess": "installer",
      "captureRole": null,
      "additionalPermissions": []
    },
    {
      "id": "school-setup-start",
      "guide": "current/getting-started/installation",
      "section": "Complete school setup",
      "routeName": "schools.setup",
      "priority": "essential",
      "path": "/images/current/school-setup-start-light-desktop.webp",
      "alt": "Quick setup opens on the school details step after the first sign-in.",
      "caption": "Quick setup guides you from school details to the first academic year.",
      "requiredState": "First sign-in after installation.",
      "routeParameters": [
        "school",
        "step"
      ],
      "captureRole": "platform-admin",
      "additionalPermissions": []
    },
    {
      "id": "workspace",
      "guide": "current/using/workspace",
      "section": "Choose the working context",
      "routeName": "dashboard",
      "priority": "essential",
      "path": "/images/current/workspace-light-desktop.webp",
      "alt": "The dashboard for Riverside High School shows the working year and semester, setup progress, attendance today, the next seven days, and trends.",
      "caption": "The working bar names the school year and term that every screen uses.",
      "requiredState": "Working campus and academic context selectors are visible.",
      "routeParameters": [],
      "captureRole": "teacher",
      "additionalPermissions": []
    },
    {
      "id": "campus-setup",
      "guide": "current/administration/campuses",
      "section": "Complete campus setup",
      "routeName": "schools.settings",
      "priority": "essential",
      "path": "/images/current/campus-setup-light-desktop.webp",
      "alt": "The school setup checklist groups its steps and marks each one done or open.",
      "caption": "Each open step says why it is open and links to the screen that finishes it.",
      "requiredState": "Campus setup details and terminology are visible.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "features",
      "guide": "current/administration/features",
      "section": "Optional features",
      "routeName": "schools.features.edit",
      "priority": "essential",
      "path": "/images/current/features-light-desktop.webp",
      "alt": "Feature switches list the tools the school uses, grouped by area, with 11 of 12 turned on.",
      "caption": "A feature switch controls the whole application area.",
      "requiredState": "Feature switches show Attendance enabled and Library disabled.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "campus-role",
      "guide": "current/administration/permissions",
      "section": "Create a campus role",
      "routeName": "roles.create",
      "priority": "extended",
      "path": "/images/current/campus-role-light-desktop.webp",
      "alt": "The role form has a name field and permission check boxes grouped by area.",
      "caption": "Select only the permissions required for the job.",
      "requiredState": "A custom role form shows a selected set of permissions.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "organizations",
      "guide": "current/administration/organizations",
      "section": "Set up an organization",
      "routeName": "organizations.index",
      "priority": "extended",
      "path": "/images/current/organizations-light-desktop.webp",
      "alt": "The organization list shows Riverside Unified School District with two campuses.",
      "caption": "Organization ownership and campus access are separate.",
      "requiredState": "The organization list contains two fictional campuses in one organization.",
      "routeParameters": [],
      "captureRole": "organization-admin",
      "additionalPermissions": []
    },
    {
      "id": "account-invitations",
      "guide": "current/people/accounts",
      "section": "Invite a person",
      "routeName": "users.invitations.index",
      "priority": "essential",
      "path": "/images/current/account-invitations-light-desktop.webp",
      "alt": "The invitation list shows one pending invitation with its expiry and its resend and revoke actions.",
      "caption": "A new invitation replaces earlier unused links.",
      "requiredState": "The invitation list shows an unused invitation and its expiry.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "account-menu",
      "guide": "current/people/accounts",
      "section": "Suspend, archive, or reinstate an account",
      "routeName": "teachers.show",
      "priority": "essential",
      "path": "/images/current/account-menu-light-desktop.webp",
      "alt": "The Sign-in section of a teacher's profile, with the account menu open on Send invitation, Suspend account, and Archive account.",
      "caption": "The account menu sits beside the account status in **Sign-in**.",
      "requiredState": "An active teacher at this campus, with the account menu open.",
      "routeParameters": [
        "teacher"
      ],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "account-set-password",
      "guide": "current/people/accounts",
      "section": "Set a password for another person",
      "routeName": "teachers.show",
      "priority": "essential",
      "path": "/images/current/account-set-password-light-desktop.webp",
      "alt": "The Set password form shows New password, Confirm password, and the Change it at next sign-in checkbox.",
      "caption": "The form opens in place, under **Sign-in**.",
      "requiredState": "An active teacher at this campus, with the Set password form open.",
      "routeParameters": [
        "teacher"
      ],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "student-enrollment",
      "guide": "current/people/students",
      "section": "Enroll a learner",
      "routeName": "students.index",
      "priority": "essential",
      "path": "/images/current/student-enrollment-light-desktop.webp",
      "alt": "The student list shows fictional learners with email, admission number, class, section, and enrollment state.",
      "caption": "The student list. Open **Create student** from here.",
      "requiredState": "The student list shows fictional learners with admission and placement details.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "student-admit-form",
      "guide": "current/people/students",
      "section": "Admit a learner",
      "routeName": "students.create",
      "priority": "essential",
      "path": "/images/current/student-admit-form-light-desktop.webp",
      "alt": "The Create student form shows the person's details, then an Admission group with Section, Admission number and Date of admission, and the Admit learner button.",
      "caption": "The admission form. Section is the only admission field you must choose. The admission number is made for you when left blank.",
      "requiredState": "The full form, with an active section available.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "student-profile-enrollment",
      "guide": "current/people/students",
      "section": "Admit a learner",
      "routeName": "students.show",
      "priority": "essential",
      "path": "/images/current/student-profile-enrollment-light-desktop.webp",
      "alt": "A learner's profile shows the Enrollment section with its status, admission number, admission date, class and section, then status and placement history.",
      "caption": "The **Enrollment** section of the profile. The ellipsis on its right opens **Change the enrollment**.",
      "requiredState": "An active learner with one placement.",
      "routeParameters": [
        "student"
      ],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "student-placement",
      "guide": "current/people/students",
      "section": "Change a placement",
      "routeName": "students.show",
      "priority": "essential",
      "path": "/images/current/student-placement-light-desktop.webp",
      "alt": "The Change placement form under Enrollment shows the destination section, the effective date, the optional reason, and Save placement.",
      "caption": "The placement form opens inside the **Enrollment** section.",
      "requiredState": "Change the enrollment → Change placement is open for an active learner.",
      "routeParameters": [
        "student"
      ],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "student-status",
      "guide": "current/people/students",
      "section": "Change enrollment status",
      "routeName": "students.show",
      "priority": "essential",
      "path": "/images/current/student-status-light-desktop.webp",
      "alt": "The Change enrollment status form shows the status list, the effective date, the optional reason, and Save status.",
      "caption": "The status form opens inside the **Enrollment** section.",
      "requiredState": "Change the enrollment → Change status is open for an active learner.",
      "routeParameters": [
        "student"
      ],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "admission-queue",
      "guide": "current/people/admissions",
      "section": "Admission queues",
      "routeName": "admissions.waitlist.index",
      "priority": "extended",
      "path": "/images/current/admission-queue-light-desktop.webp",
      "alt": "The waitlist board has the Add a candidate form above the queue. One candidate is placed, and one candidate is still pending with only a Decline button.",
      "caption": "The section is full again, so the pending candidate has no **Offer place** button.",
      "requiredState": "A full section with one placed candidate and one pending candidate.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "guardian-links",
      "guide": "current/people/guardians",
      "section": "Link a guardian",
      "routeName": "parents.index",
      "priority": "extended",
      "path": "/images/current/guardian-links-light-desktop.webp",
      "alt": "The parent list shows fictional guardians with their email and account state.",
      "caption": "The parent list. Open a parent to see the learners linked to them.",
      "requiredState": "The guardian directory leads to a fictional guardian with linked learners.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "guardian-create",
      "guide": "current/people/guardians",
      "section": "Add a guardian account",
      "routeName": "parents.create",
      "priority": "essential",
      "path": "/images/current/guardian-create-light-desktop.webp",
      "alt": "The Create parent form shows the person's name, email, contact and address fields, and the Add parent button.",
      "caption": "The parent form. A new guardian gets an email link to set a password.",
      "requiredState": "The empty form.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "guardian-profile",
      "guide": "current/people/guardians",
      "section": "Link a learner",
      "routeName": "parents.show",
      "priority": "essential",
      "path": "/images/current/guardian-profile-light-desktop.webp",
      "alt": "A parent's profile shows contact details, Sign-in, and a Linked learners section with the Change linked learners button.",
      "caption": "The **Linked learners** section of the parent's profile lists learners at this campus.",
      "requiredState": "A guardian linked to one learner here.",
      "routeParameters": [
        "parent"
      ],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "guardian-assign",
      "guide": "current/people/guardians",
      "section": "Link a learner",
      "routeName": "parents.assign-student",
      "priority": "essential",
      "path": "/images/current/guardian-assign-light-desktop.webp",
      "alt": "The assignment page shows Section and Learner lists, the Link learner button, and the linked learners with an Unlink button each.",
      "caption": "The assignment page. Each linked learner has its own **Unlink** button.",
      "requiredState": "A guardian linked to one learner here.",
      "routeParameters": [
        "parent"
      ],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "campus-move-request",
      "section": "Ask for a move",
      "path": "/images/current/campus-move-request-light-desktop.webp",
      "alt": "The Move to another campus form under Enrollment has the campus and section, the effective date, a reason, and Ask the other campus.",
      "caption": "**Campus and section** lists the active sections of the other campuses in the organization.",
      "requiredState": "Change the enrollment → Move to another campus is open for an active learner.",
      "routeParameters": [
        "student"
      ],
      "guide": "current/people/moves",
      "routeName": "students.show",
      "priority": "extended",
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "campus-move-waiting",
      "section": "Ask for a move",
      "path": "/images/current/campus-move-waiting-light-desktop.webp",
      "alt": "The profile shows that the learner is waiting for Maple Grove Middle School, section 8A, with Take the request back beside it.",
      "caption": "Asking does not move the learner.",
      "requiredState": "The learner has a waiting campus move request.",
      "routeParameters": [
        "student"
      ],
      "guide": "current/people/moves",
      "routeName": "students.show",
      "priority": "extended",
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "campus-move",
      "guide": "current/people/moves",
      "section": "Decide a request",
      "routeName": "campus-moves.index",
      "priority": "extended",
      "path": "/images/current/campus-move-light-desktop.webp",
      "alt": "Campus moves lists one student another campus wants to send here, with a note, Approve and move, and Reject. Below, one student this campus asked to send away has Take back.",
      "caption": "Approval moves the learner at once.",
      "requiredState": "One incoming request and one outgoing request are waiting.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "record-sharing",
      "guide": "current/people/sharing",
      "section": "Request and receive records",
      "routeName": "data-sharing-requests.index",
      "priority": "extended",
      "path": "/images/current/record-sharing-light-desktop.webp",
      "alt": "Record sharing lists the requests asked of this school and by this school, each with its state.",
      "caption": "Approval and receipt are separate record-sharing steps.",
      "requiredState": "A sharing request displays selected categories and its current state.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": [
        "request data sharing",
        "approve data sharing",
        "fulfil data sharing"
      ]
    },
    {
      "id": "academic-calendar",
      "guide": "current/academics/calendars",
      "section": "Prepare a cycle",
      "routeName": "academic-years.index",
      "priority": "essential",
      "path": "/images/current/academic-calendar-light-desktop.webp",
      "alt": "The academic year list shows the 2026–27 year with its dates, two semesters, and Open status.",
      "caption": "Check period dates and status before operational work.",
      "requiredState": "A fictional academic cycle lists dated periods and their statuses.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "section-structure",
      "guide": "current/academics/structure",
      "section": "Create the structure",
      "routeName": "academic-cycle-sections.index",
      "priority": "extended",
      "path": "/images/current/section-structure-light-desktop.webp",
      "alt": "Sections are grouped by grade and show their room, capacity, homeroom teacher, and status.",
      "caption": "Section capacity includes suspended enrollments and open offers.",
      "requiredState": "Sections show their levels, cycle, and capacity.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "course-roster",
      "guide": "current/academics/offerings",
      "section": "Create an offering",
      "routeName": "course-offerings.index",
      "priority": "extended",
      "path": "/images/current/course-roster-light-desktop.webp",
      "alt": "Subjects being taught list each subject with its grade, year, term, section, teacher, and status.",
      "caption": "An offering defines the teaching context and learner roster.",
      "requiredState": "Offerings show the subject, level, period, and active state.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "attendance-register",
      "guide": "current/academics/attendance",
      "section": "Record a register",
      "routeName": "attendance.register",
      "priority": "essential",
      "path": "/images/current/attendance-register-light-desktop.webp",
      "alt": "A Grade 10 register shows fictional learners with present, absent, late, and excused states.",
      "caption": "Use explicit attendance states and review unrecorded entries.",
      "requiredState": "A daily register shows fictional learners and mixed attendance states.",
      "routeParameters": [],
      "captureRole": "teacher",
      "additionalPermissions": []
    },
    {
      "id": "timetable",
      "guide": "current/academics/timetables",
      "section": "Build a timetable",
      "routeName": "timetables.index",
      "priority": "extended",
      "path": "/images/current/timetable-light-desktop.webp",
      "alt": "The 10A timetable has a published revision and a draft revision that is not published.",
      "caption": "Publish only after reviewing timetable conflicts.",
      "requiredState": "The timetable list distinguishes draft and published revisions.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "syllabus-coverage",
      "guide": "current/academics/syllabi",
      "section": "Track delivery",
      "routeName": "syllabi.coverage",
      "priority": "extended",
      "path": "/images/current/syllabus-coverage-light-desktop.webp",
      "alt": "Syllabus coverage lists each subject and grade with topics covered and topics behind plan.",
      "caption": "A published outline and recorded coverage are separate.",
      "requiredState": "Topic coverage distinguishes covered, partial, and outstanding work.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "exam-schedule",
      "guide": "current/academics/exams",
      "section": "Plan an exam",
      "routeName": "exams.index",
      "priority": "extended",
      "path": "/images/current/exam-schedule-light-desktop.webp",
      "alt": "The exam list for Fall semester shows the midterm and final exam windows.",
      "caption": "Exam dates describe the assessment window.",
      "requiredState": "The exam list shows an assessment window inside a teaching period.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "gradebook",
      "guide": "current/academics/gradebooks",
      "section": "Record marks",
      "routeName": "course-offerings.gradebook.show",
      "priority": "essential",
      "path": "/images/current/gradebook-light-desktop.webp",
      "alt": "The marksheet for one assessment shows marks for each learner and an Absent entry state.",
      "caption": "Review marks and entry states before submitting results.",
      "requiredState": "The selected gradebook marksheet shows numeric marks and explicit entry states.",
      "routeParameters": [
        "courseOffering"
      ],
      "captureRole": "teacher",
      "additionalPermissions": []
    },
    {
      "id": "result-review",
      "guide": "current/academics/results",
      "section": "Submit and approve results",
      "routeName": "course-offerings.gradebook.show",
      "priority": "essential",
      "path": "/images/current/result-review-light-desktop.webp",
      "alt": "Approved results list each learner's percentage, revision, and approval date.",
      "caption": "Families read approved publication revisions.",
      "requiredState": "The selected academic record shows approved publication data and its revision.",
      "routeParameters": [
        "courseOffering"
      ],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "graduation-plan",
      "guide": "current/academics/progression",
      "section": "Define graduation requirements",
      "routeName": "graduation-plans.index",
      "priority": "extended",
      "path": "/images/current/graduation-plan-light-desktop.webp",
      "alt": "Two graduation plans show their credits, requirement count, and who they apply to.",
      "caption": "Graduation progress uses approved subject results.",
      "requiredState": "A plan shows requirements, credits, and learner progress.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "calendar-events",
      "guide": "current/operations/calendar",
      "section": "Add an event",
      "routeName": "calendar-events.index",
      "priority": "extended",
      "path": "/images/current/calendar-events-light-desktop.webp",
      "alt": "The October calendar shows school events and a staff development day when the school is shut.",
      "caption": "A closure day differs from closing an academic period.",
      "requiredState": "A calendar shows a fictional event and a closure day.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "notices",
      "guide": "current/operations/notices",
      "section": "Prepare a notice",
      "routeName": "notices.index",
      "priority": "extended",
      "path": "/images/current/notices-light-desktop.webp",
      "alt": "The notice list shows each notice with its start and stop dates.",
      "caption": "The scheduler controls due publication and expiry.",
      "requiredState": "The notice list shows scheduled and published messages.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "student-case",
      "guide": "current/operations/cases",
      "section": "Review and finish a case",
      "routeName": "incidents.index",
      "priority": "extended",
      "path": "/images/current/student-case-light-desktop.webp",
      "alt": "The case list shows two fictional behaviour cases with their kind, state, date, and handler.",
      "caption": "Case category affects access to its records.",
      "requiredState": "The case list uses fictional facts and shows category and status.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": [
        "read safeguarding case"
      ]
    },
    {
      "id": "student-support",
      "guide": "current/operations/wellbeing",
      "section": "Create a support plan",
      "routeName": "support-plans.index",
      "priority": "extended",
      "path": "/images/current/student-support-light-desktop.webp",
      "alt": "The support plan list shows two fictional plans with their learner, kind, state, and review date.",
      "caption": "Confidential support requires its specific access permission.",
      "requiredState": "A fictional support plan shows its category, review date, and progress.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": [
        "read confidential support plan"
      ]
    },
    {
      "id": "staff-leave",
      "guide": "current/operations/staff",
      "section": "Process leave",
      "routeName": "staff-leave.index",
      "priority": "extended",
      "path": "/images/current/staff-leave-light-desktop.webp",
      "alt": "The staff leave board shows who is away today and a form to ask for days away.",
      "caption": "Approved leave affects teaching availability.",
      "requiredState": "The leave board shows fictional requests and their decision state.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "programme-participation",
      "guide": "current/operations/groups-programmes",
      "section": "Give a learner a place",
      "routeName": "programs.index",
      "priority": "extended",
      "path": "/images/current/programme-participation-light-desktop.webp",
      "alt": "The programme list shows a special programme and a club, each with the number of learners taking part.",
      "caption": "Programme participation does not change class placement.",
      "requiredState": "A programme record shows fictional learners and participation states.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "facility-booking",
      "guide": "current/operations/facilities",
      "section": "Book a resource",
      "routeName": "facilities.index",
      "priority": "extended",
      "path": "/images/current/facility-booking-light-desktop.webp",
      "alt": "The facilities page lists the next bookings and the rooms and equipment the campus shares.",
      "caption": "Facility bookings share availability checks with published timetables.",
      "requiredState": "The facility page shows availability and a dated booking.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "boarding-roll",
      "guide": "current/operations/boarding",
      "section": "Take a roll",
      "routeName": "boarding-rolls.index",
      "priority": "extended",
      "path": "/images/current/boarding-roll-light-desktop.webp",
      "alt": "A morning roll for Cedar House shows five boarders, three answered and two not recorded.",
      "caption": "Complete the roll after recording every required entry.",
      "requiredState": "The roll sheet shows fictional boarders and recorded states.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "library-loan",
      "guide": "current/operations/library",
      "section": "Lend and return a copy",
      "routeName": "library-loans.index",
      "priority": "extended",
      "path": "/images/current/library-loan-light-desktop.webp",
      "alt": "The lending desk shows books out now with barcodes and due dates, two of them late.",
      "caption": "A loan belongs to a physical copy and an eligible borrower.",
      "requiredState": "The lending desk shows copy identifiers, due dates, and active loans.",
      "routeParameters": [],
      "captureRole": "librarian",
      "additionalPermissions": []
    },
    {
      "id": "checked-import",
      "guide": "current/operations/imports",
      "section": "Check and apply a file",
      "routeName": "imports.index",
      "priority": "essential",
      "path": "/images/current/checked-import-light-desktop.webp",
      "alt": "A checked import shows five rows read, three ready, two with errors, and the message for each error.",
      "caption": "Checking a file does not apply its rows.",
      "requiredState": "An import batch shows valid rows, invalid rows, and row error messages.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "report-export",
      "guide": "current/operations/reports",
      "section": "Build an export",
      "routeName": "reports.index",
      "priority": "extended",
      "path": "/images/current/report-export-light-desktop.webp",
      "alt": "The report desk shows one Ready class list and its download action.",
      "caption": "Download a report after the build reaches Ready.",
      "requiredState": "The report desk shows one Ready export and its download action.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "fee-invoice",
      "guide": "current/finance/invoices",
      "section": "Fees and invoices",
      "routeName": "fee-invoices.index",
      "priority": "essential",
      "path": "/images/current/fee-invoice-light-desktop.webp",
      "alt": "The Finance page shows what is owed, received, and spent this school year, and the invoice list with its period and status filters.",
      "caption": "The Finance page lists the campus's invoices.",
      "requiredState": "The campus has invoices in its open financial period.",
      "routeParameters": [],
      "captureRole": "accountant",
      "additionalPermissions": []
    },
    {
      "id": "fee-invoice-create",
      "section": "Issue an invoice",
      "routeName": "fee-invoices.create",
      "path": "/images/current/fee-invoice-create-light-desktop.webp",
      "alt": "The Create fee invoice form has six students of section 9B and one fee of 40. The total reads 6 invoices · $40.00 each, and the button reads Create 6 invoices.",
      "caption": "Each student gets a separate invoice with the same fees.",
      "requiredState": "A section with active learners and a fee category with fees; students and one fee are added.",
      "routeParameters": [],
      "guide": "current/finance/invoices",
      "priority": "essential",
      "captureRole": "accountant",
      "additionalPermissions": []
    },
    {
      "id": "fee-invoice-view",
      "section": "View and print",
      "routeName": "fee-invoices.show",
      "path": "/images/current/fee-invoice-view-light-desktop.webp",
      "alt": "The invoice shows the learner, its status, the issue and due dates, the amount charged and owed, the fees, and the payments.",
      "caption": "Select an invoice number to open it.",
      "requiredState": "An invoice with one fee, a waiver, and a payment that was taken back.",
      "routeParameters": [
        "fee_invoice"
      ],
      "guide": "current/finance/invoices",
      "priority": "essential",
      "captureRole": "accountant",
      "additionalPermissions": []
    },
    {
      "id": "student-payment",
      "guide": "current/finance/payments",
      "section": "Record a payment",
      "routeName": "fee-invoices.pay",
      "priority": "essential",
      "path": "/images/current/student-payment-light-desktop.webp",
      "alt": "The Take payment form shows who pays, what is paid and owed, then Amount, Received on, Paid by, Reference, Note, and Record payment.",
      "caption": "Record money received and review any credit left unallocated.",
      "requiredState": "An invoice that still owes money; the Take payment form is open.",
      "routeParameters": [
        "fee_invoice"
      ],
      "captureRole": "accountant",
      "additionalPermissions": []
    },
    {
      "id": "student-account",
      "guide": "current/finance/payments",
      "section": "Use held credit",
      "routeName": "student-accounts.show",
      "priority": "essential",
      "path": "/images/current/student-account-light-desktop.webp",
      "alt": "The Student account shows what the learner owes and the credit held, their invoices, and their payments, with a reversal and a payment taken back.",
      "caption": "The account shows **Owed**, **Credit held**, the invoices, and the payments.",
      "requiredState": "A learner with two invoices, one paid, and a payment that was taken back.",
      "routeParameters": [
        "student_record"
      ],
      "captureRole": "accountant",
      "additionalPermissions": []
    },
    {
      "id": "financial-periods",
      "guide": "current/finance/ledger",
      "section": "Control financial posting",
      "routeName": "fee-invoices.index",
      "priority": "extended",
      "path": "/images/current/financial-periods-light-desktop.webp",
      "alt": "Below the invoices, one financial period is open and the previous one is closed.",
      "caption": "A financial period controls posting. It does not control teaching.",
      "requiredState": "Financial-period controls distinguish open and closed periods.",
      "routeParameters": [],
      "captureRole": "admin",
      "additionalPermissions": []
    },
    {
      "id": "family-overview",
      "guide": "current/family/portal",
      "section": "Open a learner's records",
      "routeName": "portal.overview",
      "priority": "essential",
      "path": "/images/current/family-overview-light-desktop.webp",
      "alt": "The family overview shows one linked learner at Riverside High School and the areas the family can open.",
      "caption": "A guardian sees each learner that the school linked to them.",
      "requiredState": "The family overview shows only fictional linked learners and available areas.",
      "routeParameters": [],
      "captureRole": "parent",
      "additionalPermissions": []
    },
    {
      "id": "family-request",
      "guide": "current/family/requests",
      "section": "Send a request",
      "routeName": "portal.requests.index",
      "priority": "extended",
      "path": "/images/current/family-request-light-desktop.webp",
      "alt": "A parent's request form sits above earlier requests, one of them answered by the school.",
      "caption": "Each family member sees only the requests they sent.",
      "requiredState": "The family request and staff inbox show the submitted state and response.",
      "additionalRouteNames": [
        "portal-requests.index"
      ],
      "routeParameters": [
        "studentRecord"
      ],
      "captureRole": "parent",
      "additionalPermissions": [],
      "additionalCaptureRoles": {
        "portal-requests.index": "admin"
      }
    }
  ]
}
