{
  "profile": "data-package",
  "name": "policetransparencynj",
  "title": "Police Transparency New Jersey: New Jersey police major discipline and internal affairs data",
  "description": "Final, post-appeal major discipline records and agency-level internal affairs totals reported by New Jersey law enforcement agencies to the New Jersey Attorney General, compiled with row-level provenance by an independent project. Not a government source. Allegations are not findings; a blank or sentinel value means not reported, never zero.",
  "homepage": "https://policetransparencynj.com/data/",
  "sources": [
    {
      "title": "New Jersey Office of the Attorney General, police major discipline and internal affairs data",
      "path": "https://www.njoag.gov/"
    }
  ],
  "licenses": [
    {
      "name": "public-records",
      "title": "Compiled from New Jersey public records; see the terms of use",
      "path": "https://policetransparencynj.com/terms/"
    }
  ],
  "resources": [
    {
      "name": "major-discipline",
      "path": "major-discipline.csv",
      "format": "csv",
      "mediatype": "text/csv",
      "schema": {
        "fields": [
          {
            "name": "id",
            "type": "string"
          },
          {
            "name": "year",
            "type": "any"
          },
          {
            "name": "countyName",
            "type": "string"
          },
          {
            "name": "agencyId",
            "type": "string"
          },
          {
            "name": "rank",
            "type": "string"
          },
          {
            "name": "firstName",
            "type": "string"
          },
          {
            "name": "lastName",
            "type": "string"
          },
          {
            "name": "officerSlug",
            "type": "string"
          },
          {
            "name": "terminated",
            "type": "string"
          },
          {
            "name": "demoted",
            "type": "string"
          },
          {
            "name": "suspended",
            "type": "string"
          },
          {
            "name": "daysSuspended",
            "type": "any"
          },
          {
            "name": "separatedWhileIAPending",
            "type": "string"
          },
          {
            "name": "otherSanction",
            "type": "string"
          },
          {
            "name": "sustainedCharges",
            "type": "string"
          },
          {
            "name": "description",
            "type": "string"
          },
          {
            "name": "duplicateOfRow",
            "type": "any"
          },
          {
            "name": "sourceFile",
            "type": "string"
          },
          {
            "name": "sourceSheet",
            "type": "string"
          },
          {
            "name": "sourceRow",
            "type": "any"
          },
          {
            "name": "pageUrl",
            "type": "string"
          }
        ]
      },
      "description": "One row per named major discipline record. pageUrl is the record's page on this site."
    },
    {
      "name": "ia-agency-totals",
      "path": "ia-agency-totals.csv",
      "format": "csv",
      "mediatype": "text/csv",
      "schema": {
        "fields": [
          {
            "name": "agencyId",
            "type": "string"
          },
          {
            "name": "countyName",
            "type": "string"
          },
          {
            "name": "year",
            "type": "any"
          },
          {
            "name": "officers",
            "type": "any"
          },
          {
            "name": "investigations",
            "type": "any"
          },
          {
            "name": "incidents",
            "type": "any"
          },
          {
            "name": "sourceFile",
            "type": "string"
          },
          {
            "name": "sourceSheet",
            "type": "string"
          },
          {
            "name": "sourceRow",
            "type": "any"
          },
          {
            "name": "pageUrl",
            "type": "string"
          }
        ]
      },
      "description": "Agency-year internal affairs totals. officers counts distinct officers named in that year's investigations, not department staffing."
    },
    {
      "name": "statewide",
      "path": "statewide.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Statewide toplines by year."
    },
    {
      "name": "entities",
      "path": "entities.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Canonical counties and agencies (slug, name, type, county)."
    },
    {
      "name": "counties",
      "path": "counties.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Per-county profiles and agency lists. The `officers` field counts distinct officers named in that year's internal affairs investigations, by name and badge number. It is not a count of officers a county employs; FBI-reported sworn headcounts are in lee.json."
    },
    {
      "name": "geo-counties",
      "path": "geo-counties.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "County outlines projected to NJ State Plane and generalized for display, as SVG path data rather than coordinates. Carries each county's area, 2020 Census population, and the label placement the maps use. Boundaries are not legal boundaries."
    },
    {
      "name": "fe-points",
      "path": "fe-points.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Fatal Encounters records projected into the same map coordinate space as the county boundaries, for the point map. Carries every record that plots, plus a named list of those excluded because the source geocoded them outside New Jersey. A record is a death during a police encounter of any kind and is not a finding of fault."
    },
    {
      "name": "agency-stats",
      "path": "agency-stats.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Per-agency yearly IA totals, discipline, and termination counts. As in counties.json, the `officers` field counts distinct officers named in that year's internal affairs investigations, not department staffing."
    },
    {
      "name": "report-cards",
      "path": "report-cards.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Peer-grouped report-card grades, components, and confidence. Grades are this site's analysis, not a source fact and not an official rating."
    },
    {
      "name": "non-reporting",
      "path": "non-reporting.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Agencies the AG lists as reporting no IA investigations, by year."
    },
    {
      "name": "encryption",
      "path": "encryption.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Radio-encryption flags joined from PoliceRadioEncryption.com."
    },
    {
      "name": "major-discipline",
      "path": "major-discipline.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Every named major-discipline record with sourceRef."
    },
    {
      "name": "ia-agency-totals",
      "path": "ia-agency-totals.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Agency-year internal affairs totals with sourceRef."
    },
    {
      "name": "departments",
      "path": "departments.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Full per-department bundle (totals, records, benchmarks, IA detail)."
    },
    {
      "name": "officers",
      "path": "officers.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Per-officer bundle of major-discipline records."
    },
    {
      "name": "pension",
      "path": "pension.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "High-confidence PFRS/SPRS salary/pension matches to named officers, as reported by NJ Treasury YourMoney, with source-row provenance."
    },
    {
      "name": "pay-comparison",
      "path": "pay-comparison.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Medians, percentiles, shared-bin histograms and ratios for two cohorts on one NJ Treasury snapshot: active PFRS members in the POLICE OFFICER group at municipal and county law enforcement employers, and every active member of the Teachers Pension and Annuity Fund. Both are grouped by the county the pension system assigns to the employer. TPAF covers certificated school staff and the file carries no job title, so administrators are counted alongside classroom teachers, and school support staff (PERS) are not counted at all. Figures are pensionable base salary, excluding overtime, stipends, longevity and leave payouts for both groups, and the two work years are different lengths. Every ratio is computed by this site, and a pay ratio is never a budget claim. The coverage block states exactly how many source rows entered each figure and which were excluded. No individual is identifiable: the committed TPAF subset carries no names."
    },
    {
      "name": "lee",
      "path": "lee.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "High-confidence FBI Law Enforcement Employees (LEE) staffing matches, keyed by canonical agency slug: sworn/civilian headcounts (with a female-officer breakdown), by reported year, with source-row provenance. Agencies with no confident match are simply absent, never a fabricated zero."
    },
    {
      "name": "summaries-index",
      "path": "summaries-index.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Plain-language summaries for every department and officer page (`departments`, `officers`, both keyed by slug): the same generated, source-gated text rendered on each page, and the exact text used in that page's meta description and Dataset JSON-LD. Only fresh (fingerprint-verified) entries are included; a stale or not-yet-generated summary is simply absent, never a guess."
    },
    {
      "name": "fe",
      "path": "fe.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "New Jersey subset of the Fatal Encounters project (a third-party, independent, crowdsourced dataset), joined to canonical agencies at high confidence only: every recorded death during a police encounter of any kind, 2000-2021 (pursuits, suicides, and medical events included; a record is not a finding of fault). One record page per entry. FE's disposition and intended-use-of-force fields are carried under `caveatedFields` and displayed only with caveats; FE's race imputations are mirrored here for completeness but never rendered on pages."
    },
    {
      "name": "militarization",
      "path": "militarization.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "DoD 1033/LESO surplus-equipment transfers by canonical agency (Defense Logistics Agency data, as of the file's `asOf` date). Line items record equipment an agency received over time, not current inventory; values are original DoD acquisition cost, not present worth. Items are classed tactical or mundane, and quantities aggregate only within a unit of issue (`quantitiesByUi`). Receiving surplus equipment is not misconduct."
    },
    {
      "name": "opra",
      "path": "opra.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Public records requests filed to each department through OPRAmachine (an independent, third-party OPRA platform), joined to canonical agencies at high confidence only. A REQUEST IS NOT A FINDING: every entry records what a member of the public asked an agency for, never anything an agency was found to have done. Statuses (`byState`) are Alaveteli `described_state` values set by the REQUESTER when they classify the response, not by the agency and not by any court. `linkType` says whether the body is the department's own listing (`dedicated-pd`) or the municipal records custodian standing in for it (`municipal-fallback`), in which case the counts cover the whole municipality. Only requests already public on OPRAmachine are included. FROZEN: this is a hand-taken snapshot of the OPRAmachine database dated 2026-07-12 and nothing refreshes it, so every count is a lower bound that goes further out of date over time; see opramachine.com for current activity."
    },
    {
      "name": "courtlistener",
      "path": "courtlistener.json",
      "format": "json",
      "mediatype": "application/json",
      "description": "Federal civil-rights dockets in the District of New Jersey (natures of suit 440, 442, 445 and 446, plus prisoner codes 550, 555 and 560 for corrections agencies) whose party list names a New Jersey police agency, from the Free Law Project's CourtListener RECAP archive of PACER dockets, keyed by agency. A LAWSUIT IS AN ALLEGATION, NOT A FINDING, and these records carry no outcome: a closing date can mean dismissal, settlement or a verdict either way. A department on the docket is a party, not necessarily the target. Case captions are deliberately omitted because they name private plaintiffs. Hand-taken snapshot; see COURTLISTENER_SCHEMA.md for the matching rules."
    }
  ]
}