{
  "dataset": "sapd_safety_outcomes.csv",
  "row_count": 298,
  "sha256": "7729e560371bbd0b8129aaa0b72620a1ea8b7006bc30e14fd1ee694657085155",
  "schema": [
    "zip",
    "year",
    "total_calls",
    "total_arrests",
    "total_offenses",
    "arrest_to_call_rate",
    "offense_to_call_rate",
    "arrest_to_offense_rate",
    "safety_outcome_profile"
  ],
  "year_coverage": [
    2023,
    2024,
    2025,
    2026
  ],
  "latest_complete_year": 2025,
  "partial_year": 2026,
  "json_api": {
    "summary": "/data/api/v1/summary.json",
    "methodology": "/data/api/v1/methodology.json",
    "schema": "/data/api/v1/schema.json",
    "source_audit_2025": "/data/api/v1/source-audit/2025.json",
    "all_records": "/data/api/v1/records.json",
    "year": "/data/api/v1/years/{year}.json",
    "zip": "/data/api/v1/zips/{zip}.json",
    "zip_year": "/data/api/v1/records/{zip}-{year}.json"
  },
  "source_audit_2025": "/data/api/v1/source-audit/2025.json",
  "interpretation_statement": "The 2025 ZIP analysis includes 59,155 arrest-source rows and 135,285 offense-source rows assigned to 76 ZIP areas. The original source files contain 59,505 arrest rows and 136,708 offense rows for 2025. Approximately 0.59% of arrest rows and 1.04% of offense rows were not represented in the ZIP-level outcome table. Source rows are not equivalent to unique reports: the arrest data contains 37,247 unique Report IDs, while the offense data contains 125,125 unique Report IDs. The arrests-per-100-offenses measure is an aggregate row-count ratio and must not be interpreted as a clearance rate.",
  "classification_rules": {
    "calls_without_offenses": "total_offenses = 0",
    "high_arrest_to_offense": "arrest_to_offense_rate > 0.75",
    "high_offense_low_arrest": "arrest_to_offense_rate < 0.25 and total_offenses > 0",
    "standard": "all other rows"
  }
}
