{
    "name": "San Antonio Aggressive Driving API",
    "description": "Two separate layers over aggressive driving in San Antonio: an official record of police calls, and unverified reports submitted by residents. They are never combined.",
    "layers": {
        "official": {
            "what": "SAPD calls for service, restricted to events (crashes and wrong-way drivers) rather than enforcement.",
            "total": 423100,
            "recent_12mo": 116262,
            "window": {
                "from": "2023-01-01",
                "to": "2026-07-31"
            },
            "href": "https:\/\/brandshyp.org\/api\/v1\/aggressive-driving\/calls"
        },
        "resident": {
            "what": "Structured reports submitted on this site. No free-text field exists, so no vehicle, plate or person can appear.",
            "total": 0,
            "unlocked": false,
            "unlock_at": 250,
            "href": "https:\/\/brandshyp.org\/api\/v1\/aggressive-driving\/reports"
        }
    },
    "endpoints": [
        {
            "href": "https:\/\/brandshyp.org\/api\/v1\/aggressive-driving",
            "returns": "This discovery document"
        },
        {
            "href": "https:\/\/brandshyp.org\/api\/v1\/aggressive-driving\/calls",
            "returns": "Official SAPD driving-event calls by ZIP, month and type"
        },
        {
            "href": "https:\/\/brandshyp.org\/api\/v1\/aggressive-driving\/reports",
            "returns": "Resident report totals, floored and month-grained"
        },
        {
            "href": "https:\/\/brandshyp.org\/api\/v1\/aggressive-driving\/roads",
            "returns": "The controlled arterial vocabulary a report may reference"
        },
        {
            "href": "https:\/\/brandshyp.org\/api\/v1\/aggressive-driving\/quality",
            "returns": "What will make you wrong. Read this one first."
        },
        {
            "href": "https:\/\/brandshyp.org\/api\/v1\/aggressive-driving\/reports.csv",
            "returns": "The resident aggregate as tidy CSV"
        },
        {
            "href": "https:\/\/brandshyp.org\/api\/v1\/aggressive-driving\/openapi.json",
            "returns": "OpenAPI 3.1 description"
        }
    ],
    "openapi": "https:\/\/brandshyp.org\/api\/v1\/aggressive-driving\/openapi.json",
    "documentation": "https:\/\/brandshyp.org\/san-antonio-aggressive-driving\/",
    "caveats": {
        "two_layers_never_summed": "The \/calls and \/reports layers measure different populations and must never be added together. A call is somebody who phoned the police; a report is somebody who did not, which is nearly everyone, because you cannot call 911 about being tailgated.",
        "reports_are_unverified": "This is not crime data and not a crash record. It is what people chose to report, and nothing in it has been verified against any official source, because no such source is published.",
        "self_selection": "Self-selection is the dominant effect. People who report are not a random sample of drivers, so a road with more reports may simply carry more people who know this page exists.",
        "no_denominator": "There is no denominator. Without traffic volume a busy road will always accumulate more reports than a quiet one, which says nothing about which is worse. Roads here are ranked by most REPORTED, never by most dangerous.",
        "arterials_only": "Only classified arterials can be reported. Local and residential streets are deliberately excluded so that a report cannot point at a household.",
        "month_resolution": "Nothing published here is finer than a calendar month, and no report is ever shown individually.",
        "floored": "Roads below the reporting floor are withheld and counted in the withheld total, so nothing disappears silently.",
        "calls_are_events_only": "The calls layer counts only Accident Major, Accident Minor and Wrong Way Driver. Traffic stops, traffic violations and DWI are excluded because they count enforcement activity rather than events, and Traffic Related is excluded as too vague."
    }
}