# Georgia Civic Data API — full reference > Complete, dense reference for AI agents: every endpoint plus every dataset's columns, filters, allowed values, and numeric ranges. Generated from the same ODCS data contracts the API serves. Base URL: `https://georgiacivicdata.org/api/v1` ## How requests work - Fact endpoint: `GET /api/v1/{main_topic}/{topic}` (e.g. `/api/v1/education/act_scores`). - Discovery: `GET /api/v1/datasets` (catalog), `GET /api/v1/datasets/{main}/{topic}` (full schema as JSON), `GET /api/v1/datasets/{main}/{topic}/contract?format=yaml|json` (raw ODCS contract). - Dimensions: `GET /api/v1/education/_dimensions/{districts|schools|demographics}` plus `/schema`. - Formats: `?format=json` (default, paginated envelope with `data` + `pagination`), `csv`, or `parquet` (raw bytes + `X-Total-Count` header). - Pagination: `limit` (default 1000, max 10000) and `offset`. - Years: `year=YYYY` (exact) XOR `year_min`/`year_max` (inclusive range). Mixing them is a 400; an inverted range is a 400. - Detail level: `detail=states|districts|schools` (whatever the topic publishes; a default is used if omitted). One dataset documents all available levels. - Filters: foreign-key code lists (`district_code`, `school_code`, `demographic`) and one param per categorical column. Comma-separated values are OR within a param; multiple params AND. A value outside a declared enum is a 400 `INVALID_FILTER_VALUE`. - Joined dimensions also expose enum attributes as filters (e.g. `demographic_category`, `district_type`). - NULL means suppressed or not-applicable, never zero. Suppressed cells (small-N privacy) are NULL. - Errors: `{"error": {"code", "message", "details?}}`. Codes include TOPIC_NOT_FOUND (404), CONFLICTING_YEAR_FILTER / INVALID_YEAR_RANGE / UNSUPPORTED_FILTER / INVALID_FILTER_VALUE / LIMIT_TOO_LARGE (400), RATE_LIMITED (429), QUERY_FAILED / COUNT_FAILED (500). ## Datasets ### CCRPI Climate Star Rating (`education/georgiainsights/ccrpi_climate_star_rating`) Georgia public schools' 1-5 School Climate Star Rating (a CCRPI component), school-level, 2014-2019 and 2024. - Source: Georgia Insights (GaDOE) (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2014–2024 (no data for 2020, 2021, 2022, 2023) - Detail levels: schools (default: schools) - Grain: one row per year, district_code, school_code - Key metric: `school_climate_star_rating` - Fact endpoint: `GET /api/v1/education/ccrpi_climate_star_rating` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/ccrpi_climate_star_rating · Contract: https://georgiacivicdata.org/api/v1/datasets/education/ccrpi_climate_star_rating/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (e.g., 2018 = 2017-2018). Sourced from the in-file Year / School Year column, not the filename — the 2014 data ships in a file named with its 04.14.15 publication date. Coverage: 2014-2019 and 2024 (2020-2023 absent; COVID CCRPI pause). | | `district_code` | string | fk_district | | | no | GOSA district code (FK to districts dimension): standard 3-digit codes zero-padded; 7-digit state-charter / state-school operator codes (e.g., '7820108') preserved in full. Non-NULL on every row — this topic is school-level only. | | `school_code` | string | fk_school | | | no | 4-digit GOSA school code, zero-padded (FK to schools dimension; composite key with district_code). The 2024 file ships bare integer codes ('100'), padded to align with prior years ('0100'). Non-NULL on every row. | | `school_climate_star_rating` | number | metric | rating | 1–5 | yes | Overall school climate rating from 1 (most in need of improvement) to 5 (excellent); NULL if not rated. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `schools` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/ccrpi_climate_star_rating` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/ccrpi_climate_star_rating?year=2024` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/ccrpi_climate_star_rating?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). ### CCRPI Content Mastery (`education/georgiainsights/ccrpi_content_mastery`) Georgia student proficiency scores on state assessments (the CCRPI Content Mastery component) by subject, grade cluster, and demographic subgroup, 2012-2025. - Source: Georgia Insights (GaDOE) (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2012–2025 (no data for 2020) - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic, grade_cluster, assessment_type, subject - Key metric: `indicator_score` - Fact endpoint: `GET /api/v1/education/ccrpi_content_mastery` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/ccrpi_content_mastery · Contract: https://georgiacivicdata.org/api/v1/datasets/education/ccrpi_content_mastery/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (2025 = 2024-2025). Sourced from the bronze `School Year` column, cross-checked against the filename year. 2020 does not exist (COVID pause). | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district code (zero-padded) for standard districts; 7-digit code for state-charter systems; the allowlisted pseudo-district code `RTC` (Residential Treatment Center aggregate, 2015-2017 only). NULL for state-level rows. FK to districts dimension. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (zero-padded; bronze strips leading zeros from some codes). NULL for district- and state-level rows. FK to schools dimension (composite key with district_code). | | `demographic` | string | fk_demographic | | | no | Which student group the row covers - `all`, a race, or a special population (economically disadvantaged, English learners, students with disabilities). | | `grade_cluster` | string | categorical | | | no | Grade band the row covers: elementary, middle, or high. | | `assessment_type` | string | categorical | | | yes | Which state testing program the score came from (CRCT/EOCT or EOG/EOC); NULL for 2018 and later. | | `subject` | string | categorical | | | no | Academic subject tested (e.g. mathematics, science); broad areas from 2018, more granular subjects before. | | `participation_rate` | number | metric | ratio | | yes | Share of eligible students assessed, 0-1 decimal scale. Bronze ships 0-100 in 2012-2017 and 2021-2022 (divided by 100 here) and 0-1 in 2018-2019 and 2023-2025 (passed through). 94 rows (21 in 2012, 73 in 2013; max 1.059/1.084 after scaling) legitimately exceed 1.0 — transfers-in inflated the tested/enrolled ratio before GaDOE began capping in 2014. Preserved verbatim, hence unit `ratio`, not `proportion`. State-level participation collapses to ~0.65 in 2021 (COVID-year testing disruption) versus ~0.98-0.99 in every other year — faithful to bronze, not a scaling artifact. | | `indicator_score` | number | metric | score | ≥ 0 | yes | Content-mastery proficiency score on a 0-100 scale (can exceed 100 in some years by design); NULL when suppressed. | | `pct_beginning_learner` | number | metric | proportion | | yes | Share of students at the Beginning Learner band, 0-1 scale (bronze 0-100 divided by 100). Published only for 2021-2022; NULL every other year. | | `pct_developing_learner` | number | metric | proportion | | yes | Share at the Developing Learner band, 0-1 scale. Published only for 2021-2022; NULL every other year. | | `pct_proficient_learner` | number | metric | proportion | | yes | Share at the Proficient Learner band, 0-1 scale. Published only for 2021-2022; NULL every other year. | | `pct_distinguished_learner` | number | metric | proportion | | yes | Share at the Distinguished Learner band, 0-1 scale. Published only for 2021-2022; NULL every other year. The four bands sum to 1.0 within rounding except for 146 defective 2021 source rows (worst sum 0.7646) — preserved as published. | | `pct_developing_learner_or_above` | number | metric | proportion | | yes | Derived cumulative: developing + proficient + distinguished, 0-1 scale, clipped at 1.0 (independent rounding can overshoot by up to 0.0002). NULL when any summand is NULL. Only populated for 2021-2022. | | `pct_proficient_learner_or_above` | number | metric | proportion | | yes | Derived cumulative: proficient + distinguished, 0-1 scale, clipped at 1.0. NULL when any summand is NULL. Only populated for 2021-2022. | | `indicator_target` | number | metric | score | 0–100 | yes | CCRPI improvement target on the same 0-100 scale as indicator_score (observed range [1.7, 95.0]; unlike indicator_score it is bounded at 100). Published only for 2018-2019 and 2023-2025. Every 2024 mathematics row is NULL by design — GaDOE computed no math targets during the new-math-standards rollout. NOT cross-topic comparable: each CCRPI topic's target inherits its companion metric's scale (§16). | | `ccrpi_flag` | string | categorical | | | yes | Performance color flag (green, green_star, yellow, red); published only 2018-2019 and 2023-2025. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `all`, `asian_pacific_islander`, `black`, `economically_disadvantaged`, `english_learners`, `hispanic`, `multiracial`, `native_american`, `students_with_disabilities`, `white` - `grade_cluster` — categorical (multi-value, enum-enforced): `elementary`, `high`, `middle` - `assessment_type` — categorical (multi-value, enum-enforced): `crct`, `eoc`, `eoct`, `eog` - `subject` — categorical (multi-value, enum-enforced): `9th_grade_literature_and_composition`, `algebra_i_coordinate_algebra`, `american_literature_and_composition`, `biology`, `economics_business_free_enterprise`, `english_language_arts`, `geometry_analytic_geometry`, `mathematics`, `mathematics_1`, `mathematics_2`, `physical_science`, `reading`, `science`, `social_studies`, `us_history` - `ccrpi_flag` — categorical (multi-value, enum-enforced): `green`, `green_star`, `red`, `yellow` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/ccrpi_content_mastery` - schools data for 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_content_mastery?year=2025` - Filtered to grade_cluster = elementary for 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_content_mastery?year=2025&grade_cluster=elementary` - One district (code 601), 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_content_mastery?district_code=601&year=2025&detail=districts` - Download 2025 as CSV: `https://georgiacivicdata.org/api/v1/education/ccrpi_content_mastery?year=2025&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### High School Graduation Rates (`education/georgiainsights/ccrpi_graduation_rate`) Georgia high school graduation rates by school, district, and demographic subgroup, 2012-2025. - Source: Georgia Insights (GaDOE) / GOSA (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2012–2025 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic, rate_type - Key metric: `graduation_rate` - Fact endpoint: `GET /api/v1/education/ccrpi_graduation_rate` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/ccrpi_graduation_rate · Contract: https://georgiacivicdata.org/api/v1/datasets/education/ccrpi_graduation_rate/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Graduation (cohort end) calendar year. For `4_year` rows, the spring the cohort was due to graduate; for `5_year` rows, the cohort's 4-year year + 1 had already passed (the rate is published one year later but keyed to the cohort year measured); for `on_time` rows, the SB 431 graduation year. Sourced from the bronze year column where one exists (CCRPI/legacy/on-time files; cross-checked against the filename) and from the filename for the standalone cohort releases. The February 2018 standalone release carries 2017-cohort data and lands in 2017. | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district code (zero-padded) for standard districts; 7-digit code for state-charter/state-school operators; the allowlisted pseudo-district code `RTC` (Residential Treatment Center aggregate, data years 2015-2018 only). NULL for state-level rows. FK to the districts dimension. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (zero-padded; later bronze years strip leading zeros). NULL for district- and state-level rows. FK to the schools dimension (composite key with district_code). | | `demographic` | string | fk_demographic | | | no | Student subgroup the row reports — race, gender, economic status, disability, and more; 'all' is the total. | | `rate_type` | string | categorical | | | no | Which graduation-rate methodology the row uses: 4-year cohort, 5-year cohort, or the SB 431 on-time rate. | | `graduation_rate` | number | metric | proportion | | yes | Share of the cohort that graduated, on a 0-1 scale; which methodology applies is set by rate_type. | | `num_cohort` | integer | metric | count | | yes | Published cohort denominator. For `4_year` rows: the federal adjusted cohort (first-time 9th graders four years prior, adjusted for transfers) from the standalone cohort releases — ALL-Students demographic only in 2015-2022/2024-2025, all 18 demographics in 2023 via the GOSA CSV. For `on_time` rows: `Total Enrolled` per SB 431 (continuous enrollment from Oct 1). Never published for `5_year` rows or the 2012-2014 legacy years. | | `num_graduates` | integer | metric | count | | yes | Published count of graduates (cohort numerator). Same source coverage as num_cohort. Never exceeds num_cohort (0 violations source-wide; enforced as a quality check). CAVEAT: published at a different cutoff than the CCRPI graduation_rate for 4-year rows — see graduation_rate. | | `indicator_target` | number | metric | proportion | | yes | CCRPI improvement target on the same 0-1 scale as graduation_rate (observed range [0.022, 0.9]). Published for 4-year and 5-year rows in 2018-2019 and 2023-2025 releases: years 2018, 2019, 2023, 2024 carry both rate types, 2022 carries 5-year only (the 2023 workbook's prior-year slice; the 2022 release itself omitted the column), 2025 carries 4-year only (its 5-year slice lands in 2024). 2020 is all NULL (COVID CCRPI suspension). NOT cross-topic comparable: each CCRPI topic's target inherits its companion metric's scale (§16). | | `ccrpi_flag` | string | categorical | | | yes | CCRPI performance color (green/yellow/red) for whether the school met its graduation improvement target. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `active_duty`, `all`, `asian_pacific_islander`, `black`, `economically_disadvantaged`, `english_learners`, `female`, `foster_care`, `hispanic`, `homeless`, `male`, `migrant`, `multiracial`, `native_american`, `not_economically_disadvantaged`, `students_with_disabilities`, `students_without_disabilities`, `white` - `rate_type` — categorical (multi-value, enum-enforced): `4_year`, `5_year`, `on_time` - `ccrpi_flag` — categorical (multi-value, enum-enforced): `green`, `red`, `yellow` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/ccrpi_graduation_rate` - schools data for 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_graduation_rate?year=2025` - Filtered to rate_type = 4_year for 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_graduation_rate?year=2025&rate_type=4_year` - One district (code 601), 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_graduation_rate?district_code=601&year=2025&detail=districts` - Download 2025 as CSV: `https://georgiacivicdata.org/api/v1/education/ccrpi_graduation_rate?year=2025&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### CCRPI Progress (`education/georgiainsights/ccrpi_progress`) Georgia student year-over-year growth scores (the CCRPI Progress component) by indicator, grade cluster, and demographic subgroup, 2018-2025. - Source: Georgia Insights (GaDOE) (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2018–2025 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic, grade_cluster, indicator - Key metric: `indicator_score` - Fact endpoint: `GET /api/v1/education/ccrpi_progress` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/ccrpi_progress · Contract: https://georgiacivicdata.org/api/v1/datasets/education/ccrpi_progress/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (2024 = 2023-2024). Sourced from the bronze `School Year` column, cross-checked against the filename year. | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district code (zero-padded) for standard districts; 7-digit code for state-charter systems. NULL for state-level aggregate rows. The bronze `ALL` sentinel (2021 state rows) becomes NULL. FK to districts dimension. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (zero-padded; some bronze years strip the leading zero, others pre-pad). NULL for district- and state-level aggregate rows (bronze encodes these as the literal `ALL` or a true null depending on year). FK to schools dimension (composite key with district_code). | | `demographic` | string | fk_demographic | | | no | Which student group the row covers - `all`, a race, or a special population; ELP rows are English-learners-only from 2019 on. | | `grade_cluster` | string | categorical | | | no | Grade band the row covers: elementary, middle, or high. | | `indicator` | string | categorical | | | no | Which growth measure the row reports: ELA growth, math growth, or progress toward English language proficiency. | | `ccrpi_flag` | string | categorical | | | yes | Improvement-target flag (green = met, yellow, red); set only on English-learner ELP-progress rows. | | `indicator_score` | number | metric | score | 0–100 | yes | Progress (growth) score on a 0-100 scale; NULL when suppressed or not applicable. | | `indicator_target` | number | metric | score | 0–100 | yes | ELP improvement target on the same 0-100 score scale as indicator_score. Populated ONLY on `progress_towards_elp` rows for the `english_learners` demographic in 2018, 2019, 2023, 2024, 2025 (Era B bronze has no target column; 2020 published none). Observed range 5.74-90. | | `pct_no_positive_movement` | number | metric | proportion | | yes | Share of English Learners with no positive ELP band movement. 0-1 decimal scale (bronze 0-100, divided by 100). Era B (2021-2022) only; 100% NULL in every Era A year. The four band columns partition the EL population (sum = 1.0 within rounding). | | `pct_moved_less_than_one_band` | number | metric | proportion | | yes | Share of English Learners whose ELP growth was positive but less than one band. 0-1 decimal scale (bronze 0-100, divided by 100). Era B (2021-2022) only; 100% NULL in every Era A year. | | `pct_moved_one_band` | number | metric | proportion | | yes | Share of English Learners who moved up exactly one ELP band. 0-1 decimal scale (bronze 0-100, divided by 100). Era B (2021-2022) only; 100% NULL in every Era A year. | | `pct_moved_more_than_one_band` | number | metric | proportion | | yes | Share of English Learners who moved up more than one ELP band. 0-1 decimal scale (bronze 0-100, divided by 100). Era B (2021-2022) only; 100% NULL in every Era A year. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `all`, `asian_pacific_islander`, `black`, `economically_disadvantaged`, `english_learners`, `hispanic`, `multiracial`, `native_american`, `students_with_disabilities`, `white` - `grade_cluster` — categorical (multi-value, enum-enforced): `elementary`, `high`, `middle` - `indicator` — categorical (multi-value, enum-enforced): `english_language_arts_growth`, `mathematics_growth`, `progress_towards_elp` - `ccrpi_flag` — categorical (multi-value, enum-enforced): `green`, `red`, `yellow` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/ccrpi_progress` - schools data for 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_progress?year=2025` - Filtered to grade_cluster = elementary for 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_progress?year=2025&grade_cluster=elementary` - One district (code 601), 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_progress?district_code=601&year=2025&detail=districts` - Download 2025 as CSV: `https://georgiacivicdata.org/api/v1/education/ccrpi_progress?year=2025&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### CCRPI Readiness (`education/georgiainsights/ccrpi_readiness`) Georgia school readiness scores (the CCRPI Readiness component) by indicator, sub-indicator, grade cluster, and demographic subgroup, 2018-2025. - Source: Georgia Insights (GaDOE) (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2018–2025 (no data for 2020) - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic, grade_cluster, indicator, sub_indicator - Key metric: `indicator_score` - Fact endpoint: `GET /api/v1/education/ccrpi_readiness` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/ccrpi_readiness · Contract: https://georgiacivicdata.org/api/v1/datasets/education/ccrpi_readiness/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (2024 = 2023-2024). Sourced from the bronze `School Year` column, cross-checked against the filename year. No 2020 partition exists — CCRPI was waived that year. | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district code (zero-padded) for standard districts; 7-digit code for state-charter systems (preserved in full, never truncated). NULL for state-level aggregate rows — the bronze `ALL` sentinel becomes NULL. FK to districts dimension. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (zero-padded). NULL for district- and state-level aggregate rows — the bronze `ALL` sentinel becomes NULL. FK to schools dimension (composite key with district_code). | | `demographic` | string | fk_demographic | | | no | Which student group the row covers - `all`, a race, or a special population; all 10 groups appear every year. | | `grade_cluster` | string | categorical | | | no | Grade band the row covers: elementary, middle, or high (some indicators exist only at certain bands). | | `indicator` | string | categorical | | | no | Which readiness measure the row reports (e.g. literacy, attendance, accelerated enrollment, pathway completion). | | `sub_indicator` | string | categorical | | | yes | Component within the parent indicator (2021 on); `all` is the rolled-up indicator score; NULL before 2021. | | `indicator_score` | number | metric | score | 0–100 | yes | Benchmarked readiness score on a 0-100 scale; NULL when suppressed or not applicable. | | `unbenchmarked_rate` | number | metric | proportion | | yes | Raw Accelerated Enrollment participation rate before CCRPI benchmark scaling, on the 0-1 decimal scale (bronze 0-100, divided by 100). Population pattern shifts mid-era (verified per year): 2021-2023 populate it ONLY on `accelerated_enrollment` rows; 2024-2025 populate every row, where non-AE values are a cell-identical redundant copy of `indicator_score` (divided by 100). Only `accelerated_enrollment` rows carry independent information; on AE rows the rate and the score are always co-published (co-null). | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `all`, `asian_pacific_islander`, `black`, `economically_disadvantaged`, `english_learners`, `hispanic`, `multiracial`, `native_american`, `students_with_disabilities`, `white` - `grade_cluster` — categorical (multi-value, enum-enforced): `elementary`, `high`, `middle` - `indicator` — categorical (multi-value, enum-enforced): `accelerated_enrollment`, `at_or_above_grade_level_reading`, `attendance`, `beyond_the_core`, `college_and_career_readiness`, `literacy`, `pathway_completion`, `student_attendance` - `sub_indicator` — categorical (multi-value, enum-enforced): `act_sat_ap_ib_cambridge`, `advanced_academic`, `advanced_placement`, `all`, `asvab`, `cambridge`, `career_exploratory`, `computer_science`, `ctae`, `dual_enrollment`, `eopa`, `fine_arts`, `international_baccalaureate`, `physical_education_health`, `tcsg_usg`, `work_based_learning`, `world_language` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/ccrpi_readiness` - schools data for 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_readiness?year=2025` - Filtered to grade_cluster = elementary for 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_readiness?year=2025&grade_cluster=elementary` - One district (code 601), 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_readiness?district_code=601&year=2025&detail=districts` - Download 2025 as CSV: `https://georgiacivicdata.org/api/v1/education/ccrpi_readiness?year=2025&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### CCRPI Scores and Components (`education/georgiainsights/ccrpi_scoring_by_component`) Georgia's overall CCRPI accountability score plus its component scores, by school, district, and state and grade cluster, 2012-2025. - Source: Georgia Insights (GaDOE) (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2012–2025 (no data for 2020, 2021) - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, grade_cluster - Key metric: `ccrpi_single_score` - Fact endpoint: `GET /api/v1/education/ccrpi_scoring_by_component` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/ccrpi_scoring_by_component · Contract: https://georgiacivicdata.org/api/v1/datasets/education/ccrpi_scoring_by_component/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (e.g., 2024 = 2023-2024). 2020 and 2021 are absent: Georgia paused CCRPI calculation during the COVID pandemic. Verified against each file's in-file School Year column. | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district code (zero-padded) for standard districts; 7-digit code for state-charter / state-school operators; the allowlisted pseudo-district code `RTC` (Residential Treatment Center aggregate, 2015-2017 only, district-level rows). NULL for state-level rows. FK to the districts dimension. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (zero-padded; 2017 and 2024 bronze ship un-padded values that zfill repairs). NULL for district- and state-level rows. FK to the schools dimension (composite key with district_code). | | `grade_cluster` | string | categorical | | | no | Grade band the row covers: elementary, middle, or high (a K-12 school appears in up to three rows per year). | | `achievement_points` | number | metric | score | | yes | CCRPI Achievement points (points era 2012-2017 only; observed range 2.6-59.9, max ~60 by design). NULL for all 2018+ rows. Co-null with etb_points and challenge_points on every points-era row (enforced as a quality check). | | `progress_points` | number | metric | score | | yes | CCRPI Progress points (points era 2012-2017 only). CAVEAT: the Progress component was redesigned for 2015 — max ~22 in 2012-2014 vs max 40 in 2015-2017 — under the same bronze column; values are preserved verbatim, so period-over-period comparisons must stay within one sub-era. NULL for all 2018+ rows. | | `achievement_gap_points` | number | metric | score | | yes | CCRPI Achievement Gap points (points era 2012-2017 only). Cap changed mid-era: max 15 in 2012-2014, max 10 in 2015-2017 (verified per year in bronze). NULL for all 2018+ rows. | | `ed_el_swd_performance` | number | metric | score | | yes | Economically Disadvantaged / English Learner / Students With Disabilities subgroup performance points (points era 2012-2017 only; range 0-10). The points-era predecessor of the score-era closing_gaps subgroup component — measured on a different scale and NOT comparable to it. NULL for all 2018+ rows. | | `etb_points` | number | metric | score | | yes | Exceeding the Bar bonus points (points era 2012-2017 only). Cap drifts by framework: max 2.0 in 2012-2013, 3.0 in 2014, 2.5 in 2015-2017. NULL for all 2018+ rows. | | `challenge_points` | number | metric | score | | yes | Challenge bonus points (points era 2012-2017 only; range 0-10): the bonus bucket added on top of the three base components, predominantly ED/EL/SWD performance + ETB points. Participates in the exact identity achievement_points + progress_points + achievement_gap_points + challenge_points = ccrpi_score (0 violations source-wide; enforced as a quality check). NULL for all 2018+ rows. | | `content_mastery` | number | metric | score | 0–100 | yes | CCRPI Content Mastery component score, 0-100 scale (score columns are exempt from the 0-1 percentage convention; components are capped at 100 by GaDOE rules — verified [0, 100] in every year). Score era (2018+) only; NULL for all 2012-2017 rows. | | `progress` | number | metric | score | 0–100 | yes | CCRPI Progress component score, 0-100 scale. Score era (2018+) only; NULL for all 2012-2017 rows and 100% NULL in 2022 (federally-approved one-year COVID modification suspended the component; bronze ships blanket `NA`). | | `closing_gaps` | number | metric | score | 0–100 | yes | CCRPI Closing Gaps component score, 0-100 scale — the score-era successor of the points-era ed_el_swd_performance subgroup metric (different scale, not comparable). Score era (2018+) only; NULL for all 2012-2017 rows and 100% NULL in 2022 (COVID modification). | | `readiness` | number | metric | score | 0–100 | yes | CCRPI Readiness component score, 0-100 scale. Score era (2018+) only; NULL for all 2012-2017 rows. The only score component published for every cluster in 2022. | | `graduation_rate` | number | metric | proportion | | yes | CCRPI Graduation Rate component on the 0-1 decimal scale (bronze ships 0-100; divided by 100 per the rate-column standard — the only rescaled column in this topic). Score era (2018+) only, and non-NULL exclusively on `high` grade-cluster rows in every year (verified; enforced as a quality check). | | `ccrpi_score` | number | metric | score | | yes | Aggregated per-cluster CCRPI score on a 0-100 scale. Legitimately exceeds 100 in the points era via ETB / Challenge bonus points (observed max 110.3 in 2016; by design, not capped — hence no contract bounds). In the points era it equals achievement_points + progress_points + achievement_gap_points + challenge_points exactly (quality-checked). Published 2012-2019; 100% NULL for 2022 (COVID modification) and 2023+ (column dropped at source). | | `ccrpi_single_score` | number | metric | score | | yes | The entity's overall CCRPI accountability score on a 0-100 scale; published 2012-2019, NULL from 2022 on. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `grade_cluster` — categorical (multi-value, enum-enforced): `elementary`, `high`, `middle` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/ccrpi_scoring_by_component` - schools data for 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_scoring_by_component?year=2025` - Filtered to grade_cluster = elementary for 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_scoring_by_component?year=2025&grade_cluster=elementary` - One district (code 601), 2025: `https://georgiacivicdata.org/api/v1/education/ccrpi_scoring_by_component?district_code=601&year=2025&detail=districts` - Download 2025 as CSV: `https://georgiacivicdata.org/api/v1/education/ccrpi_scoring_by_component?year=2025&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### March Enrollment by Race and Gender (`education/georgiainsights/enrollment_march_gender_race_ethnicity`) Public school student headcounts by race/ethnicity and gender from the March FTE count, per school, district, and state, 2010-2025. - Source: Georgia Insights (GaDOE) (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2010–2025 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, race, gender - Key metric: `num_students` - Fact endpoint: `GET /api/v1/education/enrollment_march_gender_race_ethnicity` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/enrollment_march_gender_race_ethnicity · Contract: https://georgiacivicdata.org/api/v1/datasets/education/enrollment_march_gender_race_ethnicity/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Fiscal year of the March FTE count (2025 = March 2025, i.e. the 2024-2025 school year). Sourced from the bronze filename, cross-checked against each file's preamble. | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district code (zero-padded) for standard districts; 7-digit code for state charters. NULL for state-level rows. FK to districts dimension. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code, extracted from the bronze `School ID` (`NNNN-Name`) prefix. NULL for state- and district-level rows. FK to schools dimension (composite key with district_code). | | `race` | string | categorical | | | no | One of seven mutually exclusive race/ethnicity buckets; Hispanic is a separate bucket, not a race overlay. | | `gender` | string | categorical | | | no | Student gender, female or male; the source's redundant Total rows are dropped. | | `num_students` | integer | metric | count | | yes | FTE student headcount for the race x gender cell; NULL means suppressed (small cell), not zero. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `race` — categorical (multi-value, enum-enforced): `asian`, `black`, `hispanic`, `multiracial`, `native_american`, `pacific_islander`, `white` - `gender` — categorical (multi-value, enum-enforced): `female`, `male` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/enrollment_march_gender_race_ethnicity` - schools data for 2025: `https://georgiacivicdata.org/api/v1/education/enrollment_march_gender_race_ethnicity?year=2025` - Filtered to race = asian for 2025: `https://georgiacivicdata.org/api/v1/education/enrollment_march_gender_race_ethnicity?year=2025&race=asian` - One district (code 601), 2025: `https://georgiacivicdata.org/api/v1/education/enrollment_march_gender_race_ethnicity?district_code=601&year=2025&detail=districts` - Download 2025 as CSV: `https://georgiacivicdata.org/api/v1/education/enrollment_march_gender_race_ethnicity?year=2025&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### Special Education Enrollment by Disability (`education/georgiainsights/enrollment_october_disability`) District-level headcounts of students in special education by the 17 IDEA disability categories, from the October FTE count, 2014-2026. - Source: Georgia Insights (GaDOE) (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2014–2026 - Detail levels: districts (default: districts) - Grain: one row per year, district_code, school_code, demographic - Key metric: `num_students` - Fact endpoint: `GET /api/v1/education/enrollment_october_disability` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/enrollment_october_disability · Contract: https://georgiacivicdata.org/api/v1/datasets/education/enrollment_october_disability/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Fiscal year of the October FTE count (2026 = October 2025, i.e. the 2025-2026 school year). Sourced from the bronze filename, cross-checked against each file's preamble. | | `district_code` | string | fk_district | | | no | 3-digit GOSA district code (zero-padded) for standard districts; 7-digit code for state charters and specialty schools, including the 2014-2019 pseudo-districts 7991893/7991894/7991895 for the three state schools (published with blank names by the source; named in the districts dimension). Never NULL — this topic has no state-level rows. FK to districts dimension. | | `school_code` | string | fk_school | | | yes | Always NULL — GaDOE publishes this disability breakdown at the district level only. The column is kept so every education fact table shares the same key-column shape. | | `demographic` | string | fk_demographic | | | no | One of 17 IDEA disability categories (e.g. autism, specific learning disability); no `all` total row. | | `num_students` | integer | metric | count | | yes | Count of special-education students in the disability category; NULL means suppressed (count 1-9), not zero. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `autism`, `blind_low_vision`, `deaf`, `deaf_blind`, `emotional_behavioral_disorder`, `hospital_homebound`, `mild_intellectual_disability`, `moderate_intellectual_disability`, `orthopedic_impairment`, `other_health_impairment`, `profound_intellectual_disability`, `severe_intellectual_disability`, `significant_developmental_delay`, `specific_learning_disability`, `speech_language_impairment`, `traumatic_brain_injury`, `visual_impairment` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), districts level: `https://georgiacivicdata.org/api/v1/education/enrollment_october_disability` - districts data for 2026: `https://georgiacivicdata.org/api/v1/education/enrollment_october_disability?year=2026` - One district (code 601), 2026: `https://georgiacivicdata.org/api/v1/education/enrollment_october_disability?district_code=601&year=2026&detail=districts` - Download 2026 as CSV: `https://georgiacivicdata.org/api/v1/education/enrollment_october_disability?year=2026&format=csv` Limitations: Suppressed cells are NULL (not zero). District rows have NULL school_code. ### October Enrollment by Race and Gender (`education/georgiainsights/enrollment_october_gender_race_ethnicity`) Public school student headcounts by race/ethnicity and gender from the October FTE count, per school, district, and state, 2010-2026. - Source: Georgia Insights (GaDOE) (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2010–2026 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, race, gender - Key metric: `num_students` - Fact endpoint: `GET /api/v1/education/enrollment_october_gender_race_ethnicity` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/enrollment_october_gender_race_ethnicity · Contract: https://georgiacivicdata.org/api/v1/datasets/education/enrollment_october_gender_race_ethnicity/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Fiscal year of the October FTE count (2026 = October 2025, i.e. the 2025-2026 school year). Sourced from the bronze filename, cross-checked against each file's preamble. | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district code (zero-padded) for standard districts; 7-digit code for state charters. NULL for state-level rows. FK to districts dimension. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code, extracted from the bronze `School ID` (`NNNN-Name`) prefix. NULL for state- and district-level rows. FK to schools dimension (composite key with district_code). | | `race` | string | categorical | | | no | One of seven mutually exclusive race/ethnicity buckets; Hispanic is a separate bucket, not a race overlay. | | `gender` | string | categorical | | | no | Student gender, female or male; the source's redundant Total rows are dropped. | | `num_students` | integer | metric | count | | yes | FTE student headcount for the race x gender cell; NULL means suppressed (small cell), not zero. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `race` — categorical (multi-value, enum-enforced): `asian`, `black`, `hispanic`, `multiracial`, `native_american`, `pacific_islander`, `white` - `gender` — categorical (multi-value, enum-enforced): `female`, `male` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/enrollment_october_gender_race_ethnicity` - schools data for 2026: `https://georgiacivicdata.org/api/v1/education/enrollment_october_gender_race_ethnicity?year=2026` - Filtered to race = asian for 2026: `https://georgiacivicdata.org/api/v1/education/enrollment_october_gender_race_ethnicity?year=2026&race=asian` - One district (code 601), 2026: `https://georgiacivicdata.org/api/v1/education/enrollment_october_gender_race_ethnicity?district_code=601&year=2026&detail=districts` - Download 2026 as CSV: `https://georgiacivicdata.org/api/v1/education/enrollment_october_gender_race_ethnicity?year=2026&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### Free and Reduced-Price Lunch Eligibility (`education/georgiainsights/free_reduced_lunch`) Share of K-12 students eligible for free or reduced-price lunch, a proxy for economic disadvantage, per school, district, and state, 2013-2026. - Source: Georgia Insights (GaDOE) — Free and Reduced Price Meal Eligibility (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2013–2026 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, reporting_status - Key metric: `free_reduced_lunch_rate` - Fact endpoint: `GET /api/v1/education/free_reduced_lunch` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/free_reduced_lunch · Contract: https://georgiacivicdata.org/api/v1/datasets/education/free_reduced_lunch/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Georgia fiscal year = ending calendar year of the school year (2024 = the 2023-2024 school year; Georgia FY ends June 30). Sourced from the bronze filename, cross-checked against each file's preamble. | | `district_code` | string | fk_district | | | yes | GaDOE district/system code (FK to districts dimension). Standard county/city systems are 3-digit zero-padded codes; state-specialty and charter systems use 7-digit codes. NULL for state-level rows. | | `school_code` | string | fk_school | | | yes | 4-digit GaDOE school code, extracted from the bronze composite `School ID - School Name` column (FK to schools dimension, composite with district_code — the same school_code can appear in multiple districts). NULL for district- and state-level rows. | | `reporting_status` | string | categorical | | | yes | Why the rate is present or NULL: reported, privacy-suppressed (rate >95% or <5%), or not participating. | | `free_reduced_lunch_rate` | number | metric | proportion | | yes | Share of K-12 students eligible for free/reduced-price lunch on a 0-1 scale; NULL means suppressed or not participating (see reporting_status). | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `reporting_status` — categorical (multi-value, enum-enforced): `not_participating`, `reported`, `suppressed_privacy_band` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/free_reduced_lunch` - schools data for 2026: `https://georgiacivicdata.org/api/v1/education/free_reduced_lunch?year=2026` - Filtered to reporting_status = not_participating for 2026: `https://georgiacivicdata.org/api/v1/education/free_reduced_lunch?year=2026&reporting_status=not_participating` - One district (code 601), 2026: `https://georgiacivicdata.org/api/v1/education/free_reduced_lunch?district_code=601&year=2026&detail=districts` - Download 2026 as CSV: `https://georgiacivicdata.org/api/v1/education/free_reduced_lunch?year=2026&format=csv` Limitations: free_reduced_lunch_rate is NULL whenever the source did not publish a numeric rate; the reporting_status column records WHY. Bronze `*` (reporting_status='suppressed_privacy_band') is a dual-ended PRIVACY suppression — it means the rate was greater than 95% or less than 5%, so a suppressed entity cannot be inferred to be at either the high or the low end. Consequently, every published (non-null) rate falls within the [0.05, 0.95] band. Bronze `#` (and the rare `NA`, FY2016 only) (reporting_status='not_participating') means the entity does not participate in the FRL program at all — under the Community Eligibility Provision (CEP), many high-poverty schools show `#` because meals are universal rather than means-tested, so a `#` does NOT imply low poverty. State rows come exclusively from the District CSV's `State-Wide Total` row; School files carry no state aggregate. FY2025-FY2026 show substantially elevated `*` suppression (expanded CEP coverage). This is the broad income-based FRL eligibility measure (free <=130% FPL, reduced 130-185%); the automatic categorical subset is the companion direct_certification topic. ### Georgia Milestones End-of-Course (EOC) Results (`education/georgiainsights/georgia_milestones_end_of_course`) Georgia Milestones high-school end-of-course test results by school, district, and subject, 2015-2025. - Source: Georgia Insights (GaDOE) — Georgia Milestones End-of-Course Assessment (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2015–2025 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, administration, subject - Key metric: `avg_scale_score` - Fact endpoint: `GET /api/v1/education/georgia_milestones_end_of_course` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/georgia_milestones_end_of_course · Contract: https://georgiacivicdata.org/api/v1/datasets/education/georgia_milestones_end_of_course/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (e.g., 2024 = school year 2023-2024). Winter administrations are stored under the school year they fall inside: Winter 2014 EOC is the 2014-2015 mid-year retest, stored as year=2015. | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district/system code (FK to districts dimension). School-level rows for State/Commission Charter campuses use the 7-digit campus code (system 782/783 + school code) — 2015-2017 bronze published those rows under the bare system code and they are promoted here. NULL for state-level rows. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (FK to schools dimension, composite with district_code). NULL for district- and state-level rows. | | `administration` | string | categorical | | | no | Which test window the row covers: winter retest, spring primary, or the full-year aggregate. | | `subject` | string | categorical | | | no | The high-school course tested (e.g. biology, us_history, american_literature_and_composition). | | `num_tested` | integer | metric | count | | yes | Number of students tested. Never suppressed by the source — non-null on every row. | | `avg_scale_score` | number | metric | score | 140–820 | yes | Average end-of-course scale score (about 400-650 in practice); higher means stronger performance. | | `scale_score_std_dev` | number | metric | | | yes | Standard deviation of the scale scores — a dispersion measure, NOT a bounded score. Units are scale-score points; the value is always >= 0. Exempt from unit/range checks (it has no fixed upper bound). Published only by Spring 2015 system-level files, Winter 2021 files, and every file from Spring 2022 onward; NULL elsewhere. | | `pct_beginning_learner` | number | metric | proportion | | yes | Share of tested students at the Beginning Learner level (0-1 scale; bronze 0-100 divided by 100). | | `pct_developing_learner` | number | metric | proportion | | yes | Share at Developing Learner (0-1 scale). | | `pct_proficient_learner` | number | metric | proportion | | yes | Share at Proficient Learner (0-1 scale). | | `pct_distinguished_learner` | number | metric | proportion | | yes | Share at Distinguished Learner (0-1 scale). | | `pct_developing_learner_or_above` | number | metric | proportion | | yes | Share at Developing Learner or higher (= developing + proficient + distinguished). Published by the source and preserved verbatim rather than re-derived. | | `pct_proficient_learner_or_above` | number | metric | proportion | | yes | Share at Proficient Learner or higher (= proficient + distinguished). Published by the source and preserved verbatim. | | `pct_below_grade_level_lexile` | number | metric | proportion | | yes | Reading Status: share of tested students reading below the course's Lexile threshold. Populated only for literature subjects. The threshold is per course, not per year: 9th Grade Literature uses 1050L (reported 2018-2020) and American Literature 1185L (reported 2018 onward; the 2018-2020 American Literature files label the threshold 1050L in their headers but the course moved to 1185L from 2021). | | `pct_grade_level_or_above_lexile` | number | metric | proportion | | yes | Reading Status: share reading at or above the Lexile threshold; complement of pct_below_grade_level_lexile. Populated only for literature subjects. | | `num_sgp_received` | integer | metric | count | | yes | Number of tested students who received a Student Growth Percentile. SGP columns exist in the source layout from Spring 2024, but the 2024 Algebra CC sheets are empty templates — populated data starts with the 2024-2025 school year (year=2025) for algebra_concepts_and_connections and american_literature_and_composition. NULL elsewhere. | | `sgp_median` | number | metric | percentile | | yes | Median Student Growth Percentile (1-99 percentile rank, preserved on its natural scale per data-cleaning-standards §4). Float64 because 2025 bronze publishes half-point medians (e.g. 61.5). | | `pct_sgp_low_growth` | number | metric | proportion | | yes | Share of SGP-scored students in the Low Growth band (0-1 scale). | | `pct_sgp_typical_growth` | number | metric | proportion | | yes | Share in the Typical Growth band (0-1 scale). | | `pct_sgp_high_growth` | number | metric | proportion | | yes | Share in the High Growth band (0-1 scale). | | `enrolled_tested_rate` | number | metric | proportion | | yes | Share of enrolled students who actually tested. Published ONLY by the Full-Year 2020-2021 files (COVID participation year); NULL for every other administration. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `administration` — categorical (multi-value, enum-enforced): `winter`, `spring`, `full_year` - `subject` — categorical (multi-value, enum-enforced): `9th_grade_literature_and_composition`, `algebra_concepts_and_connections`, `algebra_i`, `american_literature_and_composition`, `analytic_geometry`, `biology`, `coordinate_algebra`, `economics_business_free_enterprise`, `geometry`, `physical_science`, `us_history` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course` - schools data for 2025: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course?year=2025` - Filtered to administration = winter for 2025: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course?year=2025&administration=winter` - One district (code 601), 2025: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course?district_code=601&year=2025&detail=districts` - Download 2025 as CSV: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course?year=2025&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### Georgia Milestones End-of-Grade (EOG) Results (`education/georgiainsights/georgia_milestones_end_of_grade`) Georgia Milestones grades 3-8 test results by school, district, grade, and subject, 2015-2025. - Source: Georgia Insights (GaDOE) — Georgia Milestones End-of-Grade Assessment (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2015–2025 (no data for 2020) - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, grade_level, subject, assessment_type - Key metric: `avg_scale_score` - Fact endpoint: `GET /api/v1/education/georgia_milestones_end_of_grade` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/georgia_milestones_end_of_grade · Contract: https://georgiacivicdata.org/api/v1/datasets/education/georgia_milestones_end_of_grade/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (e.g., 2025 = school year 2024-2025). 2020 is absent — the COVID-19 pandemic cancelled the administration. | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district/system code (FK to districts dimension). 7-digit charter / state-school campus codes are preserved in full; 2015 school-level rows published under the bare charter SYSTEM codes 782/783 are promoted to the 7-digit campus code (system + school code), and the 2015 shared state-school code 799 is remapped to the unique 7991893/7991894/7991895 codes used from 2016. NULL for state-level rows. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (FK to schools dimension, composite with district_code). NULL for district- and state-level rows. | | `grade_level` | string | categorical | | | no | Tested grade, 03 through 08 (Milestones EOG covers only grades 3-8). | | `subject` | string | categorical | | | no | The content area tested (english_language_arts, mathematics, science, social_studies, physical_science). | | `assessment_type` | string | categorical | | | no | Marks regular EOG vs the 2016-2021 early end-of-course variants; use eog for year-over-year comparisons. | | `num_tested` | integer | metric | count | | yes | Number of students who took the test. NULL when the source suppresses the cell ('--') for small populations. | | `avg_scale_score` | number | metric | score | 140–830 | yes | Average end-of-grade scale score (140-830 scale); higher means stronger performance. | | `scale_score_std_dev` | number | metric | | | yes | Standard deviation of the scale scores — a dispersion measure, NOT a bounded score. Units are scale-score points; the value is always >= 0. Exempt from unit/range checks (it has no fixed upper bound). Published from 2022 onward; NULL for all earlier years. | | `pct_beginning_learner` | number | metric | proportion | | yes | Share of tested students at the Beginning Learner level (0-1 decimal scale; bronze 0-100 divided by 100). | | `pct_developing_learner` | number | metric | proportion | | yes | Share at Developing Learner (0-1 scale). | | `pct_proficient_learner` | number | metric | proportion | | yes | Share at Proficient Learner (0-1 scale). | | `pct_distinguished_learner` | number | metric | proportion | | yes | Share at Distinguished Learner (0-1 scale). | | `pct_developing_learner_or_above` | number | metric | proportion | | yes | Share at Developing Learner or higher (= developing + proficient + distinguished). Published by the source and preserved verbatim rather than re-derived. | | `pct_proficient_learner_or_above` | number | metric | proportion | | yes | Share at Proficient Learner or higher (= proficient + distinguished). Published by the source and preserved verbatim. | | `pct_below_grade_level_lexile` | number | metric | proportion | | yes | Reading Status: share of ELA test takers reading BELOW the grade-specific Lexile threshold (2018 onward). Populated only on english_language_arts rows. The threshold is 520L / 740L / 830L / 925L / 970L / 1010L for grades 3 / 4 / 5 / 6 / 7 / 8 — documented here rather than encoded in the column name so the schema stays grade-agnostic. | | `pct_grade_level_or_above_lexile` | number | metric | proportion | | yes | Reading Status: share of ELA test takers reading at or above the grade-specific Lexile threshold; complement of pct_below_grade_level_lexile. Populated only on english_language_arts rows (2018 onward). | | `enrolled_tested_rate` | number | metric | proportion | | yes | Share of enrolled students who actually tested. Published ONLY by the 2021 files (testing was optional during COVID, so participation is essential context); NULL for every other year. The 2021 grade-8 system file leaves this sub-header blank in the ELA-EOG block (a merged-cell artifact); the transform repairs the header so the published participation rates are preserved. | | `num_sgp_received` | integer | metric | count | | yes | Number of students with a Student Growth Percentile. Populated only on english_language_arts / mathematics rows at grades 4-8 from 2024 onward. Counted on the SGP-scored subset of test takers — distinct from num_tested. NULL elsewhere. | | `sgp_median` | number | metric | percentile | | yes | Median Student Growth Percentile (1-99 percentile rank, preserved on its natural scale per data-cleaning-standards §4). Float64 because even-population groups yield half-integer medians. | | `pct_sgp_low_growth` | number | metric | proportion | | yes | Share of SGP-scored students in the Low Growth band (0-1 scale). | | `pct_sgp_typical_growth` | number | metric | proportion | | yes | Share in the Typical Growth band (0-1 scale). | | `pct_sgp_high_growth` | number | metric | proportion | | yes | Share in the High Growth band (0-1 scale). | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `grade_level` — categorical (multi-value, enum-enforced): `03`, `04`, `05`, `06`, `07`, `08` - `subject` — categorical (multi-value, enum-enforced): `english_language_arts`, `mathematics`, `science`, `social_studies`, `physical_science` - `assessment_type` — categorical (multi-value, enum-enforced): `eog`, `eoc`, `eog_and_eoc_combined` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade` - schools data for 2025: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade?year=2025` - Filtered to grade_level = 03 for 2025: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade?year=2025&grade_level=03` - One district (code 601), 2025: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade?district_code=601&year=2025&detail=districts` - Download 2025 as CSV: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade?year=2025&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### Student Growth Model (SGM) End-of-Course Results (`education/georgiainsights/georgia_student_growth_model_end_of_course`) Student growth percentiles on Georgia Milestones end-of-course tests by school, district, and subject, 2015-2023. - Source: Georgia Insights (GaDOE) — Georgia Student Growth Model on End-of-Course assessments (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2015–2023 (no data for 2020, 2021, 2022) - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, subject - Key metric: `sgp_median` - Fact endpoint: `GET /api/v1/education/georgia_student_growth_model_end_of_course` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/georgia_student_growth_model_end_of_course · Contract: https://georgiacivicdata.org/api/v1/datasets/education/georgia_student_growth_model_end_of_course/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (e.g., 2017 = school year 2016-2017). Published years: 2015-2019 and 2023 (the Full-Year 2022-2023 report). No 2020-2022 data exists. | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district/system code (FK to districts dimension). School-level rows for State/Commission Charter campuses use the 7-digit campus code (system 782/783 + school code) — the 2015-2017 School files published those rows under the bare system code inside the compound Key and they are promoted here. NULL for state-level rows. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (FK to schools dimension, composite with district_code). NULL for district- and state-level rows. | | `subject` | string | categorical | | | no | The end-of-course subject (e.g. algebra_i, biology, american_literature_and_composition). | | `num_tested` | integer | metric | count | | yes | Number of students who took the EOC assessment. Never suppressed where published. NULL in 2023 (the Full-Year 2022-2023 report does not publish tested counts). | | `num_sgp_received` | integer | metric | count | | yes | Number of students with enough prior-year scores to receive a Student Growth Percentile (a subset of num_tested). Suppressed (NULL) for small cohorts in the 2019 files only. | | `sgp_received_rate` | number | metric | proportion | | yes | Share of tested students who received an SGP (num_sgp_received / num_tested), 0-1 scale (bronze 0-100 divided by 100). NULL in 2023 (not reported). | | `sgp_median` | number | metric | percentile | 1–99 | yes | Median student growth percentile (1-99); 50 is average growth, higher means faster growth than similar peers. | | `pct_proficient_learner_or_above` | number | metric | proportion | | yes | Share of tested students at the Proficient Learner achievement level or higher on the EOC assessment itself (0-1 scale). Published 2015-2019 only; NULL in 2023. The 9999 sentinel note on sgp_median also applies (11 NULLed values in 2016 Physical Science system rows). | | `pct_developing_learner_or_above` | number | metric | proportion | | yes | Share of tested students at the Developing Learner achievement level or higher on the EOC assessment (0-1 scale). Published 2015-2019 only; NULL in 2023. | | `pct_sgp_typical_or_high_growth` | number | metric | proportion | | yes | Share of SGP-scored students with SGP >= 35 (Typical or High growth), 0-1 scale. Published 2015-2019 only — 2023 replaces it with the three-band split. NOT equal to pct_sgp_typical_growth, which excludes High. | | `pct_sgp_low_growth` | number | metric | proportion | | yes | Share of SGP-scored students in the Low Growth band (SGP < 35), 0-1 scale. 2023 only; NULL for 2015-2019. | | `pct_sgp_typical_growth` | number | metric | proportion | | yes | Share of SGP-scored students in the Typical Growth band (35 <= SGP <= 65), 0-1 scale. 2023 only; NULL for 2015-2019. Excludes High growth — not comparable to pct_sgp_typical_or_high_growth. | | `pct_sgp_high_growth` | number | metric | proportion | | yes | Share of SGP-scored students in the High Growth band (SGP > 65), 0-1 scale. 2023 only; NULL for 2015-2019. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `subject` — categorical (multi-value, enum-enforced): `9th_grade_literature_and_composition`, `algebra_i`, `american_literature_and_composition`, `analytic_geometry`, `biology`, `coordinate_algebra`, `economics_business_free_enterprise`, `geometry`, `physical_science`, `us_history` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_course` - schools data for 2023: `https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_course?year=2023` - Filtered to subject = 9th_grade_literature_and_composition for 2023: `https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_course?year=2023&subject=9th_grade_literature_and_composition` - One district (code 601), 2023: `https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_course?district_code=601&year=2023&detail=districts` - Download 2023 as CSV: `https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_course?year=2023&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### Student Growth Model (SGM) End-of-Grade Results (`education/georgiainsights/georgia_student_growth_model_end_of_grade`) Student growth percentiles on Georgia Milestones grades 4-8 tests by school, district, grade, and subject, 2015-2023. - Source: Georgia Insights (GaDOE) — Georgia Student Growth Model on End-of-Grade Milestones assessments (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2015–2023 (no data for 2020, 2021, 2022) - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, grade_level, subject - Key metric: `sgp_median` - Fact endpoint: `GET /api/v1/education/georgia_student_growth_model_end_of_grade` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/georgia_student_growth_model_end_of_grade · Contract: https://georgiacivicdata.org/api/v1/datasets/education/georgia_student_growth_model_end_of_grade/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (spring year). E.g., 2017 = school year 2016-2017. Data published years are 2015, 2016, 2017, 2018, 2019, 2023. | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district/system code (FK to districts dimension). 7-digit charter / state-school codes are preserved in full; 2015-2017 school-level rows published under the bare charter SYSTEM codes 782/783 are promoted to the 7-digit campus code (system + school code) used by 2018+ files. NULL for state-level rows. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (FK to schools dimension, composite with district_code). NULL for district- and state-level rows. | | `grade_level` | string | categorical | | | no | Grade tested, 04 through 08 (grade 3 has no prior score for growth); 'all' is the across-grades aggregate. | | `subject` | string | categorical | | | no | The content area tested (english_language_arts, mathematics, science, social_studies). | | `num_tested` | integer | metric | count | | yes | Number of students who took the EOG assessment. NULL in 2023 (Era 6 does not report this column — see bronze-data-structure.md §Era 6). | | `num_sgp_received` | integer | metric | count | | yes | Number of students with enough prior-year scores to receive a Student Growth Percentile (subset of num_tested in 2015-2019; the only count metric reported in 2023). | | `sgp_received_rate` | number | metric | proportion | | yes | Share of tested students who received an SGP (num_sgp_received / num_tested). 0-1 decimal scale. NULL in 2023 (not reported). | | `sgp_median` | number | metric | percentile | 1–99 | yes | Median student growth percentile (1-99); 50 is average growth, higher means faster growth than similar peers. | | `pct_proficient_learner_or_above` | number | metric | proportion | | yes | Share of students at the Proficient Learner achievement level or higher on the EOG assessment (0-1 scale; bronze / 100). NULL in 2023 (metric dropped). | | `pct_developing_learner_or_above` | number | metric | proportion | | yes | Share of students at the Developing Learner achievement level or higher on the EOG assessment (0-1 scale; bronze / 100). NULL in 2023 (metric dropped). | | `pct_sgp_typical_or_high_growth` | number | metric | proportion | | yes | Share of SGP-scored students with SGP >= 35 (Typical or High growth). 0-1 scale. NULL in 2023 — Era 6 replaced this with the three-bucket SGP split below. | | `pct_sgp_low_growth` | number | metric | proportion | | yes | Share of SGP-scored students in the Low Growth band (SGP < 35). 0-1 scale. Era 6 (2023) only; NULL for 2015-2019. | | `pct_sgp_typical_growth` | number | metric | proportion | | yes | Share of SGP-scored students in the Typical Growth band (35 <= SGP <= 65). 0-1 scale. Era 6 only; NULL for 2015-2019. NOT the same as pct_sgp_typical_or_high_growth — Era 1-5's `% Typical or High` lumps typical and high together (SGP >= 35). | | `pct_sgp_high_growth` | number | metric | proportion | | yes | Share of SGP-scored students in the High Growth band (SGP > 65). 0-1 scale. Era 6 only; NULL for 2015-2019. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `grade_level` — categorical (multi-value, enum-enforced): `all`, `04`, `05`, `06`, `07`, `08` - `subject` — categorical (multi-value, enum-enforced): `english_language_arts`, `mathematics`, `science`, `social_studies` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_grade` - schools data for 2023: `https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_grade?year=2023` - Filtered to grade_level = 04 for 2023: `https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_grade?year=2023&grade_level=04` - One district (code 601), 2023: `https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_grade?district_code=601&year=2023&detail=districts` - Download 2023 as CSV: `https://georgiacivicdata.org/api/v1/education/georgia_student_growth_model_end_of_grade?year=2023&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### CCRPI Pathway Completion Rates (`education/georgiainsights/pathway_graduation_rate`) Share of each graduating cohort completing a course pathway in four elective areas, by school and district, 2021-2024. - Source: Georgia Insights (GaDOE) (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2021–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code - Key metric: `ctae_pathway_rate` - Fact endpoint: `GET /api/v1/education/pathway_graduation_rate` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/pathway_graduation_rate · Contract: https://georgiacivicdata.org/api/v1/datasets/education/pathway_graduation_rate/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Cohort graduation year (e.g., 2024 = the 2023-2024 graduating cohort). Sourced from the in-file COHORT YEAR column, which equals the filename year in every bronze file. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension). Standard 3-digit codes are zero-padded; 7-digit state-charter network codes (e.g., '7820120') pass through unchanged. NULL on the state-level aggregate row. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (FK to schools dimension; composite key with district_code). Bronze 2021-2023 files mix 3- and 4-char school IDs; 3-char codes are zero-padded to align with 2024's uniformly 4-char format ('195' -> '0195'). NULL on state- and district-level aggregate rows. | | `advanced_academic_pathway_rate` | number | metric | proportion | | yes | Share of the graduating cohort who completed an Advanced Academic pathway (AP, IB, or dual enrollment), 0-1 scale (bronze ships 0-100; divided by 100). One of four INDEPENDENT, OVERLAPPING per-area completion rates — they do not partition the cohort and routinely sum above 1.0. | | `world_language_pathway_rate` | number | metric | proportion | | yes | Share of the graduating cohort who completed three or more courses in a single world language, 0-1 scale. One of four independent, overlapping per-area completion rates. Has the highest NULL rate of the four (~42-44% in 2022-2024) — World Language is the least common pathway at smaller schools. | | `fine_arts_pathway_rate` | number | metric | proportion | | yes | Share of the graduating cohort who completed a three-course Fine Arts sequence (visual arts, music, theater, dance), 0-1 scale. One of four independent, overlapping per-area completion rates. | | `ctae_pathway_rate` | number | metric | proportion | | yes | Share of the cohort completing a CTAE (career/technical) course pathway, on a 0-1 scale. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/pathway_graduation_rate` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/pathway_graduation_rate?year=2024` - One district (code 625), 2024: `https://georgiacivicdata.org/api/v1/education/pathway_graduation_rate?district_code=625&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/pathway_graduation_rate?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code; district rows have NULL school_code. The four area rates (advanced_academic_pathway_rate, world_language_pathway_rate, fine_arts_pathway_rate, ctae_pathway_rate) are INDEPENDENT, OVERLAPPING per-area completion rates, NOT a partition of the cohort: a student who completes more than one pathway is counted in each, so the four rates routinely sum above 1.0 — do not sum them or treat them as mutually exclusive shares. 2021 zero-encoding: the 2021 bronze file carries no text suppression markers (unlike the 'NA'/'TFS' used from 2022 on) and encodes 'no applicable students' as 0.0. The transform NULLs the 47 rows where all four rates are exactly 0.0 (implausible as genuine rates; the same row identities appear as NA/TFS in later years) and preserves partial-zero 2021 rows — leaving 180 surviving 2021 zero cells (~18% of 2021 rows) ambiguous between a genuine 0% rate and suppression; 171 of the 180 appear as NA/TFS at the same identities in 2022, so most are likely suppression. Coverage is 2021-2024; a 2025 source file exists upstream but is not yet ingested. ### WIDA ACCESS English-Learner Proficiency Results (`education/georgiainsights/wida_access`) Statewide WIDA ACCESS English-language-proficiency results for Georgia English Learners by grade and test domain, 2017-2024. - Source: Georgia Insights (GaDOE) (https://georgiainsights.gadoe.org/data-downloads/) - Years: 2017–2024 - Detail levels: states (default: states) - Grain: one row per year, district_code, school_code, grade_level, domain, proficiency_level - Key metric: `pct_at_proficiency_level` - Fact endpoint: `GET /api/v1/education/wida_access` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/wida_access · Contract: https://georgiacivicdata.org/api/v1/datasets/education/wida_access/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Spring testing year, the ending calendar year of the school year (2024 = school year 2023-2024). Extracted from the filename and cross-checked against the sheet's title row. | | `district_code` | string | fk_district | | | yes | Always NULL: bronze reports statewide totals only, with no district breakdown. | | `school_code` | string | fk_school | | | yes | Always NULL: bronze reports statewide totals only, with no school breakdown. | | `grade_level` | string | categorical | | | no | Grade tested, k (kindergarten) through 12. | | `domain` | string | categorical | | | no | The skill area scored: listening, speaking, reading, writing, or one of four composite scores. | | `proficiency_level` | string | categorical | | | no | WIDA proficiency band, level 1 (entering) up to level 6 (reaching). | | `num_at_proficiency_level` | integer | metric | count | | no | Count of ELL students in this grade scoring at this proficiency level in this domain. Zero is a real zero — the source has no suppression (state aggregates exceed any small-cell threshold). | | `pct_at_proficiency_level` | number | metric | proportion | | no | Share of students tested in this domain who scored at this proficiency level, on a 0-1 scale. | | `num_tested_in_domain` | integer | metric | count | | no | Students tested in this specific domain — the denominator of `pct_at_proficiency_level`. 2021 (Era 2): taken from the published `Total Tested in Domain` column. All other years (Era 1): reconstructed as the sum of the six `num_at_proficiency_level` counts for the (grade, domain) — the source leaves the denominator implicit (verified: the six published shares sum to 100.0 against exactly this total in every file, and the 2021 published value equals the level-count sum in every cell). Always <= `num_tested`. | | `num_tested` | integer | metric | count | | no | Students in this grade tested in at least one domain — the grade-wide testing headcount, repeated on every (domain, level) row of the grade. Not every such student tested in every domain, so per-domain `num_tested_in_domain` is <= this value. | | `enrollment_tested_rate` | number | metric | proportion | | yes | Share of enrolled ELLs in this grade who tested in at least one domain (0-1 scale). Published only for 2021, when ACCESS participation was voluntary/disrupted; NULL for 2017-2020 and 2022-2024 (the enrolled-ELL denominator was never published outside 2021). | | `enrollment_tested_in_domain_rate` | number | metric | proportion | | yes | Share of enrolled ELLs in this grade who tested in this domain (0-1 scale) — for composites, in every component domain (the source labels these `Tested in Both Domains` for the two-domain composites and `Tested in All Four Domains` for the overall score). Published only for 2021; NULL for all other years. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `grade_level` — categorical (multi-value, enum-enforced): `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `k` - `domain` — categorical (multi-value, enum-enforced): `comprehension_composite`, `listening`, `literacy_composite`, `oral_language_composite`, `overall_score_composite`, `reading`, `speaking`, `writing` - `proficiency_level` — categorical (multi-value, enum-enforced): `level_1_entering`, `level_2_emerging`, `level_3_developing`, `level_4_expanding`, `level_5_bridging`, `level_6_reaching` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), states level: `https://georgiacivicdata.org/api/v1/education/wida_access` - states data for 2024: `https://georgiacivicdata.org/api/v1/education/wida_access?year=2024` - Filtered to grade_level = 01 for 2024: `https://georgiacivicdata.org/api/v1/education/wida_access?year=2024&grade_level=01` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/wida_access?year=2024&format=csv` Limitations: This source has no suppression; a 0 is a real reported value. State rows have NULL district_code and school_code. ### ACT College Readiness Test Scores (`education/gosa/act_scores`) Average ACT college-admissions test scores and number of students tested, by Georgia school, district, and ACT section, 2004-2024. - Source: GOSA (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2004–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, test_component - Key metric: `avg_score` - Fact endpoint: `GET /api/v1/education/act_scores` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/act_scores · Contract: https://georgiacivicdata.org/api/v1/datasets/education/act_scores/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Reporting year. For 2011-2024 this is the spring (ending) calendar year of the school year in the source's LONG_SCHOOL_YEAR; for 2004-2010 the source carries no year column and the filename publication year is used. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit state-charter codes. NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). NULL on district- and state-level rows. | | `test_component` | string | categorical | | | no | Which ACT section the score covers: composite (overall), english, mathematics, reading, science, or writing. | | `num_tested` | integer | metric | count | | yes | Number of students tested. 2004-2010 sources publish one count per school/district/state entity, which is repeated on each of that entity's five test_component rows; 2011-2024 sources publish true per-component counts. In either case, summing num_tested across test_component double-counts students — filter to one component (typically composite) for headcounts. | | `avg_score` | number | metric | score | 1–36 | yes | Average ACT scaled score on the 1-36 scale (writing subscore uses a 2-12 scale, except 2016); higher is better. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `test_component` — categorical (multi-value, enum-enforced): `combined_english_writing`, `composite`, `english`, `mathematics`, `reading`, `science`, `writing_subscore` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/act_scores` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/act_scores?year=2024` - Filtered to test_component = combined_english_writing for 2024: `https://georgiacivicdata.org/api/v1/education/act_scores?year=2024&test_component=combined_english_writing` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/act_scores?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/act_scores?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. 2010 caveat: the 2010 source's district-total rows are internally inconsistent with its own school rows (~30 districts' published means fall outside the feasible range implied by their school rows, in both directions; the 2010 state count is also an outlier vs adjacent years); the reporting basis is unknown and the published rows are preserved unchanged — use 2010 district aggregates with caution. 2016 writing_subscore is on a 1-36 scale (ACT's 'enhanced writing' window) vs the 2-12 writing domain scale in every other year. ### Advanced Placement (AP) Exam Scores (`education/gosa/advanced_placement_scores`) AP college-level exam participation and pass rates (share scoring 3 or higher) by Georgia school, district, and AP subject, 2004-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2004–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, subject - Key metric: `tests_3_or_higher_rate` - Fact endpoint: `GET /api/v1/education/advanced_placement_scores` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/advanced_placement_scores · Contract: https://georgiacivicdata.org/api/v1/datasets/education/advanced_placement_scores/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (2024 = the 2023-24 school year). 2011-2024 sources carry a LONG_SCHOOL_YEAR column whose ending year is cross-checked against the filename; 2004-2010 sources have no year column and the filename year is used. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit charter codes. NULL on state-level rows. Bronze aggregate sentinels (ALL / DISTRICT_ALL) map to NULL. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). NULL on district- and state-level rows. Bronze aggregate sentinels (ALL / SCHOOL_ALL / DISTRICT_ALL) map to NULL. | | `subject` | string | categorical | | | no | Which AP exam subject the row covers; all_subjects is the cross-subject total (distinct students, not a sum of the per-subject rows). | | `num_tested` | integer | metric | count | | yes | Number of distinct students who sat at least one AP exam (all_subjects rows) or who sat the specific subject's exam (per-subject rows). Summing per-subject num_tested double-counts students who took multiple subjects; summing school rows can likewise slightly exceed the published district/state rollups (median gap 2) because the rollup counts each student once even when school-level attribution counts a mid-year mover at more than one school. Three source rows publish num_tested greater than num_tests_taken — impossible if both counts were accurate, but the wrong-side column is unknowable, so the published values are preserved and documented: 2005 district 611 school 0204 (Rutland HS, 33 students / 23 tests) and 2008 district 652 (Elbert County, 10/9, appearing on both the school 0176 row and the single-school district row). | | `num_tests_taken` | integer | metric | count | | yes | Total AP exams administered (a student can take exams in multiple subjects, and the College Board counts each exam). 47 of 414 bronze rows in 2004 leave this blank; 2011-2019 sources suppress via empty cells, 2020-2024 via TFS. | | `num_tests_3_or_higher` | integer | metric | count | | yes | Number of AP exams that scored 3 or higher (College Board's qualifying threshold; scores run 1-5). Never exceeds num_tests_taken where both are reported (enforced by a quality check). | | `tests_3_or_higher_rate` | number | metric | proportion | | yes | Share of AP exams that scored 3 or higher (College Board's qualifying threshold), on a 0-1 scale; higher is better. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `subject` — categorical (multi-value, enum-enforced): `african_american_studies`, `all_subjects`, `art_history`, `art_studio_2d_design`, `art_studio_3d_design`, `art_studio_drawing`, `biology`, `calculus_a`, `calculus_bc`, `capstone`, `capstone_research`, `chemistry`, `chinese_language_and_culture`, `computer_science_a`, `computer_science_principles`, `economics_macro`, `economics_micro`, `english_language_and_composition`, `english_literature_and_composition`, `environmental_science`, `european_history`, `french_language`, `german_language`, `government_and_politics_comparative`, `government_and_politics_us`, `human_geography`, `italian_language_and_culture`, `japanese_language_and_culture`, `latin_vergil`, `music_theory`, `physics_1`, `physics_2`, `physics_b`, `physics_c_electricity_and_magnetism`, `physics_c_mechanics`, `precalculus`, `psychology`, `spanish_language`, `spanish_literature`, `statistics`, `us_history`, `world_history` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/advanced_placement_scores` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/advanced_placement_scores?year=2024` - Filtered to subject = african_american_studies for 2024: `https://georgiacivicdata.org/api/v1/education/advanced_placement_scores?year=2024&subject=african_american_studies` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/advanced_placement_scores?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/advanced_placement_scores?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### Student Attendance and Chronic Absenteeism (`education/gosa/attendance`) Student attendance tiers and chronic-absence rates by Georgia school, district, and demographic subgroup, 2004-2024. - Source: GOSA (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2004–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic - Key metric: `chronically_absent_rate` - Fact endpoint: `GET /api/v1/education/attendance` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/attendance · Contract: https://georgiacivicdata.org/api/v1/datasets/education/attendance/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending (spring) calendar year of the school year (e.g. 2024 for 2023-24). 2011-2024 files carry a LONG_SCHOOL_YEAR cross-checked against the filename; 2004-2010 files carry no year column, so the filename year (verified as the ending year via year-over-year enrollment continuity) is authoritative. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit state-charter codes (present from 2010). NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). 2004-2010 sources publish unpadded codes ('103'), zero-padded here to align with 2011-2024. NULL on district- and state-level rows. | | `demographic` | string | fk_demographic | | | no | Student subgroup the row describes (race, gender, economic status, English learner, migrant, or disability); 'all' is every student. | | `num_students` | integer | metric | count | | yes | Number of students in the subgroup used as the denominator for the rate metrics. A real 0 means the subgroup has no students at that entity. §4b mask: in 2023 (5 rows) and 2024 (6 rows) the source published STUDENT_COUNT_FEMALE = 0 alongside non-zero published rates at tiny special-population schools (e.g. East DeKalb Special Education Center 2023: all=80, male=71, female reads 0) — a zero population cannot carry non-zero rates, so those counts are NULLed and the rates kept. | | `five_or_fewer_days_absent_rate` | number | metric | proportion | | yes | Proportion of the subgroup absent five or fewer days during the school year (0-1 scale; source publishes 0-100, divided by 100). Together with the 6-15 and over-15 tiers it partitions the subgroup population (sums to ~1.0). §4b mask: in 2005-2020 the source publishes 0 for all rate metrics when the subgroup has zero students; those placeholder zeros are NULLed (rates of an empty population are undefined; 2004 already publishes NULL there). | | `six_to_fifteen_days_absent_rate` | number | metric | proportion | | yes | Proportion of the subgroup absent six to fifteen days during the school year (0-1 scale; source publishes 0-100, divided by 100). Middle tier of the three-tier partition. Zero-population placeholder zeros NULLed in 2005-2020 (see five_or_fewer_days_absent_rate). | | `over_15_days_absent_rate` | number | metric | proportion | | yes | Proportion of the subgroup absent more than fifteen days during the school year (0-1 scale; source publishes 0-100, divided by 100). Top tier of the three-tier partition; often used as a chronic-absenteeism proxy but distinct from chronically_absent_rate (different cutoff definitions). Zero-population placeholder zeros NULLed in 2005-2020 (see five_or_fewer_days_absent_rate). | | `chronically_absent_rate` | number | metric | proportion | | yes | Share of the subgroup chronically absent (missing 10% or more of enrolled days), on a 0-1 scale; published from 2018. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `all`, `asian_pacific_islander`, `black`, `economically_disadvantaged`, `english_learners`, `female`, `hispanic`, `male`, `migrant`, `multiracial`, `native_american`, `not_economically_disadvantaged`, `students_with_disabilities`, `students_without_disabilities`, `white` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/attendance` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/attendance?year=2024` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/attendance?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/attendance?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero): 2004 publishes blank cells for many subgroups (including some state-level rows); 2021-2022 use the TFS (too few students) literal; 2023-2024 mix TFS and blank cells per cell, so the tier metrics are not co-suppressed and small-population subgroups (notably native_american) are mostly NULL in 2021-2024. chronically_absent_rate is NULL for every year before 2018. Rate metrics are NULL (masked) where a subgroup has zero students. State rows have NULL district_code and school_code; district rows have NULL school_code. The race axis uses the combined asian_pacific_islander bucket — not comparable row-for-row with split-convention topics without aggregating those topics' asian + pacific_islander rows at query time. ### Certified Personnel (Teachers and Staff Credentials) (`education/gosa/certified_personnel`) Staffing measures for Georgia school teachers, administrators, and support staff -- credentials, experience, salary, and demographics by school, district, and state, 2011-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2011–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, employee_type, measure_category, measure_subcategory - Key metric: `measure_value` - Fact endpoint: `GET /api/v1/education/certified_personnel` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/certified_personnel · Contract: https://georgiacivicdata.org/api/v1/datasets/education/certified_personnel/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year. Year 2024 = 2023-2024 school year. Derived from the bronze `LONG_SCHOOL_YEAR` column's ending year. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to the education districts dimension): 3-digit zero-padded for standard districts, 7-digit for state/commission charter schools (present from 2012 onward). NULL for state-level aggregate rows (the bronze sentinel `ALL`). | | `school_code` | string | fk_school | | | yes | 4-digit zero-padded GOSA school code (FK to the education schools dimension, composite key with district_code). NULL for district-level and state-level aggregate rows (the bronze sentinel `ALL`). | | `employee_type` | string | categorical | | | no | Which staff group the measurement covers: administrators, PK-12 teachers, or support personnel. | | `measure_category` | string | categorical | | | no | The category of staffing measure (e.g. certificate level, gender, positions, race/ethnicity, years of experience); pairs with measure_subcategory. | | `measure_subcategory` | string | categorical | | | no | The specific staffing measure within its family (e.g. 5_yr_masters, average_annual_salary, full_time); defines what measure_value means and its unit. | | `measure_value` | number | metric | | | yes | The measurement's value; its unit (headcount, FTE, dollars, days, or years) depends on measure_category and measure_subcategory, so filter to one pair before aggregating. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `employee_type` — categorical (multi-value, enum-enforced): `administrators`, `pk_12_teachers`, `support_personnel` - `measure_category` — categorical (multi-value, enum-enforced): `certificate_level`, `certified_personnel`, `gender`, `personnel`, `positions`, `race_ethnicity`, `years_experience` - `measure_subcategory` — categorical (multi-value, enum-enforced): `11_to_20`, `1_to_10`, `21_to_30`, `4_yr_bachelors`, `5_yr_masters`, `6_yr_specialists`, `7_yr_doctoral`, `asian_pacific_islander`, `average`, `average_annual_salary`, `average_contract_days`, `average_daily_salary`, `black`, `female`, `full_time`, `greater_than_30`, `hispanic`, `less_than_1`, `male`, `multiracial`, `native_american`, `number`, `other`, `part_time`, `professional`, `provisional`, `white` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/certified_personnel` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/certified_personnel?year=2024` - Filtered to employee_type = administrators for 2024: `https://georgiacivicdata.org/api/v1/education/certified_personnel?year=2024&employee_type=administrators` - One district (code 644), 2024: `https://georgiacivicdata.org/api/v1/education/certified_personnel?district_code=644&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/certified_personnel?year=2024&format=csv` Limitations: This source has no suppression markers in any year (2010-11 through 2023-24); zero counts are published as real `0` values, and every bronze MEASURE value parses to a valid number. measure_value has heterogeneous units that depend on (measure_category, measure_subcategory): a whole-person headcount for certificate_level / certified_personnel / gender / personnel / race_ethnicity / years_experience (except `average`); an FTE-style fractional count for positions/number; US dollars for positions/average_annual_salary and positions/average_daily_salary; days for positions/average_contract_days; and a mean in years for years_experience/average. Never aggregate measure_value without first filtering to a single (measure_category, measure_subcategory) pair, and never sum `average*` labels across entities. measure_category is functionally determined by measure_subcategory (27 valid pairs). There is no `demographic` column: gender and race/ethnicity here describe STAFF and are measure families, not a cross-cutting demographic axis, so these rows do not join the demographics dimension; the race_ethnicity family uses the pre-1997 OMB combined `asian_pacific_islander` bucket (no separate Pacific Islander label exists in the source). Known source quirk: the 2016-17 certified_personnel family (professional/provisional counts) is uniformly depressed at every level (~2% of adjacent years' magnitude) yet internally consistent across levels — preserved as published; do not trend that family across 2017. School rows must not be summed to rebuild district or state headcounts: staff serving multiple schools are counted once per school assignment but deduplicated at higher levels, so a district count can even be smaller than a single school's count (observed only in personnel/part_time; 1,811 cells). State rows have NULL district_code and school_code; district rows have NULL school_code. ### Direct Certification for Free School Meals (`education/gosa/direct_certification`) Share of K-12 students automatically eligible for free school meals via SNAP/TANF and other programs, by Georgia school, district, and state, 2014-2024. - Source: GOSA (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2014–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code - Key metric: `direct_cert_rate` - Fact endpoint: `GET /api/v1/education/direct_certification` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/direct_certification · Contract: https://georgiacivicdata.org/api/v1/datasets/education/direct_certification/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Georgia fiscal year, equal to the ending (spring) calendar year of the school year (FY2024 = 2023-24). Read from the in-file FISCAL_YEAR column (SCHOOL_YEAR in the 2014 files) and cross-checked against the filename year in both download families. | | `district_code` | string | fk_district | | | yes | GOSA district/system code (FK to districts dimension), zero-padded to 3 digits; 7-digit charter and State-School codes and 3-digit state-agency codes are preserved unchanged. NULL on the statewide aggregate rows. Beyond the ~180 standard county/city districts the series includes 799 (combined State Schools, 2020+), 890 (Dept. of Corrections, 2019 only), 891 (Dept. of Juvenile Justice, 2017+), 7991893-7991895 (individual State Schools, 2014-2019; superseded by the combined 799 row from 2020), and 782xxxx/783xxxx state and commission charter schools. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). Populated on school rows only — district and state aggregate rows carry NULL. The 2014-2016 CSVs publish the padded form natively; the 2017-2024 .xls files publish unpadded 3/4-digit codes that are zero-filled to match. | | `direct_cert_rate` | number | metric | proportion | | yes | Share of K-12 students automatically eligible for free meals (via SNAP/TANF, foster, homeless, migrant, or Medicaid), on a 0-1 scale. | | `num_direct_cert_students` | integer | metric | count | | yes | Headcount of K-12 students directly certified — the numerator of direct_cert_rate (bronze K12_POVERTY_STUDENT_CT). Published FY2020 onward only; NULL for 2014-2019. Always at most num_k12_students (enforced by a quality check). | | `num_k12_students` | integer | metric | count | | yes | Total K-12 enrollment used as the denominator of direct_cert_rate (the NSLP K-12 enrollment base — not the October/March FTE enrollment published by the enrollment topics; bronze K12_STUDENT_COUNT). Published FY2020 onward only; NULL for 2014-2019. Strictly positive where present (enforced by a quality check). | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/direct_certification` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/direct_certification?year=2024` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/direct_certification?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/direct_certification?year=2024&format=csv` Limitations: Three detail levels (school, district, state) in one fact table, split by parquet filename; school_code is NULL on district/state rows and district_code is NULL on state rows. The statewide aggregate exists only for 2022-2024; earlier years publish no state row and pre-2020 years lack the counts needed to reconstruct one. The underlying counts (num_direct_cert_students, num_k12_students) are published only from FY2020 and are NULL before that. School-level rows and district-level rows come from two independent GOSA downloads whose K-12 bases need not reconcile exactly, so school rows are NOT guaranteed to sum to their district row. Two methodology breaks limit year-over-year comparison: FY2017 rates EXCLUDE foster students (FY2018+ include them), and FY2024 adds the Medicaid DC-M category, roughly doubling certified counts — comparisons crossing 2016->2017, 2017->2018, or 2023->2024 are not apples-to-apples. The State Schools representation changes across eras: three individual 7-digit rows (7991893-7991895) through 2019, one combined 799 row from 2020. No suppression exists in this topic — NULL never means suppressed. ### Grade 7-12 Dropout Rates (`education/gosa/dropout_rate_7_12`) Number and rate of grade 7-12 students who dropped out, by Georgia school, district, and demographic subgroup, 2011-2024. - Source: GOSA (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2011–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic - Key metric: `dropout_rate` - Fact endpoint: `GET /api/v1/education/dropout_rate_7_12` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/dropout_rate_7_12 · Contract: https://georgiacivicdata.org/api/v1/datasets/education/dropout_rate_7_12/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending (spring) calendar year of the school year (e.g. 2024 for 2023-24), parsed from the source's LONG_SCHOOL_YEAR and cross-checked against the filename. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit state-charter codes. NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). NULL on district- and state-level rows. | | `demographic` | string | fk_demographic | | | no | Student subgroup the row describes (race, gender, economic status, English learner, migrant, or disability); 'all' is every student. | | `num_dropouts` | integer | metric | count | | yes | Number of students in grades 7-12 who dropped out during the school year. Published values are always >= 10 because GOSA suppresses smaller cells; ~78-83% of school-level rows are suppressed (NULL) in every year. Always co-suppressed with dropout_rate. | | `dropout_rate` | number | metric | proportion | | yes | Share of the subgroup's grade 7-12 students who dropped out during the school year, on a 0-1 scale; lower is better. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `all`, `asian_pacific_islander`, `black`, `economically_disadvantaged`, `english_learners`, `female`, `hispanic`, `male`, `migrant`, `multiracial`, `native_american`, `not_economically_disadvantaged`, `students_with_disabilities`, `students_without_disabilities`, `white` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/dropout_rate_7_12` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/dropout_rate_7_12?year=2024` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/dropout_rate_7_12?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/dropout_rate_7_12?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero): GOSA suppresses any cell below the n=10 reporting threshold, which blanks ~78-83% of school-level rows in every year — school-level analyses should expect sparse coverage, and summing only published subgroup counts undercounts true totals at school grain (use district or state rows for official aggregates). State rows have NULL district_code and school_code; district rows have NULL school_code. The race axis uses the combined asian_pacific_islander bucket — not comparable row-for-row with split-convention topics without aggregating those topics' asian + pacific_islander rows at query time. english_learners rows are absent in 2020-2022. ### Grades 9-12 Dropout Rates (`education/gosa/dropout_rate_9_12`) Georgia grade 9-12 dropout counts and rates by school, district, and demographic subgroup, 2011-2024. - Source: GOSA (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2011–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic - Key metric: `dropout_rate` - Fact endpoint: `GET /api/v1/education/dropout_rate_9_12` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/dropout_rate_9_12 · Contract: https://georgiacivicdata.org/api/v1/datasets/education/dropout_rate_9_12/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending (spring) calendar year of the school year (e.g. 2024 for 2023-24), parsed from the source's LONG_SCHOOL_YEAR and cross-checked against the filename. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit state-charter codes. NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). NULL on district- and state-level rows. | | `demographic` | string | fk_demographic | | | no | Student subgroup the row counts: 'all' plus race, gender, economic, English-proficiency, migrant, and disability categories; mutually exclusive within a category. | | `num_dropouts` | integer | metric | count | | yes | Number of students in grades 9-12 who dropped out during the school year. Published values are always >= 10 because GOSA suppresses smaller cells; ~64-75% of school-level rows are suppressed (NULL) in every year. Always co-suppressed with dropout_rate. | | `dropout_rate` | number | metric | proportion | | yes | Share of grade 9-12 students who dropped out during the school year, on a 0-1 scale. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `all`, `asian_pacific_islander`, `black`, `economically_disadvantaged`, `english_learners`, `female`, `hispanic`, `male`, `migrant`, `multiracial`, `native_american`, `not_economically_disadvantaged`, `students_with_disabilities`, `students_without_disabilities`, `white` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/dropout_rate_9_12` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/dropout_rate_9_12?year=2024` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/dropout_rate_9_12?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/dropout_rate_9_12?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero): GOSA suppresses any cell below the n=10 reporting threshold, which blanks ~64-75% of school-level rows in every year — school-level analyses should expect sparse coverage, and summing only published subgroup counts undercounts true totals at school grain (use district or state rows for official aggregates). State rows have NULL district_code and school_code; district rows have NULL school_code. The race axis uses the combined asian_pacific_islander bucket — not comparable row-for-row with split-convention topics without aggregating those topics' asian + pacific_islander rows at query time. english_learners rows are absent in 2020-2022. ### Emergency-Credentialed Teachers (`education/gosa/educator_qualifications_emergency_and_provisional_credentials`) Share of Georgia teachers holding an emergency credential by school, district, and school-poverty stratum, 2018-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2018–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, poverty_subgroup - Key metric: `emergency_fte_rate` - Fact endpoint: `GET /api/v1/education/educator_qualifications_emergency_and_provisional_credentials` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/educator_qualifications_emergency_and_provisional_credentials · Contract: https://georgiacivicdata.org/api/v1/datasets/education/educator_qualifications_emergency_and_provisional_credentials/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year. Year 2024 = 2023-2024 school year. Derived from the bronze `LONG_SCHOOL_YEAR` column's ending year. | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district code (zero-padded) for standard districts; 7-digit charter code for charter / specialty-school districts; NULL for state-level aggregate rows. FK to the education districts dimension. Because the source publishes only district NAMES (no codes), codes are resolved against `data/gold/education/_dimensions/districts.parquet` via the shared educator-topic resolver (year-aware certified_personnel lookups, curated code pins, and guarded name matching — see src/etl/education/gosa/_educator_lookups.py). Rows whose names cannot be resolved are dropped only under documented predicates; the transform manifest records each dropped class and count per year. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (zero-padded); NULL for district-level and state-level aggregate rows. FK to the education schools dimension (composite key with district_code). Resolved by name via the shared educator-topic resolver; school-level rows whose name cannot be resolved to a dimension entry are dropped under documented source-gap predicates only (counts in the transform manifest). | | `poverty_subgroup` | string | categorical | | | no | School-poverty stratum the row covers: all schools (total), or only the highest- or lowest-poverty quartile; a school-poverty level, not a student demographic. | | `total_fte` | number | metric | count | | yes | Total teacher full-time equivalent count in the entity (or in the poverty subgroup). Fractional FTEs are real (e.g. 34.8). NULL when suppressed by the GOSA reporting floor (`TFS`, < 10 teachers). Denominator of `emergency_fte_rate`. The 2019 statewide level (162,256.2) is ~37% above neighboring years (2018: 118,009.1; 2020: 110,800.8) — a broader teacher population GOSA reported that year at every detail level, preserved faithfully per data-cleaning-standards §4b (extreme-but-conceivable). | | `emergency_fte` | number | metric | count | | yes | Teacher FTE holding an Emergency teaching credential in the entity (or poverty subgroup). NULL when suppressed (`TFS`, < 10 FTE) — observed from 2021 onward. True zeros (no emergency-credentialed teachers) are preserved as 0.0 in 2018-2020, before GOSA introduced suppression for this report. Numerator of `emergency_fte_rate`. Sourced from bronze columns CATEGORY_FTE (2023-24), Emergency_FTE (2022), and the MIS-LABELED OUTOFFIELD_FTE (2018-21) — see the limitations note. | | `emergency_fte_rate` | number | metric | proportion | | yes | Share of teacher FTE holding an emergency credential, on a 0-1 scale (emergency_fte / total_fte). | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `poverty_subgroup` — categorical (multi-value, enum-enforced): `high_poverty`, `low_poverty`, `total` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_emergency_and_provisional_credentials` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_emergency_and_provisional_credentials?year=2024` - Filtered to poverty_subgroup = high_poverty for 2024: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_emergency_and_provisional_credentials?year=2024&poverty_subgroup=high_poverty` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_emergency_and_provisional_credentials?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_emergency_and_provisional_credentials?year=2024&format=csv` Limitations: Source-lineage caveat: in the 2018-2021 bronze files (Era 3) the metric columns are NAMED `OUTOFFIELD_FTE` / `OUTOFFIELD_FTE_PCT`, but the VALUES they carry are Emergency-credential FTE counts, not out-of-field counts — a confirmed GOSA source mis-labeling (the 2021 state total here, 9,796.9, differs from the genuine out-of-field report's 6,281.9). The transform reads these as emergency_fte / emergency_fte_rate; do not re-interpret those years as out-of-field data. Despite the topic name, no 'Provisional' rows appear in the source — only Emergency is reported. Suppression is era-asymmetric: 2018-2020 publish a real `0` (true zero emergency-credentialed teachers), while 2021 onward suppress any value below 10 with `TFS` (treat NULL as 'count < 10' for 2021+ but as genuinely missing pre-2021); emergency_fte_rate may be non-null even when emergency_fte is suppressed. 2019 statewide FTE is ~37% above neighboring years (a broader teacher population GOSA reported that year), preserved faithfully per data-cleaning-standards §4b. The 2018 file mixes scopes ACROSS detail levels: school rows are on the broad teacher-population scope while district and state rows are on the narrow scope (statewide school-row total_fte sums to 157,557.3 vs the state row's 118,009.1, a 1.335x ratio; e.g. Gwinnett's district aggregate is 11,170.0 while its school rows sum to 22,190.6) — 2018 school rows do NOT sum to their district or state aggregates. The source publishes only district/school NAMES, so codes are resolved by name against the education dimensions via the shared educator-topic resolver (year-aware certified_personnel lookups, curated code pins, guarded matching); rows that cannot be resolved are dropped only under documented predicates — redundant 2023 truncated charter-container aggregates and cataloged source gaps — with per-year counts in the transform manifest. State rows have NULL district_code and school_code; district rows have NULL school_code. ### Inexperienced Teachers and Leaders (`education/gosa/educator_qualifications_inexperienced_teachers_leaders`) Share of Georgia teachers and leaders in their first career years by school, district, role, and poverty stratum, 2018-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2018–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, role, poverty_subgroup - Key metric: `inexperienced_fte_rate` - Fact endpoint: `GET /api/v1/education/educator_qualifications_inexperienced_teachers_leaders` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/educator_qualifications_inexperienced_teachers_leaders · Contract: https://georgiacivicdata.org/api/v1/datasets/education/educator_qualifications_inexperienced_teachers_leaders/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year. Year 2024 = 2023-2024 school year. Derived from the bronze `LONG_SCHOOL_YEAR` column's ending year. | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district code (zero-padded) for standard districts; 7-digit charter code for charter / specialty-school districts; NULL for state-level aggregate rows. FK to the education districts dimension. Because the source publishes only district NAMES (no codes), codes are resolved against `data/gold/education/_dimensions/districts.parquet` via the shared educator-topic resolver (year-aware certified_personnel lookups, curated code pins, and guarded name matching — see src/etl/education/gosa/_educator_lookups.py). Rows whose names cannot be resolved or faithfully attributed are dropped only under documented predicates; the transform manifest records each dropped class and count per year. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (zero-padded); NULL for district-level and state-level aggregate rows. FK to the education schools dimension (composite key with district_code). Resolved by name via the shared educator-topic resolver; school-level rows whose name cannot be resolved to a dimension entry are dropped under documented source-gap predicates only (counts in the transform manifest). | | `role` | string | categorical | | | no | Workforce role the row measures: teachers or leaders (principals and assistant principals). | | `poverty_subgroup` | string | categorical | | | no | School-poverty stratum the row covers (total, high, or low poverty; Leaders add not_applicable/unknown); a school-poverty level, not a student demographic. | | `total_fte` | number | metric | count | | yes | Total educator full-time equivalent count in the entity for the given role and poverty subgroup. For `poverty_subgroup = total` this is the entity's total role FTE; for other strata it is the FTE in just that stratum of schools. Fractional FTEs are real (e.g. 58.2). NULL when suppressed by the GOSA reporting floor (`TFS`, < 10 FTE) — 2021 onward. Denominator of `inexperienced_fte_rate`. | | `inexperienced_fte` | number | metric | count | | yes | Educator FTE classified as Inexperienced (within the first years of their career, per the ESSA inexperienced-educator standard) in the entity for the given role and poverty subgroup. NULL when suppressed (`TFS`, < 10 FTE) — observed from 2021 onward. True zeros (no inexperienced educators) are preserved as 0.0 in 2018-2020, before GOSA introduced suppression for this report. Numerator of `inexperienced_fte_rate`. WARNING — not additive across hierarchy levels for Teachers: school-row sums exceed the district row and district-row sums exceed the state row by ~1.4x in every year (bronze-native; consistent with experience measured relative to the reporting unit — new-to-school vs new-to-district vs new-to-profession). Never derive an aggregate by summing lower-level rows; use the published row for the level you need. Leaders rows and `total_fte` DO reconcile across levels (~1.000). Six 2018-2020 Leaders rows at tiny programs exceed `total_fte` by exactly 0.1 (e.g. 2.0 vs 1.9 at Randolph Clay High School 2018) — an artifact of GOSA rounding each FTE to 0.1 independently; preserved per data-cleaning-standards §4b (extreme-but-conceivable). | | `inexperienced_fte_rate` | number | metric | proportion | | yes | Share of educator FTE classified as inexperienced, on a 0-1 scale (inexperienced_fte / total_fte). | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `role` — categorical (multi-value, enum-enforced): `leaders`, `teachers` - `poverty_subgroup` — categorical (multi-value, enum-enforced): `high_poverty`, `low_poverty`, `not_applicable`, `total`, `unknown` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_inexperienced_teachers_leaders` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_inexperienced_teachers_leaders?year=2024` - Filtered to role = leaders for 2024: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_inexperienced_teachers_leaders?year=2024&role=leaders` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_inexperienced_teachers_leaders?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_inexperienced_teachers_leaders?year=2024&format=csv` Limitations: Suppression is era-asymmetric: 2018-2020 publish a real `0` (true zero inexperienced educators, 723-765 rows per year), while 2021 onward suppress any value below 10 with `TFS` (treat NULL as 'value < 10' for 2021+ but as genuinely missing pre-2021); inexperienced_fte_rate may be non-null even when inexperienced_fte is suppressed. The source publishes only district/school NAMES, so codes are resolved by name against the education dimensions via the shared educator-topic resolver (year-aware certified_personnel lookups, curated code pins, guarded matching); rows that cannot be resolved or faithfully attributed are dropped only under documented predicates — unresolved truncated charter-container placeholders, cataloged source gaps (e.g. Ivy Prep Kirkwood), and the ambiguous 52-char-truncated Genesis Innovation Academy district aggregates (Boys/Girls distinguisher erased; bare school rows carry the real values) — with per-year counts in the transform manifest. District-level coverage for Genesis Innovation Academy is therefore missing in 2023-2024 while its school-level rows are complete. The 2024 truncated Utopian Academy aggregates (one Leaders/Total identical-metric pair collapsed by dedup, plus a single Leaders/Low Poverty row) are all bound to the pinned main campus 7820121 even though the truncated name also covers the Trilith campus 7820619 — the Low Poverty row likely describes Trilith; preserved as published and matching the v1-approved handling. Six 2018-2020 Leaders rows carry inexperienced_fte exceeding total_fte by exactly 0.1 (independent 0.1-FTE rounding; preserved per data-cleaning-standards §4b). Teachers `inexperienced_fte` does NOT aggregate across hierarchy levels: school-row sums exceed the district row and district-row sums exceed the state row by ~1.4x in every year (consistent with experience measured relative to the reporting unit); never derive aggregates by summing lower-level rows. The 2019 file's Teachers FTE levels run ~40% above adjacent years statewide (162,256.2 vs 118,009.1 in 2018 / 110,800.8 in 2020) and the 2018 file's school-level total_fte can sum above the district row (149 of 205 districts) — treat 2018-2019 levels as a distinct measurement basis when trending. State rows have NULL district_code and school_code; district rows have NULL school_code. ### Out-of-Field Teachers (`education/gosa/educator_qualifications_out_of_field_teachers`) Share of Georgia teachers assigned to a subject they are not certified in, by school, district, and poverty stratum, 2018-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2018–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, poverty_subgroup - Key metric: `out_of_field_fte_rate` - Fact endpoint: `GET /api/v1/education/educator_qualifications_out_of_field_teachers` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/educator_qualifications_out_of_field_teachers · Contract: https://georgiacivicdata.org/api/v1/datasets/education/educator_qualifications_out_of_field_teachers/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year. Year 2024 = 2023-2024 school year. Derived from the bronze `LONG_SCHOOL_YEAR` column's ending year. | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district code (zero-padded) for standard districts; 7-digit charter code for charter / specialty-school districts; NULL for state-level aggregate rows. FK to the education districts dimension. Because the source publishes only district NAMES (no codes), codes are resolved against `data/gold/education/_dimensions/districts.parquet` via the shared educator-topic resolver (year-aware certified_personnel lookups, curated code pins, and guarded name matching — see src/etl/education/gosa/_educator_lookups.py). Rows whose names cannot be resolved are dropped only under documented predicates; the transform manifest records each dropped class and count per year. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (zero-padded); NULL for district-level and state-level aggregate rows. FK to the education schools dimension (composite key with district_code). Resolved by name via the shared educator-topic resolver; school-level rows whose name cannot be resolved to a dimension entry are dropped under documented source-gap predicates only (counts in the transform manifest). | | `poverty_subgroup` | string | categorical | | | no | School-poverty stratum the row covers: all schools (total), or only the highest- or lowest-poverty quartile; a school-poverty level, not a student demographic. | | `total_fte` | number | metric | count | | yes | Total teacher full-time equivalent count in the entity (or in the poverty subgroup). Fractional FTEs are real (e.g. 42.5). NULL when suppressed by the GOSA reporting floor (`TFS`, < 10 teachers; 2022 onward only). Denominator of `out_of_field_fte_rate`. The 2019 statewide level (162,256.2) is ~37% above neighboring years (2018: 118,009.1; 2020: 110,800.8) — a broader teacher population GOSA reported that year at every detail level; and the 2018 file mixes scopes across levels (school rows broad, district/state rows narrow). Preserved faithfully per data-cleaning-standards §4b (extreme-but-conceivable). | | `out_of_field_fte` | number | metric | count | | yes | Teacher FTE assigned to a subject for which the teacher is not certified (teaching out of field) in the entity (or poverty subgroup). NULL when suppressed (`TFS`, < 10 FTE) — observed from 2022 onward (~88% of school-level rows). KNOWN ANOMALY: 2018-2021 files have no explicit suppression but carry implausibly high concentrations of literal 0 (2020: 48% of school-level rows; 2021: 18%) that almost certainly encode suppression as zero. True zeros cannot be mechanically separated, so every bronze 0 is preserved as 0.0 — treat 2018-2021 zeros with caution (school-level aggregates including 2020 are biased toward zero). Numerator of `out_of_field_fte_rate`. In this topic the 2018-2022 bronze OUTOFFIELD_FTE column carries genuine out-of-field values (unlike the sibling emergency-credentials topic, whose 2018-2021 bronze mislabels Emergency values under the same header). | | `out_of_field_fte_rate` | number | metric | proportion | | yes | Share of teacher FTE assigned out of field, on a 0-1 scale (out_of_field_fte / total_fte). | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `poverty_subgroup` — categorical (multi-value, enum-enforced): `high_poverty`, `low_poverty`, `total` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_out_of_field_teachers` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_out_of_field_teachers?year=2024` - Filtered to poverty_subgroup = high_poverty for 2024: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_out_of_field_teachers?year=2024&poverty_subgroup=high_poverty` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_out_of_field_teachers?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/educator_qualifications_out_of_field_teachers?year=2024&format=csv` Limitations: Cross-topic lineage caveat: the sibling emergency-credentials topic's 2018-2021 bronze files re-use the column headers OUTOFFIELD_FTE / OUTOFFIELD_FTE_PCT for Emergency-credential values (its 2021 state total is 9,796.9). THIS topic's bronze is the genuine out-of-field report (2021 state total 6,281.9) — do not reconcile the two by column name. Suppression is era-asymmetric: 2018-2021 files contain no TFS markers at all, while 2022 onward suppress values below 10 with TFS (treat NULL as 'value < 10' for 2022+; NULL does not occur before 2022). KNOWN ANOMALY: 2018-2021 out_of_field_fte carries implausibly many literal zeros (48% of 2020 school rows) that almost certainly encode suppression as 0; all zeros are preserved per bronze fidelity and consumers must handle 2018-2021 zeros explicitly. The FTE denominator has scope shifts: the 2019 file reports a ~37% broader teacher population at every detail level, and the 2018 file mixes scopes ACROSS levels (school rows broad — statewide school-row total_fte sums to 157,557.3 — while district and state rows are narrow, state row 118,009.1), so 2018 school rows do NOT sum to their district or state aggregates. The source publishes only district/school NAMES, so codes are resolved by name against the education dimensions via the shared educator-topic resolver (year-aware certified_personnel lookups, curated code pins, guarded matching); rows that cannot be resolved are dropped only under documented predicates — redundant 2023 truncated charter-container aggregates and cataloged source gaps — with per-year counts in the transform manifest. State rows have NULL district_code and school_code; district rows have NULL school_code. ### English Learner Program Exit Rate (`education/gosa/english_learner_exit_rate`) Rate at which Georgia English Learner students exit EL services by district and statewide, fiscal years 2019-2024. - Source: GOSA (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2019–2024 - Detail levels: districts, states (default: districts) - Grain: one row per year, district_code, school_code - Key metric: `el_exit_rate` - Fact endpoint: `GET /api/v1/education/english_learner_exit_rate` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/english_learner_exit_rate · Contract: https://georgiacivicdata.org/api/v1/datasets/education/english_learner_exit_rate/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Georgia fiscal year, equal to the ending (spring) calendar year of the school year (FY2024 = 2023-24). Read from the bronze FISCAL_YEAR column and cross-checked against the filename year. | | `district_code` | string | fk_district | | | yes | GOSA district/system code (FK to districts dimension), zero-padded to 3 digits; 7-digit charter and state-school codes are preserved unchanged. NULL on the statewide aggregate rows. Beyond the standard county/city districts the series includes 782xxxx/783xxxx charter LEAs, the combined State Schools row (799, FY2021+; individual State Schools rows 7991893-7991895 in FY2019 only — none in FY2020), and the Dept. of Corrections (890). | | `school_code` | string | fk_school | | | yes | GOSA school code (composite FK to schools dimension with district_code). Always NULL in this topic (enforced by a quality check) — no school-level detail is published for this metric. | | `num_el_exits` | integer | metric | count | | yes | Number of English Learner students who exited the EL program during the fiscal year. NULL when the bronze source suppressed the cell as TFS (too few students); published values are always 10 or more. State rows are never suppressed. | | `num_el_students` | integer | metric | count | | yes | Total English Learner enrollment for the fiscal year — the denominator of el_exit_rate. NULL when suppressed as TFS; suppressed only when num_el_exits is also suppressed (enforced by a quality check). State rows are never suppressed. | | `el_exit_rate` | number | metric | proportion | | yes | Share of English Learner students who exited EL services during the year, on a 0-1 scale. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), districts level: `https://georgiacivicdata.org/api/v1/education/english_learner_exit_rate` - districts data for 2024: `https://georgiacivicdata.org/api/v1/education/english_learner_exit_rate?year=2024` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/english_learner_exit_rate?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/english_learner_exit_rate?year=2024&format=csv` Limitations: District and state detail only: school_code is always NULL — no school-level data is published for this metric. Suppressed cells are NULL (not zero): district rows below the privacy threshold are suppressed in bronze as TFS; published counts are always >= 10. A row may carry num_el_students while num_el_exits and el_exit_rate are NULL (the exit cohort is below the threshold even though total EL enrollment is not). State totals are never suppressed. el_exit_rate is NULL whenever either count is suppressed — including 130 FY2024 district rows where GOSA published unverifiable numeric rates alongside suppressed counts (treated as suppressed). The State Schools representation changes across years: individual 7-digit rows (7991893-7991895) in FY2019 only, no State Schools rows at all in FY2020, one combined 799 row from FY2021 — a long-run State Schools series requires handling both representations and the FY2020 gap. ### Enrollment by Grade Level (`education/gosa/enrollment_by_grade_level`) Student enrollment counts by grade (K-12) for each Georgia school, district, and the state, per Fall/Spring snapshot, 2011-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2011–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, enrollment_period, grade_level - Key metric: `num_students` - Fact endpoint: `GET /api/v1/education/enrollment_by_grade_level` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/enrollment_by_grade_level · Contract: https://georgiacivicdata.org/api/v1/datasets/education/enrollment_by_grade_level/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (2024 = 2023-24). Parsed from the bronze LONG_SCHOOL_YEAR and cross-checked against the filename year. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-character zero-padded code for standard county/city districts, or 7-character code for state-charter (782 prefix), commission-charter (783 prefix), and state school (799 prefix) entities — 7-character codes appear in every year 2011-2024. NULL on state-level aggregate rows (bronze sentinel 'ALL'). | | `school_code` | string | fk_school | | | yes | 4-character zero-padded GOSA school code (composite FK to schools dimension with district_code; school codes are not globally unique on their own). NULL on district- and state-level aggregate rows (bronze sentinel 'ALL'). | | `enrollment_period` | string | categorical | | | no | Enrollment snapshot within the school year: fall (October) or spring (March); never sum across them. | | `grade_level` | string | categorical | | | no | Grade of the students counted: 'k' for kindergarten, '01'-'12' for grades 1-12; no pre-K or all-grades row. | | `num_students` | integer | metric | count | | yes | Number of students enrolled in this grade and period at this entity. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `enrollment_period` — categorical (multi-value, enum-enforced): `fall`, `spring` - `grade_level` — categorical (multi-value, enum-enforced): `01`, `02`, `03`, `04`, `05`, `06`, `07`, `08`, `09`, `10`, `11`, `12`, `k` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/enrollment_by_grade_level` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/enrollment_by_grade_level?year=2024` - Filtered to enrollment_period = fall for 2024: `https://georgiacivicdata.org/api/v1/education/enrollment_by_grade_level?year=2024&enrollment_period=fall` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/enrollment_by_grade_level?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/enrollment_by_grade_level?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. State and district rows are independently published GOSA aggregates and may differ from the sum of their component rows by up to ~0.02% (e.g., students enrolled in more than one district during a collection period); do not treat component sums as exact reconciliations. ### Enrollment Demographic Shares (`education/gosa/enrollment_demographic_shares`) Each demographic subgroup's share of enrollment by Georgia school, district, and statewide, 2004-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2004–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic, met_ayp, improvement_status - Key metric: `enrollment_ratio` - Fact endpoint: `GET /api/v1/education/enrollment_demographic_shares` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/enrollment_demographic_shares · Contract: https://georgiacivicdata.org/api/v1/datasets/education/enrollment_demographic_shares/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (2024 = the 2023-24 school year). Sourced from LONG_SCHOOL_YEAR for 2011+ (cross-checked against the filename); from the bronze filename for 2004-2010. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded for standard districts, 7-digit for charter districts. NULL on state-level aggregate rows. | | `school_code` | string | fk_school | | | yes | 4-digit zero-padded GOSA school code (composite FK to schools dimension with district_code). NULL on district- and state-level aggregate rows. | | `demographic` | string | fk_demographic | | | no | Which demographic subgroup the share is for; one of 12 race, sex, and special-population codes (no 'all' row). | | `met_ayp` | string | categorical | | | yes | NCLB-era Adequate Yearly Progress flag (yes/no); populated 2004-2010 only, NULL afterward. | | `improvement_status` | string | categorical | | | yes | NCLB-era school improvement-status code; populated 2004-2010 only, NULL afterward. | | `enrollment_ratio` | number | metric | ratio | | yes | This subgroup's share of the entity's total FTE enrollment, on a 0-1 scale (may exceed 1.0 for ED/SWD at some special schools). | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `asian_pacific_islander`, `black`, `economically_disadvantaged`, `english_learners`, `female`, `hispanic`, `male`, `migrant`, `multiracial`, `native_american`, `students_with_disabilities`, `white` - `met_ayp` — categorical (multi-value, enum-enforced): `no`, `yes` - `improvement_status` — categorical (multi-value, enum-enforced): `adeq`, `adeq_dnm`, `dist`, `ni`, `ni_ayp` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/enrollment_demographic_shares` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/enrollment_demographic_shares?year=2024` - Filtered to met_ayp = no for 2024: `https://georgiacivicdata.org/api/v1/education/enrollment_demographic_shares?year=2024&met_ayp=no` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/enrollment_demographic_shares?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/enrollment_demographic_shares?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### Enrollment Program Participation (`education/gosa/enrollment_program_participation`) Share of students enrolled in nine state instructional programs (gifted, special ed, ESOL, etc.) by Georgia school, district, and statewide, 2011-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2011–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, program - Key metric: `participation_rate` - Fact endpoint: `GET /api/v1/education/enrollment_program_participation` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/enrollment_program_participation · Contract: https://georgiacivicdata.org/api/v1/datasets/education/enrollment_program_participation/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (2024 = the 2023-24 school year). Sourced from LONG_SCHOOL_YEAR (cross-checked against the bronze filename). Coverage starts at 2011: the 2004-2010 bronze publishes no program columns and is excluded from this topic. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded for standard districts, 7-digit for charter districts. NULL on state-level aggregate rows. | | `school_code` | string | fk_school | | | yes | 4-digit zero-padded GOSA school code (composite FK to schools dimension with district_code). NULL on district- and state-level aggregate rows. | | `program` | string | categorical | | | no | Which instructional program the row is for; one of nine codes (gifted, special ed, ESOL, EIP, remedial, etc.). | | `num_students` | integer | metric | count | | yes | Number of students enrolled in the program at the entity. NULL when the program does not apply to the entity (e.g., grade 6-8 remediation at a high school) or when the bronze cell was TFS-suppressed (count columns from 2021). For alt_programs in 2011 and 2019 the count is additionally NULLed wherever the companion rate is < 0.95 or NULL — a GOSA publishing error in exactly those two years set the count to the entity's TOTAL enrollment (state row 1.53M/1.60M vs 10k-33k in every other year), not the alt-program subset; genuine all-alternative entities (rate >= 0.95, where count = enrollment is correct) keep their count, and the rate is always preserved. | | `participation_rate` | number | metric | proportion | | yes | Share of the entity's enrollment in this program, on a 0-1 scale; denominator is the grades the program serves. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `program` — categorical (multi-value, enum-enforced): `alt_programs`, `eip_k_5`, `esol`, `gifted`, `remedial_gr_6_8`, `remedial_gr_9_12`, `special_ed_k_12`, `special_ed_pk`, `vocation_9_12` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/enrollment_program_participation` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/enrollment_program_participation?year=2024` - Filtered to program = alt_programs for 2024: `https://georgiacivicdata.org/api/v1/education/enrollment_program_participation?year=2024&program=alt_programs` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/enrollment_program_participation?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/enrollment_program_participation?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### Financial Efficiency Star Rating (FESR) (`education/gosa/financial_efficiency_star_rating`) Per-pupil spending, CCRPI scores, and 0.5-5 financial efficiency star ratings for Georgia school districts and schools, 2014-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2014–2024 - Detail levels: districts, schools (default: schools) - Grain: one row per year, district_code, school_code - Key metric: `per_pupil_expenditure` - Fact endpoint: `GET /api/v1/education/financial_efficiency_star_rating` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/financial_efficiency_star_rating · Contract: https://georgiacivicdata.org/api/v1/datasets/education/financial_efficiency_star_rating/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Fiscal year the row's PPE inputs refer to (e.g. FY2024 = 2023-24 school year). Differs from the bronze filename year for back-window rows: each rolling report covers up to 3 fiscal years, but gold keys every row by the actual fiscal year. | | `district_code` | string | fk_district | | | no | GOSA district/system code (FK to districts dimension), zero-padded to 3 digits (7-digit codes are charter authorizers, school rows only). District-detail rows cover the 180 traditional school systems (codes 601-793); school-detail rows additionally include charter authorizer codes. Populated on every row. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). Populated on school rows only — district aggregate rows carry NULL. | | `total_expenditures` | number | metric | currency | | yes | Total expenditures for the fiscal year (nominal dollars, not inflation-adjusted). For DISTRICT rows this is the district's total included expenditures (= federal_expenditures + state_local_expenditures within $1, enforced by a quality check). For SCHOOL rows this is the per-school total — included expenditures plus the school's allocated share of district central costs (= total_federal_expenditures + total_state_local_expenditures within $10; from FY22 also folds in Allocated CCA and Alternative Program costs, so FY22+ school totals are not strictly comparable to FY17-FY21). per_pupil_expenditure = total_expenditures / fte_enrollment at both levels. | | `fte_enrollment` | integer | metric | count | | yes | Full-time-equivalent K-12 enrollment, the denominator of per_pupil_expenditure (per_pupil_expenditure = total_expenditures / fte_enrollment within rounding at both detail levels, enforced by a quality check). | | `per_pupil_expenditure` | number | metric | currency | | yes | Total dollars spent per student for the fiscal year (nominal, not inflation-adjusted). | | `federal_per_pupil_expenditure` | number | metric | currency | | yes | Federal portion of per_pupil_expenditure (nominal dollars). federal_per_pupil_expenditure + state_local_per_pupil_expenditure = per_pupil_expenditure within rounding (enforced by a quality check). NULL for district FY2014. | | `state_local_per_pupil_expenditure` | number | metric | currency | | yes | State + local portion of per_pupil_expenditure (nominal dollars). NULL for district FY2014. | | `federal_expenditures` | number | metric | currency | | yes | Federal portion of the district's total_expenditures (nominal dollars). District-detail rows only. The school-level analogue of this quantity is total_federal_expenditures (both split the shared total_expenditures column); they are kept as separate columns because the school download names them differently and additionally publishes the pre-allocation included_* split, which districts do not. | | `state_local_expenditures` | number | metric | currency | | yes | State + local portion of the district's total_expenditures (nominal dollars). District-detail rows only; the school-level analogue is total_state_local_expenditures. | | `included_expenditures` | number | metric | currency | | yes | Total included expenditures for the school (nominal dollars), BEFORE allocation of district central costs — the school's total_expenditures equals included_expenditures plus its allocated central-cost share. School-detail rows only. Placeholder $0 values on unreported/non-compliant FY17-FY18 rows are NULLed per §4b (see limitations). | | `included_federal_expenditures` | number | metric | currency | | yes | Federal portion of the school's included_expenditures (nominal dollars). included_federal_expenditures + included_state_local_expenditures = included_expenditures (exact in the canonical bronze blocks; enforced by a quality check). School-detail rows only. FY17-FY18 placeholder $0 values NULLed per §4b. | | `included_state_local_expenditures` | number | metric | currency | | yes | State + local portion of the school's included_expenditures (nominal dollars). School-detail rows only. FY17-FY18 placeholder $0 values NULLed per §4b. | | `excluded_expenditures` | number | metric | currency | | yes | Expenditures excluded from the PPE computation (nominal dollars) per the FESR methodology. NOT a component of total_expenditures (totals = included + allocated central costs). School-detail rows only. A few rows per year carry negative values — faithful GOSA restatements preserved per §4b. FY17-FY18 placeholder $0 values NULLed per §4b. | | `total_federal_expenditures` | number | metric | currency | | yes | Federal portion of the school's total_expenditures (post-allocation; nominal dollars). The school-level analogue of the district's federal_expenditures (both split the shared total_expenditures). School-detail rows only. FY17-FY18 placeholder $0 values NULLed per §4b. | | `total_state_local_expenditures` | number | metric | currency | | yes | State + local portion of the school's total_expenditures (post-allocation; nominal dollars). School-detail rows only; the district analogue is state_local_expenditures. FY17-FY18 placeholder $0 values NULLed per §4b. | | `pct_of_district_enrollment` | number | metric | proportion | | yes | The school's share of its district's total enrollment, 0-1 decimal (0.2912 = 29.12%), used by the FESR methodology to allocate district central costs. School-detail rows only. Caveat: within-district sums are not a strict partition — they exceed 1.0 in 55 district-years (up to 1.82), faithful to bronze. | | `ccrpi_single_score` | number | metric | score | | yes | CCRPI-derived annual Single Score, preserved as published (a GOSA score, not a rate). Typically a 0-100 scale; FY17 school scores may exceed 100 due to early-CCRPI challenge-point scoring (29 rows reach ~108.2), so no upper bound is enforced (a negative score is impossible — enforced). NULL for FY2020-FY2022 (program pause). | | `per_pupil_expenditure_three_year_avg` | number | metric | currency | | yes | Three-year rolling average of per_pupil_expenditure (nominal dollars), attributed to the publishing district report's newest fiscal year (FY2016, FY2017, FY2018, FY2019, FY2024) and NULL elsewhere. FY2024's window is non-contiguous (FY19+FY23+FY24). District-detail rows only. C-1 rename of the former ppe_three_year_avg. | | `ccrpi_three_year_avg` | number | metric | score | 0–100 | yes | Three-year rolling average of ccrpi_single_score (0-100 scale), attributed to district report-year rows only (see per_pupil_expenditure_three_year_avg). District-detail rows only. | | `per_pupil_expenditure_percentile` | integer | metric | percentile | | yes | Percentile rank (1-100 integer) of the district's per_pupil_expenditure_three_year_avg among all 180 Georgia districts in the same report — population-based, not a national percentile. Higher = more spending per pupil. District report-year rows only. C-1 rename of the former ppe_percentile. | | `fesr_star_rating` | number | metric | rating | 0.5–5 | yes | Financial Efficiency Star Rating in 0.5 increments. Districts: observed 1.0-5.0; schools: 0.5-5.0 (the value range spans both levels). Populated only on report-year rows; half-steps enforced by a quality check. Bronze stores it as Float64 in early files and as strings in later files; non-numeric publisher statuses (district 'Non-Compliant'; school '.', 'Non-Compliant[ in 20YY]') are NULLed here, with non-compliance preserved via is_non_compliant. | | `is_non_compliant` | boolean | categorical | | | yes | True when the district or school was flagged non-compliant with financial reporting (no star rating issued); false when a rating was published. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `is_non_compliant` — categorical (multi-value) - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/financial_efficiency_star_rating` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/financial_efficiency_star_rating?year=2024` - One district (code 657), 2024: `https://georgiacivicdata.org/api/v1/education/financial_efficiency_star_rating?district_code=657&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/financial_efficiency_star_rating?year=2024&format=csv` Limitations: Two detail levels (district, school) in one fact table, split by parquet filename; school_code is NULL on district rows. Detail level is read from the geography-key NULL pattern. The district level covers FY2014-FY2024 (180 traditional systems, codes 601-793, no charters/RESAs/state agencies); the school level covers FY2017-FY2024 (all schools, including charter authorizers). School-level and district-level rows come from two independent GOSA downloads whose K-12 bases need not reconcile, so school rows are NOT guaranteed to sum to their district row. Level-specific columns are NULL on the other level: federal_expenditures / state_local_expenditures and the three rolling/percentile metrics are district-only; included_* / excluded_expenditures / total_federal_expenditures / total_state_local_expenditures / pct_of_district_enrollment are school-only. The district federal_expenditures and the school total_federal_expenditures are the same federal share of total_expenditures but are kept as separate columns (different source naming; schools also publish the distinct pre-allocation included_* split). fesr_star_rating and the rolling/percentile metrics are populated only on the report-year row of each rolling-window publication; GOSA paused the program FY2020-FY2023 (those years carry only PPE inputs), and ccrpi_single_score is additionally NULL for FY2020-FY2022 (CCRPI paused). District federal/state-local breakdowns are NULL for FY2014 (the only source covering FY14 published totals only). FY2022 methodology change: from FY22 school total_expenditures (and per_pupil_expenditure) additionally include Allocated CCA and Alternative Program costs, so FY22+ school totals are not strictly comparable to FY17-FY21. Placeholder $0 school expenditure amounts on unreported/non-compliant FY17-FY18 rows are NULLed per §4b (see _transform_manifest.json masked_values). A small number of district 660 (Atlanta) school rows carry negative expenditure / per-pupil values — faithful GOSA restatements preserved as-is. Currency is nominal dollars (not inflation-adjusted). No cell-level small-cell suppression exists in this source; NULLs are structural or §4b masks, never suppression. ### Georgia Alternate Assessment (GAA) (`education/gosa/georgia_alternate_assessment`) Achievement results on the alternate assessment for Georgia students with significant cognitive disabilities, by subject and subgroup, 2004-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2004–2024 (no data for 2008, 2009, 2010, 2020, 2021) - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic, subject - Key metric: `pct_proficient_learner_or_above` - Fact endpoint: `GET /api/v1/education/georgia_alternate_assessment` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/georgia_alternate_assessment · Contract: https://georgiacivicdata.org/api/v1/datasets/education/georgia_alternate_assessment/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (e.g., 2024 = 2023-24). Derived from the filename; for 2011-2024 cross-checked against the source's LONG_SCHOOL_YEAR. 2008-2010 and 2020-2021 are absent from the source. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded standard code or 7-digit state-charter code. NULL on state-level aggregate rows. | | `school_code` | string | fk_school | | | yes | 4-digit zero-padded GOSA school code (FK to schools dimension as the composite (district_code, school_code) key). NULL on district- and state-level aggregate rows. The 2019 source file ships codes unpadded; zfill(4) restores the dimension's 4-char format. | | `demographic` | string | fk_demographic | | | no | Demographic subgroup the row reports; 'all' for every 2004-2007 row and for the overall figure thereafter. | | `subject` | string | categorical | | | yes | Content area assessed (ELA, math, science, or social studies); NULL for 2004-2007 participation-only rows. | | `num_enrolled_ayp_grades` | integer | metric | count | | yes | Total enrollment in AYP-applicable grades (grades 1-8 and 11). Published ONLY for 2004-2007; NULL for every 2011-2024 row (GOSA stopped publishing the column). Note: num_tested can legitimately exceed this value (e.g., DeKalb school 644:3058 in 2004-2005) because the GAA is also administered in non-AYP grades while this denominator counts AYP grades only. | | `num_tested` | integer | metric | count | | yes | Count of students taking the GAA in this cell. Always reported 2004(*)-2023; in 2024 GOSA suppressed it (TFS) on ~84% of rows while still publishing the level percentages, so most 2024 rows have NULL num_tested with non-NULL pct_*_learner values. (*) A handful of 2004 rows have NULL metrics as published. | | `num_beginning_learner` | integer | metric | count | | yes | Count scoring at the lowest achievement tier. Unifies the era namings LIMITED (2011-2018, 2022-2023), Level1 (2019), and BEGIN (2024). NULL for 2004-2007 (no achievement detail) and for suppressed cells. | | `num_developing_learner` | integer | metric | count | | yes | Count scoring at the second tier (PARTIAL / Level2 / DEVELOPING across eras). NULL for 2004-2007 and for suppressed cells. | | `num_proficient_learner` | integer | metric | count | | yes | Count scoring at the third tier (ADEQUATE / Level3 / PROFICIENT across eras). NULL for 2004-2007 and for suppressed cells. | | `num_distinguished_learner` | integer | metric | count | | yes | Count scoring at the highest (4th) achievement tier (Level4 / THOROUGH / DISTINGUISHED across eras). NULL for 2004-2007 AND for all of 2011-2018: the GAA used 3-tier scoring then and the tier did not exist (the source's reserved THUROUGH column, always 0/empty, is dropped rather than served as a phantom all-zero metric). Also NULL for suppressed cells. | | `pct_beginning_learner` | number | metric | proportion | | yes | Share of tested students at the lowest tier, 0-1 scale (bronze publishes 0-100; divided by 100). NULL for 2004-2007 and suppressed cells. | | `pct_developing_learner` | number | metric | proportion | | yes | Share at the second tier, 0-1 scale. NULL for 2004-2007 and suppressed cells. | | `pct_proficient_learner` | number | metric | proportion | | yes | Share at the third tier, 0-1 scale. NULL for 2004-2007 and suppressed cells. | | `pct_distinguished_learner` | number | metric | proportion | | yes | Share at the highest tier, 0-1 scale. NULL for 2004-2007, for ALL of 2011-2018 (3-tier era — tier did not exist), and for suppressed cells. | | `pct_developing_learner_or_above` | number | metric | proportion | | yes | Derived cumulative share at Developing or higher, 0-1 scale. For 4-tier years (2019+): developing + proficient + distinguished (NULL when any summand is suppressed). For the 3-tier 2011-2018 era the absent distinguished tier is omitted from the sum (developing + proficient), so those years ARE populated. Publisher-rounded summands can overshoot 1.0 by up to 0.001; overshoot within 0.005 is capped to 1.0. NULL for 2004-2007. | | `pct_proficient_learner_or_above` | number | metric | proportion | | yes | Share of tested students scoring Proficient Learner or higher, on a 0-1 scale (the headline GAA proficiency rate). | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `active_duty`, `all`, `asian`, `black`, `economically_disadvantaged`, `english_learners`, `female`, `foster_care`, `hispanic`, `homeless`, `male`, `migrant`, `military_connected`, `multiracial`, `native_american`, `not_economically_disadvantaged`, `not_english_learners`, `not_migrant`, `pacific_islander`, `students_with_disabilities`, `students_without_disabilities`, `white` - `subject` — categorical (multi-value, enum-enforced): `english_language_arts`, `mathematics`, `science`, `social_studies` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/georgia_alternate_assessment` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/georgia_alternate_assessment?year=2024` - Filtered to subject = english_language_arts for 2024: `https://georgiacivicdata.org/api/v1/education/georgia_alternate_assessment?year=2024&subject=english_language_arts` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/georgia_alternate_assessment?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/georgia_alternate_assessment?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### Georgia Milestones End-of-Course (EOC) Results by Grade (`education/gosa/georgia_milestones_end_of_course_by_grade_level`) Georgia Milestones high school course achievement results broken out by test-taker grade, course, and subgroup, 2015-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2015–2024 (no data for 2020) - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic, grade_level, subject - Key metric: `pct_proficient_learner_or_above` - Fact endpoint: `GET /api/v1/education/georgia_milestones_end_of_course_by_grade_level` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/georgia_milestones_end_of_course_by_grade_level · Contract: https://georgiacivicdata.org/api/v1/datasets/education/georgia_milestones_end_of_course_by_grade_level/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (e.g., 2024 = 2023-24). Derived from the filename and cross-checked against the source's LONG_SCHOOL_YEAR. 2020 is absent (EOC testing suspended during COVID-19 closures). | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit state-charter codes. NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). NULL on district- and state-level rows. | | `demographic` | string | fk_demographic | | | no | Demographic subgroup the row reports; 'all' is the overall figure (subgroups are non-additive). | | `grade_level` | string | categorical | | | no | Grade level of the test-takers, 07-12; grade 7 is rare and grade 12 includes retakes. | | `subject` | string | categorical | | | no | EOC course assessed (e.g. biology, algebra_i, us_history); the value set tracks curriculum changes over time. | | `num_tested` | integer | metric | count | | yes | Count of students in this grade tested on this EOC course in this (entity x demographic) cell. Includes test-takers without a valid achievement-level score, so it can exceed the sum of the four num_*_learner counts (observed in 2023-2024; the sum never exceeds num_tested). Suppressed (NULL) in every year, most heavily in 2024 (~55% of rows) where the pct_* columns still carry the rounded distribution. | | `num_beginning_learner` | integer | metric | count | | yes | Count of students scoring Beginning Learner (lowest of the four achievement levels). Bronze BEGIN_CNT; NULL when suppressed (TFS string, or — on the fully-suppressed rows of every 2015-2019 file — genuine empty CSV fields). | | `num_developing_learner` | integer | metric | count | | yes | Count of students scoring Developing Learner. Bronze DEVELOPING_CNT. 2017 ANOMALY: the 2017 source file is the only year/column where suppression was ENTIRELY absent (zero TFS markers) — it carries 3,001 literal 0 values and a ~7% null rate vs 43-75% in every other year, conflating true zeros with small counts the publisher should have suppressed. Two sibling columns show the same published-zero irregularity in single years (num_distinguished_learner 2015: 4,940 zeros; num_proficient_learner 2017: 824 zeros — see those columns); no other year/column pair has any literal zeros. Bronze-faithful pass-through; do not compare 2017 values for this column directly against other years. | | `num_proficient_learner` | integer | metric | count | | yes | Count of students scoring Proficient Learner. Bronze PROFICIENT_CNT; NULL when suppressed. 2017 CAVEAT: the 2017 source published 824 literal 0 values for this column (TFS suppression was still applied to 47,937 other cells) — no other year has any. The zeros conflate true zeros with small counts that would normally be suppressed; bronze-faithful pass-through. | | `num_distinguished_learner` | integer | metric | count | | yes | Count of students scoring Distinguished Learner (highest level). The most heavily suppressed metric (~80% NULL in 2023, ~88% in 2024) — few cells have enough distinguished scorers to clear the threshold. 2015 CAVEAT: the 2015 source published 4,940 literal 0 values for this column (TFS suppression was still applied to 48,267 other cells), depressing the 2015 null rate to ~52% vs 75-79% in 2016-2019 (2015 min is 0 vs 10 elsewhere); no other year has any. The zeros conflate true zeros with small counts that would normally be suppressed — do not compare 2015 values for this column directly against later years; bronze-faithful pass-through. | | `pct_beginning_learner` | number | metric | proportion | | yes | Share of tested students scoring Beginning Learner, 0-1 scale (bronze 0-100 divided by 100). In 2015-2023 NULL exactly when num_tested is NULL (fully suppressed cell); in 2024 always reported — GOSA publishes the rounded distribution even when every count is suppressed. The four pct_*_learner shares are computed against num_tested and can sum to less than 1.0 when some test-takers lack a valid achievement-level score (pronounced in 2023-2024); they never sum above ~1.002 (rounding). | | `pct_developing_learner` | number | metric | proportion | | yes | Share of tested students scoring Developing Learner, 0-1 scale. Same suppression and partition behavior as pct_beginning_learner. | | `pct_proficient_learner` | number | metric | proportion | | yes | Share of tested students scoring Proficient Learner, 0-1 scale. Same suppression and partition behavior as pct_beginning_learner. | | `pct_distinguished_learner` | number | metric | proportion | | yes | Share of tested students scoring Distinguished Learner, 0-1 scale. Same suppression and partition behavior as pct_beginning_learner. | | `pct_developing_learner_or_above` | number | metric | proportion | | yes | Cumulative share at Developing Learner or higher, derived at transform time as pct_developing_learner + pct_proficient_learner + pct_distinguished_learner (0-1 scale). Sums of publisher-rounded shares landing within 0.005 above 1.0 are capped to 1.0. NULL whenever any summand is NULL. | | `pct_proficient_learner_or_above` | number | metric | proportion | | yes | Share of tested students scoring Proficient Learner or higher, on a 0-1 scale (the headline EOC proficiency rate). | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `active_duty`, `all`, `asian`, `black`, `economically_disadvantaged`, `english_learners`, `female`, `foster_care`, `hispanic`, `homeless`, `male`, `migrant`, `military_connected`, `multiracial`, `native_american`, `not_economically_disadvantaged`, `not_english_learners`, `not_migrant`, `pacific_islander`, `students_with_disabilities`, `students_without_disabilities`, `white` - `grade_level` — categorical (multi-value, enum-enforced): `07`, `08`, `09`, `10`, `11`, `12` - `subject` — categorical (multi-value, enum-enforced): `9th_grade_literature_and_composition`, `algebra_concepts_and_connections`, `algebra_i`, `american_literature_and_composition`, `analytic_geometry`, `biology`, `coordinate_algebra`, `economics_business_free_enterprise`, `geometry`, `physical_science`, `us_history` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course_by_grade_level` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course_by_grade_level?year=2024` - Filtered to grade_level = 07 for 2024: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course_by_grade_level?year=2024&grade_level=07` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course_by_grade_level?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course_by_grade_level?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### Georgia Milestones EOC Lexile Reading Scores (`education/gosa/georgia_milestones_end_of_course_lexile`) Lexile reading-measure distributions from Georgia's two ELA End-of-Course exams by school, district, and state, 2015-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2015–2024 (no data for 2020) - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, subject - Key metric: `avg_lexile_score` - Fact endpoint: `GET /api/v1/education/georgia_milestones_end_of_course_lexile` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/georgia_milestones_end_of_course_lexile · Contract: https://georgiacivicdata.org/api/v1/datasets/education/georgia_milestones_end_of_course_lexile/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (e.g., 2024 = 2023-24). Derived from the filename and cross-checked against the bronze SCHOOL_YEAR column. 2020 is absent (EOC testing suspended during COVID-19 closures). | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit state-charter codes. NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). NULL on district- and state-level rows. | | `subject` | string | categorical | | | no | Which ELA End-of-Course exam the row covers: 9th Grade Literature (through 2021) or American Literature. | | `num_tested` | integer | metric | count | | yes | Count of students who took the subject's EOC. Bronze TOTAL_STUDENTS_TESTED. NULL when the source cell is blank (2015-2019 — those files contain no TFS) or TFS-suppressed (2021-2024); 4-18% of rows depending on year. | | `num_with_lexile` | integer | metric | count | | yes | Count of tested students whose EOC produced a usable Lexile measure — equal to or slightly below num_tested, never above it (enforced). Reported exactly when avg_lexile_score is reported (enforced biconditional). Bronze STUDENTS_WITH_LEXILE; NULL when blank (2015-2019) or TFS-suppressed (2021-2024). In all years only 2 rows have num_tested reported with this column missing (2015 Polk County school 0207; 2016 Bleckley County school 0115 — blank cells, not TFS). | | `num_without_lexile` | integer | metric | count | | yes | Count of tested students who did NOT receive a usable Lexile measure, as published by GOSA (bronze NO_LEXILE_SCORE). This is an independently reported source count, NOT the arithmetic complement num_tested - num_with_lexile: of the 140 rows (all years) where all three counts are numeric, 45 disagree with that derivation (by up to 99 students), so the published column is retained rather than derived and no with+without=tested check is enforced. Heavily suppressed (~94-99% NULL). | | `num_at_or_above_lexile_midpoint` | integer | metric | count | | yes | Count of students whose Lexile measure was at or above the midpoint of the course's Lexile range (GOSA's 'on-track reader' / grade-level threshold: 1050L for 9th Grade Literature, 1185L for American Literature). A raw COUNT, not a percentage (2024 state row: 69,660 of 132,835 students with a Lexile = 52.4%) — derive a share by dividing by num_with_lexile (the population with a valid Lexile), not num_tested. Never exceeds num_with_lexile (enforced). Bronze LEXILE_ON_OR_ABOVE_MIDPOINT; NULL when suppressed. | | `avg_lexile_score` | number | metric | score | 0–2000 | yes | Average Lexile reading measure (on the natural Lexile scale, not a percentage) among students who received one. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `subject` — categorical (multi-value, enum-enforced): `9th_grade_literature_and_composition`, `american_literature_and_composition` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course_lexile` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course_lexile?year=2024` - Filtered to subject = 9th_grade_literature_and_composition for 2024: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course_lexile?year=2024&subject=9th_grade_literature_and_composition` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course_lexile?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_course_lexile?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### Georgia Milestones End-of-Grade Assessment by Grade (`education/gosa/georgia_milestones_end_of_grade_by_grade_level`) Georgia Milestones End-of-Grade achievement levels by grade, subject, and demographic for schools, districts, and the state, 2015-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2015–2024 (no data for 2020) - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic, grade_level, subject - Key metric: `pct_proficient_learner_or_above` - Fact endpoint: `GET /api/v1/education/georgia_milestones_end_of_grade_by_grade_level` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/georgia_milestones_end_of_grade_by_grade_level · Contract: https://georgiacivicdata.org/api/v1/datasets/education/georgia_milestones_end_of_grade_by_grade_level/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (e.g., 2024 = 2023-24), from the filename and cross-checked against the file's LONG_SCHOOL_YEAR. 2020 has no rows (EOG cancelled during COVID-19 closures). | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded standard codes or 7-digit state-charter / commission-charter / state-school codes. NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). NULL on district- and state-level rows. | | `demographic` | string | fk_demographic | | | no | Student subgroup the row covers (race, gender, economic, disability, English-learner, etc.); 'all' is all students. | | `grade_level` | string | categorical | | | no | Grade tested, 03-08; this is the grade-by-grade breakout that distinguishes this topic from the all-grades rollup. | | `subject` | string | categorical | | | no | EOG content area tested (ELA, mathematics, science, social studies, physical science); coverage varies by grade and year. | | `num_tested` | integer | metric | count | | yes | Number of students tested in this (entity x grade x subgroup x subject) cell. NULL when GOSA suppressed the cell (TFS); in 2024 GOSA extended suppression to this column (~30% of rows) while still publishing the rounded percentage distribution. | | `num_beginning_learner` | integer | metric | count | | yes | Count of students at the lowest achievement level (Beginning Learner). Bronze BEGIN_CNT; NULL when suppressed. | | `num_developing_learner` | integer | metric | count | | yes | Count of students at the second achievement level (Developing Learner). Bronze DEVELOPING_CNT; NULL when suppressed. | | `num_proficient_learner` | integer | metric | count | | yes | Count of students at the third achievement level (Proficient Learner). Bronze PROFICIENT_CNT; NULL when suppressed. | | `num_distinguished_learner` | integer | metric | count | | yes | Count of students at the highest achievement level (Distinguished Learner). Bronze DISTINGUISHED_CNT; the most-suppressed metric (~70-76% of rows in recent years — few cells have enough distinguished scorers to clear the threshold). | | `pct_beginning_learner` | number | metric | proportion | | yes | Share of tested students at the Beginning level, 0-1 scale (bronze 0-100 divided by 100). Published shares are exact to one decimal on the 0-100 scale against num_tested. CAVEAT: on foster_care rows from 2022 onward the four level shares can sum below 1 (students tested but not assigned a level, plus all-zero placeholder rows on fully-suppressed cells) — published GOSA values are preserved exactly. | | `pct_developing_learner` | number | metric | proportion | | yes | Share of tested students at the Developing level, 0-1 scale. See pct_beginning_learner for the foster_care caveat. | | `pct_proficient_learner` | number | metric | proportion | | yes | Share of tested students at the Proficient level, 0-1 scale. See pct_beginning_learner for the foster_care caveat. | | `pct_distinguished_learner` | number | metric | proportion | | yes | Share of tested students at the Distinguished level, 0-1 scale. See pct_beginning_learner for the foster_care caveat. | | `pct_developing_learner_or_above` | number | metric | proportion | | yes | Derived cumulative share at Developing or above (developing + proficient + distinguished), 0-1 scale. Computed at transform time from the published per-level shares; sums of publisher-rounded shares that land within 0.005 above 1.0 are snapped to 1.0 (a share cannot exceed 1). | | `pct_proficient_learner_or_above` | number | metric | proportion | | yes | Share of tested students scoring Proficient or Distinguished (proficient-or-above), on a 0-1 scale; the headline achievement measure. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `active_duty`, `all`, `asian`, `black`, `economically_disadvantaged`, `english_learners`, `female`, `foster_care`, `hispanic`, `homeless`, `male`, `migrant`, `military_connected`, `multiracial`, `native_american`, `not_economically_disadvantaged`, `not_english_learners`, `not_migrant`, `pacific_islander`, `students_with_disabilities`, `students_without_disabilities`, `white` - `grade_level` — categorical (multi-value, enum-enforced): `03`, `04`, `05`, `06`, `07`, `08` - `subject` — categorical (multi-value, enum-enforced): `english_language_arts`, `mathematics`, `physical_science`, `science`, `social_studies` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade_by_grade_level` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade_by_grade_level?year=2024` - Filtered to grade_level = 03 for 2024: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade_by_grade_level?year=2024&grade_level=03` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade_by_grade_level?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade_by_grade_level?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code; district rows have NULL school_code. 2020 has no rows (EOG cancelled during COVID-19). Grade x subject coverage is naturally sparse and changes over time (science/social_studies grades 5+8 only from 2017, social_studies grade 8 only from 2021, physical_science grade 8 only). Foster Care caveat (2022-2024): the foster_care rows are the only rows whose four per-level shares can fail to sum to 1 — 28 fully-unsuppressed state-level rows carry level counts summing below num_tested (students tested but not assigned a performance level at publication), and partially- or fully-suppressed foster_care cells publish shares covering only the unsuppressed levels, including an all-four-zeros placeholder pattern. The published GOSA values are preserved exactly rather than reconciled. ### Georgia Milestones End-of-Grade Lexile Reading Scores (`education/gosa/georgia_milestones_end_of_grade_lexile`) Lexile reading-measure distributions by grade at school, district, and state level, 2015-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2015–2024 (no data for 2020) - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, grade_level, subject - Key metric: `avg_lexile_score` - Fact endpoint: `GET /api/v1/education/georgia_milestones_end_of_grade_lexile` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/georgia_milestones_end_of_grade_lexile · Contract: https://georgiacivicdata.org/api/v1/datasets/education/georgia_milestones_end_of_grade_lexile/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (e.g., 2024 = 2023-24), from the filename and cross-checked against the file's SCHOOL_YEAR column. 2020 has no rows (EOG testing suspended during COVID-19 closures). | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded standard codes or 7-digit state-charter codes. NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). NULL on district- and state-level rows. | | `grade_level` | string | categorical | | | no | Grade the EOG ELA assessment was given to, as a 2-char code (03-08; EOG covers grades 3-8). | | `subject` | string | categorical | | | no | Academic subject; always english_language_arts (Lexile measures exist only for the EOG ELA test). | | `num_tested` | integer | metric | count | | yes | Count of students who took the EOG ELA assessment in this cell. Bronze TOTAL_STUDENTS_TESTED. NULL when suppressed (TFS, 2021+) or genuinely empty in the source (every 2015-2019 file, 126-141 cells per year). | | `num_with_lexile` | integer | metric | count | | yes | Count of tested students who received a usable Lexile measure; never exceeds num_tested (verified, authored as a quality check). Bronze STUDENTS_WITH_LEXILE. NULL when suppressed. | | `num_at_or_above_lexile_midpoint` | integer | metric | count | | yes | Count of students whose Lexile measure was at or above the grade-band stretch midpoint (GOSA's on-track-reader threshold). A raw COUNT, not a percentage — to derive the share, divide by num_with_lexile (the population with a valid Lexile), not num_tested. Never exceeds num_with_lexile (verified, authored as a quality check). Bronze LEXILE_ON_OR_ABOVE_MIDPOINT. NULL when suppressed. | | `num_without_lexile` | integer | metric | count | | yes | Count of tested students who did not receive a Lexile measure. Bronze NO_LEXILE_SCORE. From 2021 onward ~99% of cells are TFS-suppressed (few students at any school lack a Lexile), so the column is ~99% NULL post-COVID; retained for pre-2020 comparability. CAVEAT: num_with_lexile + num_without_lexile does NOT reliably equal num_tested — small +/- discrepancies exist in every year, and 2023/2024 state- and district-level rows fall short by thousands (the published aggregate does not reconcile); published values are preserved exactly. | | `avg_lexile_score` | number | metric | score | 0–2000 | yes | Average Lexile reading measure among students who got one, on the natural Lexile scale; not a percentage. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `grade_level` — categorical (multi-value, enum-enforced): `03`, `04`, `05`, `06`, `07`, `08` - `subject` — categorical (multi-value, enum-enforced): `english_language_arts` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade_lexile` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade_lexile?year=2024` - Filtered to grade_level = 03 for 2024: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade_lexile?year=2024&grade_level=03` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade_lexile?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/georgia_milestones_end_of_grade_lexile?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code. ### Four-Year Cohort Graduation Rate (`education/gosa/graduation_rate_4_year_cohort`) Share of the four-year high school cohort that graduated, by school, district, and state and demographic subgroup, 2004-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2004–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic - Key metric: `graduation_rate` - Fact endpoint: `GET /api/v1/education/graduation_rate_4_year_cohort` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/graduation_rate_4_year_cohort · Contract: https://georgiacivicdata.org/api/v1/datasets/education/graduation_rate_4_year_cohort/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending (spring) calendar year of the cohort's graduating school year (2024 = the 2023-24 cohort). Parsed from the source's LONG_SCHOOL_YEAR and cross-checked against the filename for 2011-2024; from the filename for 2004-2010 (no year column in those eras). | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit state-charter codes. Code 799 is the state-school virtual district ('State Schools'), published as a district-level aggregate in 2004-2010. NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). NULL on district- and state-level rows. | | `demographic` | string | fk_demographic | | | no | Student subgroup the row reports (race/ethnicity, gender, disability, economic status, special population); 'all' is the total. | | `num_graduates` | integer | metric | count | | yes | Number of students in the subgroup's cohort who graduated with a regular diploma within four years of first entering 9th grade (from 2011 the federal adjusted-cohort numerator; 2004-2010 use the state's earlier leaver-based accounting). Published values are >= 10 from 2011 onward (GOSA's n=10 reporting threshold). 2004-2009 use literal zeros for suppressed cells — a zero in those years may be real or suppressed and the two cannot be distinguished in source. The three non-suppressed 2010 migrant rows are internally inconsistent in bronze (num_graduates = num_cohort yet graduation_rate != 1.0; graduation_rate is the authoritative figure) and are preserved as published. | | `num_cohort` | integer | metric | count | | yes | Cohort size — the denominator of the graduation rate. From 2011 this is the federal adjusted four-year cohort (first-time 9th-graders four years prior, plus transfers in, minus transfers out); the 2004-2010 denominator is the source's 'Approximate Class Size' (pre-ACGR leaver-based methodology). NULL for ALL rows in 2012-2016 (the source does not publish TOTAL_COUNT in those years; consumers may estimate round(num_graduates / graduation_rate) at their own rounding risk). In 2023-2024 some rows — mostly school-level (295 school / 74 district in 2023, 271 / 68 in 2024) — publish num_cohort while num_graduates and graduation_rate are suppressed (partial suppression). Published values are >= 10 from 2011 onward. 2004-2009 zeros may be real or suppressed (see num_graduates). | | `graduation_rate` | number | metric | proportion | | yes | Share of the four-year cohort that graduated, on a 0-1 scale; 2011+ is the federal ACGR, 2004-2010 a non-comparable older method. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `active_duty`, `all`, `asian_pacific_islander`, `black`, `economically_disadvantaged`, `english_learners`, `female`, `foster_care`, `hispanic`, `homeless`, `male`, `migrant`, `multiracial`, `native_american`, `not_economically_disadvantaged`, `students_with_disabilities`, `students_without_disabilities`, `white` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/graduation_rate_4_year_cohort` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/graduation_rate_4_year_cohort?year=2024` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/graduation_rate_4_year_cohort?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/graduation_rate_4_year_cohort?year=2024&format=csv` Limitations: 2004-2010 figures predate Georgia's adoption of the federal four-year adjusted-cohort methodology (ACGR, first reported 2011) and use the state's earlier leaver-based rate; the 2010->2011 state rate drop (~81% to ~67%) is a methodology break, not a real decline — do not trend across it. Suppressed cells are NULL (not zero) from 2010 onward, but 2004-2009 sources use literal ZEROS for suppressed cells — a zero rate/count in those years may be real or suppressed and cannot be distinguished; treat very small cohorts in 2004-2009 with caution. num_cohort is NULL for every row in 2012-2016 (the source publishes no denominator in those years). School rows do not always sum to the published district row (49 of ~3,850 district-years publish a district num_graduates below the visible school sum, source-published, e.g. 2016 Whitfield 709 vs 810) — use the official district/state rows for rollups rather than summing school rows. The race axis uses the combined asian_pacific_islander bucket — not comparable row-for-row with split-convention topics without aggregating those topics' asian + pacific_islander rows at query time. State rows have NULL district_code and school_code; district rows have NULL school_code. ### High School Completers (`education/gosa/high_school_completers`) Counts of Georgia high school completers by diploma or certificate type, by school, district, and state and demographic subgroup, 2011-2024. - Source: GOSA (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2011–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic, completer_type, credential_type - Key metric: `num_completers` - Fact endpoint: `GET /api/v1/education/high_school_completers` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/high_school_completers · Contract: https://georgiacivicdata.org/api/v1/datasets/education/high_school_completers/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending (spring) calendar year of the school year (e.g. 2024 for 2023-24), parsed from the source's LONG_SCHOOL_YEAR and cross-checked against the filename. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit state-charter codes. NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). The 2011, 2018, 2019, and 2020 source files mix 3- and 4-character codes; the transform normalizes all years to 4 characters. NULL on district- and state-level rows. | | `demographic` | string | fk_demographic | | | no | Demographic subgroup: all students, gender, or one of six race/ethnicity buckets (Asian is combined Asian/Pacific Islander). | | `completer_type` | string | categorical | | | no | High-level cohort: graduates (the four diploma credentials) vs. other_completers (special-ed diplomas and certificates of attendance). | | `credential_type` | string | categorical | | | no | Specific credential earned: general-education, college-prep, vocational, or both diplomas, special-ed diplomas, or certificates of attendance. | | `num_completers` | integer | metric | count | | yes | Number of completers in this demographic who earned this credential during the school year; NULL means GOSA suppressed a small cell, not zero. | | `pct_of_credential_type` | number | metric | proportion | | yes | Share of the credential's completers who belong to this demographic — a demographic-within-credential share on the 0-1 scale (source publishes 0-100 with one decimal; divided by 100). The denominator is the credential's own demographic='all' total at the same geography, NOT the completer_type cohort total: rows with demographic='all' are always exactly 1.0 where published, gender pairs sum to ~1, and the six race buckets sum to ~1 within a credential (all pinned as quality checks). Credentials do NOT sum to 1 within a completer_type. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `all`, `asian_pacific_islander`, `black`, `female`, `hispanic`, `male`, `multiracial`, `native_american`, `white` - `completer_type` — categorical (multi-value, enum-enforced): `graduates`, `other_completers` - `credential_type` — categorical (multi-value, enum-enforced): `certificates_of_attendance`, `diplomas_college_prep`, `diplomas_college_prep_and_vocational`, `diplomas_vocational`, `general_education_diplomas`, `special_education_diplomas` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/high_school_completers` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/high_school_completers?year=2024` - Filtered to completer_type = graduates for 2024: `https://georgiacivicdata.org/api/v1/education/high_school_completers?year=2024&completer_type=graduates` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/high_school_completers?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/high_school_completers?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero): GOSA suppresses small cells, blanking ~65-90% of num_completers values depending on the year (suppression tightened over time), and even some state-level cells (e.g. the phased-out endorsement-diploma credentials in recent years) — school-level analyses should expect sparse coverage, and summing only published subgroup counts undercounts true totals. pct_of_credential_type is a demographic composition share (demographic within credential), not a credential-mix share — do not sum it across credentials. State rows have NULL district_code and school_code; district rows have NULL school_code. The race axis uses the combined asian_pacific_islander bucket — not comparable row-for-row with split-convention topics without aggregating those topics' asian + pacific_islander rows at query time. year=2011 lacks the general_education_diplomas credential (it did not exist yet). ### HOPE-Eligible Graduates (`education/gosa/hope_eligible_graduates`) Georgia high school graduates who met the academic eligibility criteria for the HOPE scholarship, by school, district, and state, 2004-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2004–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code - Key metric: `hope_eligible_rate` - Fact endpoint: `GET /api/v1/education/hope_eligible_graduates` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/hope_eligible_graduates · Contract: https://georgiacivicdata.org/api/v1/datasets/education/hope_eligible_graduates/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Spring graduation year (e.g., 2024 = spring-2024 graduating class, 2023-2024 school year). For Era 1 and Era 2 files the filename year is cross-checked against the LONG_SCHOOL_YEAR column's ending year and must match. | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district code (zero-padded). 7-digit charter / state-school codes pass through unchanged (e.g., 7820412). NULL for state-level aggregate rows. FK to districts dimension. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (zero-padded). NULL for district- and state-level aggregate rows. FK to schools dimension (composite PK with district_code). Bronze padding is inconsistent across eras (the composite-key eras ship unpadded 3-digit codes; Era 2 mixes by year; 2008 mixes within the file); the transform normalizes to 4 digits via zfill. | | `num_graduates` | integer | metric | count | | yes | Number of regular high-school graduates in the cohort. NULL when suppressed in bronze (TFS = Too Few Students, applied per the 2009 source SQL when graduates <= 9; affects 2009 and 2011-2024) or when the bronze cell is genuinely blank — a value GOSA left unreported (all 2014 and 2020 NULLs are blank cells; those files contain no TFS markers). The 2004-2008 and 2010 files have no suppression, so their values are uncensored. | | `num_hope_eligible` | integer | metric | count | | yes | Number of graduates in this cohort who met HOPE academic eligibility (GPA + required-course requirements). NULL when TFS-suppressed or when the bronze cell is genuinely blank (both occur in 2011-2020; see the suppression note). May be 0 (e.g., Renaissance Academy in 2008 had 28 graduates and 0 HOPE-eligible — a real zero, not suppression). Never exceeds num_graduates (enforced by a quality check; 0 violations in bronze). | | `hope_eligible_rate` | number | metric | proportion | | yes | Share of graduates that met HOPE academic eligibility, on a 0-1 scale; NULL when suppressed (too few students). | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/hope_eligible_graduates` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/hope_eligible_graduates?year=2024` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/hope_eligible_graduates?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/hope_eligible_graduates?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code; district rows have NULL school_code. Derived-aggregate caveat: for 2008 the bronze ships only school-level rows, so all district and state aggregate rows are derived here (sum of counts, graduate-count-weighted mean for hope_eligible_rate); the derived 2008 state total matches the bronze State Level sheet exactly (Renaissance Academy, fully orphaned, is excluded by both). For 2004 the bronze has school + state rows but no district rollups, so the 2004 district rows are likewise derived from the school rows. A separate known 2004 bronze artifact means the official state total (68,163 graduates / 42,233 eligible) is ~0.2% higher than the sum of itemized 2004 school rows, so a user roll-up from schools/districts to state will be ~0.2% short for 2004 only. ### Postsecondary Enrollment of HS Graduates (C11, Nationwide) (`education/gosa/postsecondary_c11`) How many Georgia public high school graduates enrolled in college anywhere in the US, by school, district, and demographic subgroup, 2010-2022 cohorts. - Source: GOSA (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2010–2022 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic - Key metric: `num_enrolled_in_college` - Fact endpoint: `GET /api/v1/education/postsecondary_c11` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/postsecondary_c11 · Contract: https://georgiacivicdata.org/api/v1/datasets/education/postsecondary_c11/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | High school graduating-cohort year (spring calendar year of graduation, e.g. 2022 for the class of 2021-22) — NOT the publication year, which is consistently cohort + 2. Read from the source's School Year / SCHOOL_YEAR column and cross-checked against the filename offset. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit state-charter codes. NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). NULL on district- and state-level rows. | | `demographic` | string | fk_demographic | | | no | Student subgroup the row covers (race, gender, economic, or special-population); 'all' is the cohort total. Race uses the split asian / pacific_islander convention. | | `num_graduates` | integer | metric | count | | yes | Number of students in the demographic subgroup who graduated high school in the cohort year. Published values are always >= 10 because GOSA suppresses smaller cells per metric (TFS); ~51-53% of metric cells are suppressed in every file, concentrated in small subgroups (Migrant, Pacific Islander, American Indian/Alaskan Native, LEP) at school level. If num_graduates is suppressed, num_enrolled_in_college is always suppressed too (enrolled <= graduates). | | `num_enrolled_in_college` | integer | metric | count | | yes | Count of the cohort's graduates who enrolled in any US college within about a year; divide by num_graduates for the college-going rate. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `all`, `asian`, `black`, `economically_disadvantaged`, `english_learners`, `female`, `hispanic`, `male`, `migrant`, `multiracial`, `native_american`, `pacific_islander`, `students_with_disabilities`, `white` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/postsecondary_c11` - schools data for 2022: `https://georgiacivicdata.org/api/v1/education/postsecondary_c11?year=2022` - One district (code 601), 2022: `https://georgiacivicdata.org/api/v1/education/postsecondary_c11?district_code=601&year=2022&detail=districts` - Download 2022 as CSV: `https://georgiacivicdata.org/api/v1/education/postsecondary_c11?year=2022&format=csv` Limitations: Suppressed cells are NULL (not zero): GOSA suppresses any metric cell below the n=10 reporting threshold (TFS), which blanks ~51-53% of metric cells in every file — small subgroups (Migrant, Pacific Islander, American Indian/Alaskan Native, LEP) are almost entirely suppressed at school level, and summing only published subgroup counts undercounts true totals (use district or state rows for official aggregates). Suppression is per metric cell, so num_enrolled_in_college can be NULL while num_graduates is published. year is the HS graduating-cohort year, not the publication year (cohort + 2). The 2010 cohort has no pacific_islander rows and its race buckets undercount the total by ~1.1%. State rows have NULL district_code and school_code; district rows have NULL school_code. The race axis uses the split asian / pacific_islander convention — not comparable row-for-row with combined-convention topics without aggregating these rows at query time. ### Postsecondary Outcomes of HS Graduates (C12, Georgia) (`education/gosa/postsecondary_c12`) How many Georgia public high school graduates enrolled in a Georgia college and earned a year of credit, by school, district, and demographic subgroup, 2008-2020 cohorts. - Source: GOSA (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2008–2020 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic - Key metric: `num_enrolled_in_college` - Fact endpoint: `GET /api/v1/education/postsecondary_c12` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/postsecondary_c12 · Contract: https://georgiacivicdata.org/api/v1/datasets/education/postsecondary_c12/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | HS graduating cohort year (ending calendar year of the school year; 2020 means the class of 2019-20), parsed from the source's School Year column and cross-checked against the filename (publication year = cohort year + 4). Never the publication year. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit state-charter codes. NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). The 2015-2019 source files strip leading zeros; the transform restores them. NULL on district- and state-level rows. | | `demographic` | string | fk_demographic | | | no | Student subgroup the row covers (race, gender, economic, or special-population); 'all' is the cohort total. Race uses the split asian / pacific_islander convention. | | `num_graduates` | integer | metric | count | | yes | Number of students in the demographic subgroup who graduated from high school in the cohort year. Published values are always >= 10 (GOSA suppresses smaller cells as TFS). The denominator for both derived rates. | | `num_enrolled_in_college` | integer | metric | count | | yes | Count of the cohort's graduates who enrolled in a Georgia college; divide by num_graduates for the in-state college-going rate (Georgia institutions only). | | `num_earned_24_credits` | integer | metric | count | | yes | Number of those graduates who accumulated at least 24 credit hours of postsecondary coursework — roughly one year of college instruction — within two years of initial enrollment; a persistence / college-readiness signal. Never exceeds num_enrolled_in_college or num_graduates where both are published (enforced by quality checks). | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `all`, `asian`, `black`, `economically_disadvantaged`, `english_learners`, `female`, `hispanic`, `male`, `migrant`, `multiracial`, `native_american`, `pacific_islander`, `students_with_disabilities`, `white` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/postsecondary_c12` - schools data for 2020: `https://georgiacivicdata.org/api/v1/education/postsecondary_c12?year=2020` - One district (code 601), 2020: `https://georgiacivicdata.org/api/v1/education/postsecondary_c12?district_code=601&year=2020&detail=districts` - Download 2020 as CSV: `https://georgiacivicdata.org/api/v1/education/postsecondary_c12?year=2020&format=csv` Limitations: Suppressed cells are NULL (not zero): GOSA publishes counts below 10 as TFS, so sparse subgroups (pacific_islander, native_american, migrant) are almost universally suppressed at school level, and summing only published school rows undercounts true totals — use district or state rows for official aggregates (a district total is NOT the sum of its published school rows). num_enrolled_in_college counts enrollment in GEORGIA institutions only; it is not comparable to the C11 report's nationwide enrollment count. pacific_islander rows are absent in year=2008. State rows have NULL district_code and school_code; district rows have NULL school_code. ### Retained (Held-Back) K-12 Students (`education/gosa/retained_students`) Students held back a grade in Georgia public schools, with counts and the race/gender makeup of the retained group, by school and district, 2004-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2004–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic - Key metric: `pct_of_retained_cohort` - Fact endpoint: `GET /api/v1/education/retained_students` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/retained_students · Contract: https://georgiacivicdata.org/api/v1/datasets/education/retained_students/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending calendar year of the school year (2024 = 2023-2024). Sourced from the bronze `School Year` / `School_Year` column for 2011-2024 (cross-checked against the filename); from the filename for 2004-2010 (no year column in those eras). | | `district_code` | string | fk_district | | | yes | 3-digit GOSA district code (zero-padded) for standard districts; 7-digit code for state charter / state school networks. NULL for state-level aggregate rows. FK to districts dimension. | | `school_code` | string | fk_school | | | yes | 4-digit GOSA school code (zero-padded). NULL for district- and state-level aggregate rows. FK to schools dimension (composite key with district_code). | | `demographic` | string | fk_demographic | | | no | Student subgroup the row covers (race or gender); 'all' is the whole retained group. Race uses the combined asian_pacific_islander bucket. | | `num_retained` | integer | metric | count | | yes | Number of K-12 students in this demographic at this entity who were retained (held back) during the school year. For `demographic = all`, the total retained count. NULL when suppressed. | | `num_students` | integer | metric | count | | yes | Total K-12 enrollment at this entity. Populated only on `demographic = all` rows in 2011 and 2013-2024. NULL for every non-`all` row (bronze publishes no per-demographic enrollment) and for every row in 2004-2010 (the wide-era bronze publishes no enrollment at all — its total columns are retained counts). 2012 is fully NULL: the 2012 bronze `Total Enrolled` is corrupt (inflated ~17x at every detail level, state row 27,864,309 vs ~1.65M expected) and is NULLed per the known-source-defect rule; 2012 `num_retained` is internally consistent and preserved. With `num_retained` on `all` rows this yields an overall retention rate. | | `pct_of_retained_cohort` | number | metric | proportion | | yes | Share of this entity's retained students who are in this demographic, on a 0-1 scale; a makeup share, NOT a retention rate, and NULL on the 'all' row. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `all`, `asian_pacific_islander`, `black`, `female`, `hispanic`, `male`, `multiracial`, `native_american`, `white` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/retained_students` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/retained_students?year=2024` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/retained_students?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/retained_students?year=2024&format=csv` Limitations: `num_students` (total K-12 enrollment) is available only on `demographic = all` rows for 2011 and 2013-2024. It is NULL for every non-`all` demographic row (bronze has no per-demographic enrollment), for every row in 2004-2010 (the wide-format bronze publishes no enrollment column), and for all of 2012 (corrupt bronze `Total Enrolled`, inflated ~17x, is NULLed); 8 2016 `all` rows are also NULL where source enrollment was unpublished. An overall retention rate (`num_retained` / `num_students`) is therefore computable only on `demographic = all` rows in 2011 and 2013-2024. `pct_of_retained_cohort` is a SHARE of the total retained cohort that belongs to each demographic (it sums toward 1.0 across race demographics and across gender demographics within an entity), NOT a within-demographic retention rate; it is NULL on `demographic = all` rows (100% by definition). Suppressed cells (cohort below the privacy threshold) null `num_retained` and `pct_of_retained_cohort`. ### District Revenues and Expenditures (`education/gosa/revenues_and_expenditures`) K-12 dollars taken in and spent by Georgia public schools and districts, broken out by revenue source and spending function, 2011-2024. - Source: Governor's Office of Student Achievement (GOSA) (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2011–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, rev_exp_category, rev_exp_subcategory - Key metric: `rev_exp_value` - Fact endpoint: `GET /api/v1/education/revenues_and_expenditures` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/revenues_and_expenditures · Contract: https://georgiacivicdata.org/api/v1/datasets/education/revenues_and_expenditures/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending (spring) calendar year of the school year (e.g. 2024 for 2023-24), parsed from the source's SCHOOL_YEAR / LONG_SCHOOL_YEAR column and cross-checked against the filename year. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit compound codes for commission / state charter schools. Codes 850-888 are RESA service agencies (typed 'resa' in the dimension). NULL on state-level rows — the bronze sentinel 'ALL' is mapped to NULL. | | `school_code` | string | fk_school | | | yes | 4-digit zero-padded GOSA school code (composite FK to schools dimension with district_code). NULL on district- and state-level rows (bronze sentinel 'ALL' mapped to NULL). The 2012 file publishes a minority of codes as 3-digit; they are zero-padded to match the other years. 2023-2024 'DOE OTHER' rows (GNETS programs, alternative schools, Pre-K centers, central offices) carry real institution numbers and appear under the school detail level, matching where the pre-2023 files placed the same entities. | | `rev_exp_category` | string | categorical | | | no | Whether the row is money coming in or going out: k12_revenues or k12_expenditures. Filter with rev_exp_subcategory since each bucket has its own subcategory set. | | `rev_exp_subcategory` | string | categorical | | | no | Revenue source (e.g. federal, local, state_qbe) or spending function (e.g. instruction, transportation); the valid set depends on rev_exp_category. | | `rev_exp_value` | number | metric | currency | | yes | Total dollars for this revenue source or spending function at the row's level; negatives are real budget adjustments. | | `rev_exp_per_pupil` | number | metric | currency | | yes | Per-FTE (full-time-equivalent student) dollar amount for the cell. Can be negative (budget adjustments). NULL only in 2012-2014 where the bronze FTE denominator was missing or zero (667 rows; enforced by a quality check). Caution — not always a true per-pupil amount: in the 2024 file the source publishes rev_exp_per_pupil equal to rev_exp_value verbatim on EVERY school-detail row (15,678 of 15,678 nonzero rows, traditional schools included), so 2024 school-level values carry no per-pupil information at all; in 2023 the same artifact covers all 9,798 DOE OTHER specialty-program rows plus 151 other school rows; in 2012 it covers the 10,414 rows with a missing FTE_COUNT; and it frequently equals rev_exp_value on aggregate / non-school rows in other years. District- and state-detail rows in 2023-2024 do carry true per-FTE values. Verify rev_exp_per_pupil <> rev_exp_value (or sanity-check per-pupil magnitude) before treating a school-level value as per-pupil spending. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `rev_exp_category` — categorical (multi-value, enum-enforced): `k12_expenditures`, `k12_revenues` - `rev_exp_subcategory` — categorical (multi-value, enum-enforced): `debt_services`, `federal`, `general_administration`, `instruction`, `instructional_support`, `local`, `maintenance_and_operations`, `media`, `other`, `pupil_services`, `renovation_and_capital_projects`, `school_administration`, `school_food_services`, `state_lottery`, `state_other`, `state_qbe`, `transportation` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/revenues_and_expenditures` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/revenues_and_expenditures?year=2024` - Filtered to rev_exp_category = k12_expenditures for 2024: `https://georgiacivicdata.org/api/v1/education/revenues_and_expenditures?year=2024&rev_exp_category=k12_expenditures` - One district (code 644), 2024: `https://georgiacivicdata.org/api/v1/education/revenues_and_expenditures?district_code=644&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/revenues_and_expenditures?year=2024&format=csv` Limitations: State rows have NULL district_code and school_code; district rows have NULL school_code. The school detail level includes non-traditional entities (central offices, GNETS programs, Pre-K centers, maintenance facilities) in every year, and district detail includes the 16 RESA service-agency rollups (district codes 850-888) — exclude both when analyzing traditional schools/districts only. rev_exp_per_pupil is not a true per-pupil amount everywhere: the 2024 file publishes it equal to rev_exp_value on every school-detail row (traditional schools included — 2024 school-level per-FTE values are totals, not per-pupil amounts), the 2023 file does so on all DOE OTHER rows, the 2012 file on its 10,414 missing-FTE rows, and it frequently equals rev_exp_value on aggregate / non-school rows in other years. State rows are published independently of district rows and do not always equal the sum of district values within a subcategory (e.g. the 2014 renovation_and_capital_projects state total runs several times the district sum) — treat each detail level as its own published series. The valid rev_exp_subcategory values are disjoint between the two rev_exp_category buckets (6 revenue-source vs 11 expenditure-function subcategories). No suppression exists in this topic — NULL never means suppressed; the only NULL metric values are 667 rev_exp_per_pupil rows in 2012-2014 with a missing/zero FTE denominator. Negative dollar values are legitimate budget adjustments and are preserved. ### District Salaries and Benefits (`education/gosa/salaries_and_benefits`) What Georgia school districts spend on salaries and benefits by staff category, with that spending as a share of district revenue and expenditures, 2011-2024. - Source: GOSA (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2011–2024 - Detail levels: districts, states (default: districts) - Grain: one row per year, district_code, school_code, staff_category - Key metric: `salaries_and_benefits` - Fact endpoint: `GET /api/v1/education/salaries_and_benefits` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/salaries_and_benefits · Contract: https://georgiacivicdata.org/api/v1/datasets/education/salaries_and_benefits/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending (spring) calendar year of the school year (e.g. 2024 for 2023-24), parsed from the source's LONG_SCHOOL_YEAR and cross-checked against the filename. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit state-charter codes. Codes 850-888 are the 16 Regional Education Service Agencies (RESAs) — service-agency aggregates kept at district detail (the dimension types them 'resa'); exclude them when analyzing traditional LEAs. NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code (composite FK to schools dimension with district_code). Always NULL in this district-only topic — the source reports no school-level detail (enforced by a quality check). | | `staff_category` | string | categorical | | | no | Which staff the dollars cover: teachers_and_paraprofessionals, school_administration, or general_administration (one row per category). | | `salaries` | number | metric | currency | | yes | Total salary dollars paid for the staff category. Rare small negatives are real refunds/restatements published by the source and preserved (one 2024 row at -2,000.00); no range check applies. | | `benefits` | number | metric | currency | | yes | Total benefit dollars paid for the staff category. Rare small negatives are real refunds/restatements published by the source and preserved (one row each in 2011, 2012, and 2022; minimum -191,629.60); no range check applies. | | `salaries_and_benefits` | number | metric | currency | | yes | Total salary plus benefit dollars the district spent on this staff category in the year. | | `pct_revenue_gf_title_lottery` | number | metric | ratio | | yes | Salaries+benefits for the category as a share of district revenue from General Fund / Title / Lottery sources (0-1 decimal scale; source publishes 0-100 and is divided by 100). A ratio, not a bounded proportion: the 2021 file (school year 2020-21, the COVID year) systematically publishes values above 1.0 — including the state rollup — with a maximum of 1.2346, because category spending exceeded the GF/Title/Lottery revenue base that year; preserved as published. | | `pct_revenue_total_k12` | number | metric | ratio | | yes | Salaries+benefits for the category as a share of total district K-12 revenue (0-1 decimal scale; source publishes 0-100 and is divided by 100). A ratio, not a bounded proportion: the 2021 file publishes values up to 1.0413 (2021 values run ~2x adjacent years across all metrics; likely a two-year-cumulative publication); preserved as published. | | `pct_expense_gf_title_lottery` | number | metric | ratio | | yes | Salaries+benefits for the category as a share of district expenditures from General Fund / Title / Lottery funds (0-1 decimal scale; source publishes 0-100 and is divided by 100). A ratio, not a bounded proportion: the 2021 file systematically publishes values above 1.0 — the state Teachers and Paraprofessionals rollup is 1.0798 and the maximum is 1.2731 (2021 values run ~2x adjacent years across all metrics; likely a two-year-cumulative publication); preserved as published. | | `pct_expense_total_k12` | number | metric | ratio | | yes | Salaries+benefits for the category as a share of total district K-12 expenditures (0-1 decimal scale; source publishes 0-100 and is divided by 100). A ratio, not a bounded proportion: the 2021 file publishes values up to 1.2103 (2021 values run ~2x adjacent years across all metrics; likely a two-year-cumulative publication); preserved as published. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `staff_category` — categorical (multi-value, enum-enforced): `general_administration`, `school_administration`, `teachers_and_paraprofessionals` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), districts level: `https://georgiacivicdata.org/api/v1/education/salaries_and_benefits` - districts data for 2024: `https://georgiacivicdata.org/api/v1/education/salaries_and_benefits?year=2024` - Filtered to staff_category = general_administration for 2024: `https://georgiacivicdata.org/api/v1/education/salaries_and_benefits?year=2024&staff_category=general_administration` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/salaries_and_benefits?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/salaries_and_benefits?year=2024&format=csv` Limitations: State rows have NULL district_code. school_code is always NULL — this is a district-only topic (no school-level detail exists at the source). District-detail rows include the 16 Regional Education Service Agencies (district codes 850-888), which are service-agency aggregates rather than school districts — exclude district_code between '850' and '888' when analyzing traditional LEAs, and do not sum district rows to reproduce the state rollup without accounting for them. The four pct_* columns are decimal ratios that legitimately exceed 1.0 in 2021 (school year 2020-21): category spending exceeded the chosen bases that year, up to 1.2731 — the 2021 file runs ~2x adjacent years across all metrics (dollars included), consistent with a two-year-cumulative publication. No suppression exists in this topic — NULL never means suppressed. ### SAT Scores (Highest Section Score) (`education/gosa/sat_scores_highest`) Average SAT scores by section for Georgia public high schools, using each student's highest score across test dates, 2004-2024. - Source: GOSA (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2004–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic, test_component - Key metric: `avg_score` - Fact endpoint: `GET /api/v1/education/sat_scores_highest` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/sat_scores_highest · Contract: https://georgiacivicdata.org/api/v1/datasets/education/sat_scores_highest/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Reporting year. For 2011-2024 this is the spring (ending) calendar year of the school year in the source's LONG_SCHOOL_YEAR; for 2004-2010 the source carries no year column and the filename publication year is used. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit state-charter codes. NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). NULL on district- and state-level rows. | | `demographic` | string | fk_demographic | | | no | Student race or gender subgroup; breakdowns exist only for 2004-2010, every later row is 'all'. | | `test_component` | string | categorical | | | no | Which SAT section or composite the score is for; scales differ, so never compare across components. | | `num_tested` | number | metric | count | | yes | Number of students tested. Float64 by documented exception (data-cleaning-standards §16): 2016-2024 bronze publishes FRACTIONAL counts on the combined_test_score component because GOSA reports it as the equal-weight mean of the three SAT section test-taker counts (Math, Reading, Writing & Language), not a headcount (e.g. (47+37+37)/3 -> 40.3 — exact thirds in 2016-2019, rounded to one decimal from ~2020); rounding to an integer would lose precision, and every other component's count is integral (enforced by a quality check). 2004-2010 sources publish one count per (entity, demographic) administration, repeated on each of that demographic's component rows; 2011-2024 sources publish true per-component counts. Either way, summing num_tested across test_component double-counts students — filter to one component for headcounts. A count of 0 is a real observation (zero students in that demographic took the SAT). | | `avg_score` | number | metric | score | | yes | Average highest-attempt SAT score; on the scale of the section named by test_component. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `all`, `asian_pacific_islander`, `black`, `female`, `hispanic`, `male`, `native_american`, `other`, `race_unknown`, `white` - `test_component` — categorical (multi-value, enum-enforced): `combined`, `combined_test_score`, `essay_analysis_score`, `essay_reading_score`, `essay_total`, `essay_writing_score`, `evidence_based_reading_and_writing`, `math_section_score`, `mathematics`, `reading`, `reading_test_score`, `verbal_math`, `writing`, `writlang_test_score` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/sat_scores_highest` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/sat_scores_highest?year=2024` - Filtered to test_component = combined_test_score for 2024: `https://georgiacivicdata.org/api/v1/education/sat_scores_highest?year=2024&test_component=combined_test_score` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/sat_scores_highest?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/sat_scores_highest?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code; district rows have NULL school_code. avg_score scales differ by test_component — never compare or aggregate across components, and never sum num_tested across components (it double-counts students). Old-SAT (pre-2016) and redesigned-SAT (2016+) results are not comparable. HIGHEST-basis caveat for the old-SAT writing component (2011-2016): GOSA's published averages are systematically far below the recent-basis values (state 361-406 vs ~470) and 10 values fall below the section's 200 floor (NULLed); in-range writing values — and the combined composite that embeds them — appear deflated on the highest basis and should be used with caution. The 2010 Elberta Open Campus verbal_math value (1522) is preserved although its reading component (822) was impossible and NULLed. ### SAT Scores (Most Recent Administration) (`education/gosa/sat_scores_recent`) Average SAT scores by section for Georgia public high schools, using each student's most recent test date, 2004-2024. - Source: GOSA (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2004–2024 - Detail levels: districts, schools, states (default: schools) - Grain: one row per year, district_code, school_code, demographic, test_component - Key metric: `avg_score` - Fact endpoint: `GET /api/v1/education/sat_scores_recent` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/sat_scores_recent · Contract: https://georgiacivicdata.org/api/v1/datasets/education/sat_scores_recent/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Reporting year. For 2011-2024 this is the spring (ending) calendar year of the school year in the source's LONG_SCHOOL_YEAR; for 2004-2010 the source carries no year column and the filename publication year is used. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension): 3-digit zero-padded county/city codes or 7-digit charter codes. NULL on state-level rows. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). NULL on district- and state-level rows. | | `demographic` | string | fk_demographic | | | no | Student race or gender subgroup; breakdowns exist only for 2004-2010, every later row is 'all'. | | `test_component` | string | categorical | | | no | Which SAT section or composite the score is for; scales differ, so never compare across components. | | `num_tested` | number | metric | count | | yes | Number of students tested. Float64, NOT Int64 — a documented exception to the integer-count convention (data-cleaning-standards section 16): 2016-2024 sources publish fractional counts on the combined_test_score component because GOSA reports it as the equal-weight mean of the three SAT section test-taker counts (Math, Reading, Writing & Language), not a headcount (e.g. (47+37+37)/3 -> 40.3 — exact thirds where published full-precision, rounded to one decimal from ~2020), and 2023-24 district counts are fractional throughout (e.g. 4159.3). Rounding to an integer would silently lose precision, so values are carried as published. 2004-2010 sources publish one count per (entity, demographic), repeated on each of that demographic's component rows; 2011-2024 publish true per-component counts. Either way, summing num_tested across test_component double-counts students — filter to one component for headcounts. A 0 means the source reported zero test-takers for that demographic (2004-2010 only). | | `avg_score` | number | metric | score | | yes | Average most-recent-attempt SAT score; on the scale of the section named by test_component. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools`, `states` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `demographic` — foreign_key (multi-value, enum-enforced): `all`, `asian_pacific_islander`, `black`, `female`, `hispanic`, `male`, `native_american`, `other`, `race_unknown`, `white` - `test_component` — categorical (multi-value, enum-enforced): `combined`, `combined_test_score`, `essay_analysis_score`, `essay_reading_score`, `essay_total`, `essay_writing_score`, `evidence_based_reading_and_writing`, `math_section_score`, `mathematics`, `reading`, `reading_test_score`, `verbal_math`, `verbal_math_writing`, `writing`, `writlang_test_score` - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` - `demographic_category` — dimension_attribute (multi-value, enum-enforced): `aggregate`, `disability`, `economic_status`, `esol`, `foster_care`, `gender`, `grade`, `homeless_status`, `migrant_status`, `military`, `race`, `sped` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) - `demographic` → demographics (adds demographic_label, demographic_category) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/sat_scores_recent` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/sat_scores_recent?year=2024` - Filtered to test_component = combined_test_score for 2024: `https://georgiacivicdata.org/api/v1/education/sat_scores_recent?year=2024&test_component=combined_test_score` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/sat_scores_recent?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/sat_scores_recent?year=2024&format=csv` Limitations: Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code; district rows have NULL school_code. Scores are NOT comparable across the 2016 SAT redesign boundary — use the distinct pre-redesign vs redesigned test_component values, never mix them in one time series. Demographic subgroups exist only for 2004-2010. num_tested can be fractional (see column description). reading_test_score / writlang_test_score are on a GOSA-rescaled axis, not the College Board 10-40 scale and not the 200-800 section scale. ### Student Mobility Rates (`education/gosa/student_mobility_rate`) How often students change schools in each Georgia public school and district, as an annual churn rate, 2012-2024 (no 2014 district rows). - Source: GOSA (https://gosa.georgia.gov/dashboards-data-report-card/downloadable-data) - Years: 2012–2024 - Detail levels: districts, schools (default: schools) - Grain: one row per year, district_code, school_code - Key metric: `mobility_rate` - Fact endpoint: `GET /api/v1/education/student_mobility_rate` · Schema: https://georgiacivicdata.org/api/v1/datasets/education/student_mobility_rate · Contract: https://georgiacivicdata.org/api/v1/datasets/education/student_mobility_rate/contract?format=yaml Columns: | Column | Type | Role | Unit | Range | Nullable | Description | | --- | --- | --- | --- | --- | --- | --- | | `year` | integer | year | | | no | Ending (spring) calendar year of the school year (e.g. 2024 for 2023-24), taken from the bronze filename — no in-file year column exists in either family. | | `district_code` | string | fk_district | | | yes | GOSA district code (FK to districts dimension), zero-padded to 3 digits for standard county/city districts (codes 601-793) and the 799 state-schools authorizer; 7-digit state/commission-charter authorizer codes (782xxxx/783xxxx, school rows only) are preserved unchanged. On district-detail rows it is the bronze school_district_cd; on school-detail rows it is the first 3 (or 7) characters of the compound sys_sch code. Never NULL. | | `school_code` | string | fk_school | | | yes | GOSA school code, zero-padded to 4 characters (composite FK to schools dimension with district_code; not globally unique on its own). Populated on school rows only — district rows carry NULL. Extracted from the compound bronze sys_sch code: chars after the 3-char district prefix for regular districts ('601103' -> '0103'), chars 4-7 for 799 state-school codes (both the 11-char 2012-2019 form '79918931893' and the 7-char 2020-2024 form '7991893' -> '1893'), or the last 3 chars for 10-char charter codes ('7820108108' -> '0108'). | | `mobility_rate` | number | metric | ratio | | yes | Student churn rate (0-1 scale): student moves per fall enrollment; counts moves, so it can exceed 1.0. | Filters: - `year` — year_exact - `year_min` — year_range - `year_max` — year_range - `detail` — detail (enum-enforced): `districts`, `schools` - `district_code` — foreign_key (multi-value) - `school_code` — foreign_key (multi-value) - `district_type` — dimension_attribute (multi-value, enum-enforced): `commission_charter`, `resa`, `standard`, `state_agency`, `state_charter`, `state_school`, `state_special` Joins (dimension attributes attached automatically): - `district_code` → districts (adds district_name, district_census_id, district_type) - `school_code` → schools (adds school_name) Example requests: - All rows (first page), schools level: `https://georgiacivicdata.org/api/v1/education/student_mobility_rate` - schools data for 2024: `https://georgiacivicdata.org/api/v1/education/student_mobility_rate?year=2024` - One district (code 601), 2024: `https://georgiacivicdata.org/api/v1/education/student_mobility_rate?district_code=601&year=2024&detail=districts` - Download 2024 as CSV: `https://georgiacivicdata.org/api/v1/education/student_mobility_rate?year=2024&format=csv` Limitations: Two detail levels (school, district) in one fact table, split by parquet filename; school_code is NULL on district rows. No statewide rollup is published in either family, so state figures cannot be read from this table. The district level has a documented 2014 gap: GOSA published the 2014 district file at the school level only (a file byte-identical to the school family's 2014 file), with no enrollment counts from which to reconstruct the district rate, so the district 2014 rows are omitted; 2014 school-level rows are present (from the school family). The school-level and district-level rows come from two independent GOSA downloads — the district rate rolls up entry/withdrawal counts rather than averaging the school rates — so school rows are NOT guaranteed to reconcile with their district row. Mobility is a churn ratio, not a bounded proportion: it counts moves rather than movers, so school-level values above 1.0 are legitimate and preserved (one suspected 2020 source defect, Eagle's Landing Academy at 115.0, is retained per §4b). No suppression exists in this topic — the only NULLs are four genuinely blank school cells (2019, 2020, 2021, 2024); NULL never means suppressed. ## Dimensions - `districts` (domain) — key [district_code], attributes [district_name, district_census_id, district_type], endpoint `/api/v1/education/_dimensions/districts` - `schools` (domain) — key [district_code, school_code], attributes [school_name], endpoint `/api/v1/education/_dimensions/schools` - `demographics` (global) — key [demographic], attributes [demographic_label, demographic_category], endpoint `/api/v1/education/_dimensions/demographics`