{"api":"Lunenburg Budget Project \u2014 read-only data API","about":"An independent archive of the Lunenburg, Massachusetts town and school budget. Everything here is derived from documents the town and district published, and every row can be traced back to one.","readFirst":["Never mix a BUDGET with an ACTUAL in one calculation. They differ by up to 59% on some lines, and a growth rate measured from one to the other is partly growth and partly the step between them.","A budget line is NET -- what the town must raise after grants, fees and state aid. It is not what the thing costs. A line can rise because a grant ended and no cost changed at all.","A STAGE (proposed / settled / actual) is not a PERIOD (1-13). `budget_figure` and `ledger_snapshot` do not join, and joining them produces a plausible wrong number.","NO budget line is mapped to a ledger account. The crosswalk table is empty on purpose. Budget-to-actual at line level cannot be answered from this database yet."],"endpoints":[{"url":"https://lunenburgbudgetproject.org/api/schema","about":"Read this first. Grain, conventions, and the four ways to get a confident wrong answer.","bytes":8301},{"url":"https://lunenburgbudgetproject.org/api/coverage","about":"What we hold for each fiscal year.","bytes":2950},{"url":"https://lunenburgbudgetproject.org/api/ledger","about":"The town's books, every account and period.","bytes":403331},{"url":"https://lunenburgbudgetproject.org/api/lines","about":"Index of every budget line. Each row carries the URL of that one line's figures.","bytes":121209},{"url":"https://lunenburgbudgetproject.org/api/workbook","about":"The FY27 workbook, one file per year.","bytes":909},{"url":"https://lunenburgbudgetproject.org/api/totals","about":"Whole-year budget against actual.","bytes":984},{"url":"https://lunenburgbudgetproject.org/api/funding","about":"Revenue, transfers, funds and grants.","bytes":116647},{"url":"https://lunenburgbudgetproject.org/api/documents","about":"Provenance for every source.","bytes":166619},{"url":"https://lunenburgbudgetproject.org/data/lunenburg.db","about":"The whole database, SQLite. sha256 4e1b39e94af70104658da1ecc5f7336bf42e75bee2f8f18e1454ac9b0d1baa3d.","bytes":4878336}],"format":"Static JSON. No authentication, no rate limit, nothing computed per request. Cache freely. Every endpoint states its own size in `bytes` so a caller can decide before fetching; nothing here exceeds 200 KB except the database download itself.","generatedFrom":"scripts/build_api.py, from sources/data/lunenburg.db","alsoSee":{"llms.txt":"https://lunenburgbudgetproject.org/llms.txt","method":"https://lunenburgbudgetproject.org/docs/analyses/show-your-work.md","schemaNotes":"notes/SCHEMA.md in the repository"},"contact":"https://lunenburgbudgetproject.org/sources"}