{
  "name": "Vancouver theft from vehicle: FanVancouver VPD aggregate",
  "crime_type": "Theft from Vehicle",
  "source_url": "https://geodash.vpd.ca/opendata/",
  "snapshot_generated_utc": "2026-10-12T02:30:24Z",
  "snapshot_sha256": "9024bc0bfe4f83333e9d588261d64c91e97a12d7a2b5ef6aab6a5369bbd34f22",
  "rolling_window": {
    "from": "Oct 2025",
    "to": "Sep 2026",
    "prior_from": "Oct 2024",
    "prior_to": "Sep 2025"
  },
  "neighbourhood_rows": 8,
  "neighbourhood_coverage": "selected subset",
  "methodology": [
    "Counts are VPD Theft from Vehicle records, not the probability that a visitor will experience crime.",
    "The neighbourhood file is a selected subset. Its rows do not add up to the city total and are not a visitor safety ranking.",
    "Calendar-year counts and rolling 12-month windows are different series; do not combine them as equivalent periods.",
    "The last included month is selected by a coverage heuristic in fv_vpd_crime_refresh.py, not certified complete by VPD. It compares recent monthly volumes and checks the last recorded day.",
    "The snapshot generation timestamp is when FanVancouver built this aggregate, not the date VPD published or independently verified it.",
    "Reports and classifications can change. VPD all-offence reporting is not directly comparable with Statistics Canada most-serious-offence reporting.",
    "Year-over-year neighbourhood changes are supplied by the snapshot. A blank is unavailable, not zero. Percent changes are not exposure-adjusted crime rates.",
    "FanVancouver refreshes this snapshot weekly. Check its timestamp before publication and consult the official source for current records.",
    "Source data belongs to its publisher. Consult the official VPD open-data terms before reuse; FanVancouver does not grant a new licence to the source data."
  ],
  "column_definitions": {
    "theft_from_vehicle_records": "Count of VPD records classified Theft from Vehicle, not a rate per visitor or parked car",
    "change_vs_prior_window_percent": "Percent change in record count against the prior 12-month window; blank means unavailable",
    "from_month": "First included calendar month, inclusive",
    "to_month": "Last included calendar month, inclusive",
    "calendar_year": "Full calendar year, January through December",
    "coverage": "Selected neighbourhood subset, not the full city",
    "snapshot_generated_utc": "FanVancouver aggregate build timestamp in UTC",
    "snapshot_sha256": "SHA-256 of the underlying snapshot file bytes",
    "source_url": "Official publisher open-data page",
    "period": "Current or preceding rolling 12-month window",
    "neighbourhood": "VPD neighbourhood label"
  },
  "files": {
    "fv_vpd_vehicle_city.csv": {
      "sha256": "13258d55d53d0bf93e623aeea5b4691bf251573dd3aaa0cfdb1cb69468c57d37",
      "encoding": "UTF-8 with BOM",
      "format": "CSV",
      "url": "/api/fv_vpd_vehicle_city.csv?v=9024bc0bfe4f8333"
    },
    "fv_vpd_vehicle_years.csv": {
      "sha256": "584d5afe8e2101d7d9e6636bd290f80b80588e6167f1637acf8b6103fe122757",
      "encoding": "UTF-8 with BOM",
      "format": "CSV",
      "url": "/api/fv_vpd_vehicle_years.csv?v=9024bc0bfe4f8333"
    },
    "fv_vpd_vehicle_neighbourhoods.csv": {
      "sha256": "10384d3479be2afe708805efc267ab16c2b6d8c420bc25d700e1edc6c4034999",
      "encoding": "UTF-8 with BOM",
      "format": "CSV",
      "url": "/api/fv_vpd_vehicle_neighbourhoods.csv?v=9024bc0bfe4f8333"
    }
  }
}
