{"openapi":"3.1.0","info":{"title":"Lunenburg Budget Project \u2014 read-only data API","version":"1","description":"An independent archive of the Lunenburg, Massachusetts town and school budget. Static JSON, no authentication, no rate limit, nothing computed per request. Read /api/schema before computing anything: it states the grain of every table and the specific ways to get a confident wrong answer out of this data."},"servers":[{"url":"https://lunenburgbudgetproject.org"}],"paths":{"/api/schema":{"get":{"summary":"Read this first. Grain, conventions, and the four ways to get a confident wrong answer.","responses":{"200":{"description":"10845 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/coverage":{"get":{"summary":"What we hold for each fiscal year.","responses":{"200":{"description":"3184 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/ledger":{"get":{"summary":"The town's books, every account and period.","responses":{"200":{"description":"404818 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/lines":{"get":{"summary":"Index of every budget line. Each row carries the URL of that one line's figures.","responses":{"200":{"description":"115539 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/workbook":{"get":{"summary":"The FY27 workbook, one file per year.","responses":{"200":{"description":"909 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/totals":{"get":{"summary":"Whole-year budget against actual.","responses":{"200":{"description":"984 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/funding":{"get":{"summary":"Revenue, transfers, funds and grants.","responses":{"200":{"description":"121771 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/documents":{"get":{"summary":"Provenance for every source.","responses":{"200":{"description":"2861028 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/query":{"get":{"summary":"Ask a question in SQL instead of downloading a table. Read-only, one statement, provenance with every answer.","responses":{"200":{"description":"0 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/questions":{"get":{"summary":"107 worked examples: a question, the SQL that answers it, and the columns it returns. Every one is executed on each build.","responses":{"200":{"description":"0 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/tables":{"get":{"summary":"EVERY dataset in the project, fetchable, with its size. Staff rosters, placement counts, annual-report extracts \u2014 the raw grain the endpoints above are built from.","responses":{"200":{"description":"19005 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/account_names":{"get":{"summary":"The `account_names` table. 124 rows.","responses":{"200":{"description":"21060 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/annual_report_catalogue":{"get":{"summary":"The `annual_report_catalogue` table. 866 rows, split by fy into 15 files.","responses":{"200":{"description":"2238 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/annual_report_contents":{"get":{"summary":"The `annual_report_contents` table. 199 rows.","responses":{"200":{"description":"62523 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/annual_report_receipts":{"get":{"summary":"The `annual_report_receipts` table. 1,137 rows, split by fy into 13 files.","responses":{"200":{"description":"1890 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/annual_report_survey":{"get":{"summary":"The `annual_report_survey` table. 2,751 rows, split by fy into 15 files.","responses":{"200":{"description":"2130 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/athletic_fee_schedule":{"get":{"summary":"The `athletic_fee_schedule` table. 31 rows.","responses":{"200":{"description":"18859 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/athletics_by_sport":{"get":{"summary":"The `athletics_by_sport` table. 960 rows.","responses":{"200":{"description":"142763 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/athletics_by_sport_reconciliation":{"get":{"summary":"The `athletics_by_sport_reconciliation` table. 342 rows.","responses":{"200":{"description":"63579 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/athletics_history":{"get":{"summary":"The `athletics_history` table. 175 rows.","responses":{"200":{"description":"27776 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/balance_sheet":{"get":{"summary":"The `balance_sheet` table. 774 rows, split by fy into 12 files.","responses":{"200":{"description":"1699 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/balance_sheet_printed_totals":{"get":{"summary":"The `balance_sheet_printed_totals` table. 288 rows.","responses":{"200":{"description":"56917 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/ballot_questions":{"get":{"summary":"The `ballot_questions` table. 9 rows.","responses":{"200":{"description":"5310 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/budget_figure":{"get":{"summary":"The `budget_figure` table. 9,503 rows, split by fy into 26 files.","responses":{"200":{"description":"3899 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/build_inputs":{"get":{"summary":"The `build_inputs` table. 125 rows.","responses":{"200":{"description":"15657 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/build_meta":{"get":{"summary":"The `build_meta` table. 2 rows.","responses":{"200":{"description":"357 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/capital_funding_history":{"get":{"summary":"The `capital_funding_history` table. 10 rows.","responses":{"200":{"description":"1760 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/capital_plan_fy27":{"get":{"summary":"The `capital_plan_fy27` table. 22 rows.","responses":{"200":{"description":"4075 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/capital_plans":{"get":{"summary":"The `capital_plans` table. 201 rows.","responses":{"200":{"description":"103492 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/capital_plans_refused":{"get":{"summary":"The `capital_plans_refused` table. 2 rows.","responses":{"200":{"description":"2132 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/census_acs":{"get":{"summary":"The `census_acs` table. 889 rows.","responses":{"200":{"description":"448003 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/column_glossary":{"get":{"summary":"The `column_glossary` table. 179 rows.","responses":{"200":{"description":"35249 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dataset_document":{"get":{"summary":"The `dataset_document` table. 225 rows.","responses":{"200":{"description":"111798 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/debt_repayment":{"get":{"summary":"The `debt_repayment` table. 37 rows.","responses":{"200":{"description":"12939 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_ap":{"get":{"summary":"The `dese_ap` table. 9,906 rows.","responses":{"200":{"description":"4583610 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_attrition":{"get":{"summary":"The `dese_attrition` table. 1,061 rows.","responses":{"200":{"description":"352998 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_ch70_aid_factor":{"get":{"summary":"The `dese_ch70_aid_factor` table. 155 rows.","responses":{"200":{"description":"91071 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_ch70_contribution":{"get":{"summary":"The `dese_ch70_contribution` table. 7,040 rows, split by fy into 40 files.","responses":{"200":{"description":"5441 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_ch70_formula":{"get":{"summary":"The `dese_ch70_formula` table. 259 rows.","responses":{"200":{"description":"131223 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_ch70_statewide":{"get":{"summary":"The `dese_ch70_statewide` table. 122 rows.","responses":{"200":{"description":"42344 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_circuit_breaker":{"get":{"summary":"The `dese_circuit_breaker` table. 147 rows.","responses":{"200":{"description":"97913 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_class_size":{"get":{"summary":"The `dese_class_size` table. 3,160 rows.","responses":{"200":{"description":"1214898 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_educator_workforce":{"get":{"summary":"The `dese_educator_workforce` table. 840 rows, split by fy into 3 files.","responses":{"200":{"description":"905 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_enrollment":{"get":{"summary":"The `dese_enrollment` table. 1,194 rows, split by fy into 35 files.","responses":{"200":{"description":"4528 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_function_expenditure":{"get":{"summary":"The `dese_function_expenditure` table. 6,930 rows, split by fy into 34 files.","responses":{"200":{"description":"4602 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_function_statewide":{"get":{"summary":"The `dese_function_statewide` table. 1,438 rows, split by fy into 17 files.","responses":{"200":{"description":"2599 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_measure":{"get":{"summary":"The `dese_measure` table. 5,344 rows, split by fy into 17 files.","responses":{"200":{"description":"2175 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_radar":{"get":{"summary":"The `dese_radar` table. 5,344 rows, split by fy into 17 files.","responses":{"200":{"description":"2135 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_sped_indicator":{"get":{"summary":"The `dese_sped_indicator` table. 4,860 rows, split by fy into 23 files.","responses":{"200":{"description":"3171 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_sped_movement":{"get":{"summary":"The `dese_sped_movement` table. 684 rows, split by fy into 7 files.","responses":{"200":{"description":"1279 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_sped_program":{"get":{"summary":"The `dese_sped_program` table. 2,403 rows, split by fy into 13 files.","responses":{"200":{"description":"1968 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_sped_trajectory":{"get":{"summary":"The `dese_sped_trajectory` table. 252 rows.","responses":{"200":{"description":"114470 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_teacher_grade_subject":{"get":{"summary":"The `dese_teacher_grade_subject` table. 8,467 rows, split by fy into 38 files.","responses":{"200":{"description":"5209 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_teacher_program_area":{"get":{"summary":"The `dese_teacher_program_area` table. 659 rows, split by fy into 19 files.","responses":{"200":{"description":"2780 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_teacher_subject":{"get":{"summary":"The `dese_teacher_subject` table. 5,527 rows, split by fy into 34 files.","responses":{"200":{"description":"4507 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dese_town_enrollment":{"get":{"summary":"The `dese_town_enrollment` table. 1,488 rows, split by fy into 13 files.","responses":{"200":{"description":"1913 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dls_health_insurance":{"get":{"summary":"The `dls_health_insurance` table. 8,775 rows, split by fy into 25 files.","responses":{"200":{"description":"3229 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/dls_health_self_insured":{"get":{"summary":"The `dls_health_self_insured` table. 8,424 rows, split by fy into 24 files.","responses":{"200":{"description":"3275 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/enterprise_balance_sheet":{"get":{"summary":"The `enterprise_balance_sheet` table. 114 rows.","responses":{"200":{"description":"33291 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/enterprise_balance_sheet_printed_totals":{"get":{"summary":"The `enterprise_balance_sheet_printed_totals` table. 75 rows.","responses":{"200":{"description":"20303 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/extraction_plan":{"get":{"summary":"The `extraction_plan` table. 555 rows, split by fy into 15 files.","responses":{"200":{"description":"2057 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/free_cash_proof":{"get":{"summary":"The `free_cash_proof` table. 630 rows.","responses":{"200":{"description":"142538 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/fund_1301_cash_journal":{"get":{"summary":"The `fund_1301_cash_journal` table. 277 rows.","responses":{"200":{"description":"101680 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/fund_activity":{"get":{"summary":"The `fund_activity` table. 61 rows.","responses":{"200":{"description":"15037 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/grant_award":{"get":{"summary":"The `grant_award` table. 79 rows.","responses":{"200":{"description":"32720 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/grants_history":{"get":{"summary":"The `grants_history` table. 79 rows.","responses":{"200":{"description":"43348 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/ledger_snapshot":{"get":{"summary":"The `ledger_snapshot` table. 983 rows, split by fy into 3 files.","responses":{"200":{"description":"1519 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/line_history":{"get":{"summary":"The `line_history` table. 9,503 rows, split by fy into 23 files.","responses":{"200":{"description":"2848 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/line_history_coverage":{"get":{"summary":"The `line_history_coverage` table. 86 rows.","responses":{"200":{"description":"68769 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/line_history_disagreements":{"get":{"summary":"The `line_history_disagreements` table. 1,502 rows, split by fy into 15 files.","responses":{"200":{"description":"2212 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/lps_budget_lines":{"get":{"summary":"The `lps_budget_lines` table. 356 rows.","responses":{"200":{"description":"167453 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/money_assumptions":{"get":{"summary":"The `money_assumptions` table. 6 rows.","responses":{"200":{"description":"2273 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/money_classification":{"get":{"summary":"The `money_classification` table. 252 rows.","responses":{"200":{"description":"53450 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/money_edges":{"get":{"summary":"The `money_edges` table. 11 rows.","responses":{"200":{"description":"2448 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/money_gaps":{"get":{"summary":"The `money_gaps` table. 266 rows.","responses":{"200":{"description":"259111 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/munis_ledger":{"get":{"summary":"The `munis_ledger` table. 983 rows, split by fy into 5 files.","responses":{"200":{"description":"1126 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/munis_school_ytd":{"get":{"summary":"The `munis_school_ytd` table. 3,784 rows, split by fiscal_year into 16 files.","responses":{"200":{"description":"2516 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/munis_trial_balance_account":{"get":{"summary":"The `munis_trial_balance_account` table. 17 rows.","responses":{"200":{"description":"5767 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/munis_trial_balance_journal":{"get":{"summary":"The `munis_trial_balance_journal` table. 102 rows.","responses":{"200":{"description":"37980 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/ood_tuition_history":{"get":{"summary":"The `ood_tuition_history` table. 30 rows.","responses":{"200":{"description":"3861 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/outstanding_debt":{"get":{"summary":"The `outstanding_debt` table. 1,038 rows.","responses":{"200":{"description":"432520 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/peg_access":{"get":{"summary":"The `peg_access` table. 110 rows.","responses":{"200":{"description":"33432 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/peg_access_fund":{"get":{"summary":"The `peg_access_fund` table. 165 rows.","responses":{"200":{"description":"79103 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/peg_access_identities":{"get":{"summary":"The `peg_access_identities` table. 23 rows.","responses":{"200":{"description":"3103 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/peg_access_printed_totals":{"get":{"summary":"The `peg_access_printed_totals` table. 77 rows.","responses":{"200":{"description":"28695 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/placement_counts":{"get":{"summary":"The `placement_counts` table. 15 rows.","responses":{"200":{"description":"5923 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/rate_register":{"get":{"summary":"The `rate_register` table. 71 rows.","responses":{"200":{"description":"28192 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/receivables":{"get":{"summary":"The `receivables` table. 319 rows.","responses":{"200":{"description":"97865 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/receivables_reconciliation":{"get":{"summary":"The `receivables_reconciliation` table. 12 rows.","responses":{"200":{"description":"8664 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/report_anomalies":{"get":{"summary":"The `report_anomalies` table. 521 rows, split by fy into 15 files.","responses":{"200":{"description":"2018 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/report_appropriations":{"get":{"summary":"The `report_appropriations` table. 5,345 rows, split by fy into 66 files.","responses":{"200":{"description":"8254 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/report_capital_projects":{"get":{"summary":"The `report_capital_projects` table. 618 rows, split by fy into 15 files.","responses":{"200":{"description":"2373 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/report_debt":{"get":{"summary":"The `report_debt` table. 366 rows, split by fy into 9 files.","responses":{"200":{"description":"1546 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/report_dept_activity":{"get":{"summary":"The `report_dept_activity` table. 515 rows, split by fy into 15 files.","responses":{"200":{"description":"2313 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/report_elections":{"get":{"summary":"The `report_elections` table. 2,012 rows, split by fy into 19 files.","responses":{"200":{"description":"2704 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/report_enrollment_mcas":{"get":{"summary":"The `report_enrollment_mcas` table. 338 rows, split by fy into 15 files.","responses":{"200":{"description":"2346 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/report_gross_wages":{"get":{"summary":"The `report_gross_wages` table. 3,547 rows, split by fy into 21 files.","responses":{"200":{"description":"2990 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/report_monty_tech":{"get":{"summary":"The `report_monty_tech` table. 70 rows.","responses":{"200":{"description":"53420 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/report_officials":{"get":{"summary":"The `report_officials` table. 237 rows, split by fy into 13 files.","responses":{"200":{"description":"2020 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/report_trust_funds":{"get":{"summary":"The `report_trust_funds` table. 644 rows, split by fy into 15 files.","responses":{"200":{"description":"2289 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/report_valuation":{"get":{"summary":"The `report_valuation` table. 321 rows, split by fy into 9 files.","responses":{"200":{"description":"1605 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/report_vital_records":{"get":{"summary":"The `report_vital_records` table. 96 rows.","responses":{"200":{"description":"53261 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/revenue_history":{"get":{"summary":"The `revenue_history` table. 504 rows.","responses":{"200":{"description":"106953 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/role_classification":{"get":{"summary":"The `role_classification` table. 1,016 rows.","responses":{"200":{"description":"149665 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/school_special_revenue_fy26_q3":{"get":{"summary":"The `school_special_revenue_fy26_q3` table. 62 rows.","responses":{"200":{"description":"9423 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/ski_coop":{"get":{"summary":"The `ski_coop` table. 15 rows.","responses":{"200":{"description":"2330 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/special_revenue_funds":{"get":{"summary":"The `special_revenue_funds` table. 2,473 rows, split by fy into 28 files.","responses":{"200":{"description":"3893 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/special_revenue_printed_totals":{"get":{"summary":"The `special_revenue_printed_totals` table. 13 rows.","responses":{"200":{"description":"2725 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/special_revenue_read":{"get":{"summary":"The `special_revenue_read` table. 1,882 rows, split by fy into 13 files.","responses":{"200":{"description":"1933 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/sped_para_history":{"get":{"summary":"The `sped_para_history` table. 26 rows.","responses":{"200":{"description":"4027 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/sped_teacher_history":{"get":{"summary":"The `sped_teacher_history` table. 21 rows.","responses":{"200":{"description":"3372 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/sped_transport_history":{"get":{"summary":"The `sped_transport_history` table. 25 rows.","responses":{"200":{"description":"2619 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/stabilization_balances":{"get":{"summary":"The `stabilization_balances` table. 41 rows.","responses":{"200":{"description":"17065 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/staff_position_map":{"get":{"summary":"The `staff_position_map` table. 525 rows.","responses":{"200":{"description":"40964 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/staff_roster_counts":{"get":{"summary":"The `staff_roster_counts` table. 698 rows.","responses":{"200":{"description":"51800 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/staff_roster_entries":{"get":{"summary":"The `staff_roster_entries` table. 3,751 rows, split by fy into 15 files.","responses":{"200":{"description":"2881 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/stated_cuts":{"get":{"summary":"The `stated_cuts` table. 193 rows, split by fy into 5 files.","responses":{"200":{"description":"1033 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/stated_figure":{"get":{"summary":"The `stated_figure` table. 2 rows.","responses":{"200":{"description":"2226 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/table_semantics":{"get":{"summary":"The `table_semantics` table. 138 rows.","responses":{"200":{"description":"101419 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/tax_collection":{"get":{"summary":"The `tax_collection` table. 250 rows.","responses":{"200":{"description":"87934 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/tax_collection_unreconciled":{"get":{"summary":"The `tax_collection_unreconciled` table. 13 rows.","responses":{"200":{"description":"5207 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/total_expenses_history":{"get":{"summary":"The `total_expenses_history` table. 28 rows.","responses":{"200":{"description":"2406 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/total_salaries_history":{"get":{"summary":"The `total_salaries_history` table. 28 rows.","responses":{"200":{"description":"2434 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/town_ledger_fy26_q3":{"get":{"summary":"The `town_ledger_fy26_q3` table. 67 rows.","responses":{"200":{"description":"12957 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/valuation_by_class":{"get":{"summary":"The `valuation_by_class` table. 170 rows.","responses":{"200":{"description":"136412 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/variance_by_group":{"get":{"summary":"The `variance_by_group` table. 59 rows.","responses":{"200":{"description":"11720 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/workbook_figure":{"get":{"summary":"The `workbook_figure` table. 3,261 rows, split by fy into 9 files.","responses":{"200":{"description":"1727 bytes of JSON","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}