# Normalized fields reference

> Every normalized class on a criminal record: outcomes, severity and its basis, categories, NCIC codes, custody events and case stages, beside the raw text.

- **HTML:** https://offendersearch.app/docs/criminal/normalized-fields
- **Base URL (live):** https://api.offendersearch.app — live keys (`os_live_…`)
- **Base URL (sandbox):** https://sandbox.offendersearch.app — test keys (`os_test_…`), never billed; see https://offendersearch.app/docs/criminal/sandbox.md
- **Authentication:** `X-API-Key` request header
- **OpenAPI:** https://offendersearch.app/openapi.json · https://offendersearch.app/openapi.yaml
- **Criminal reference as markdown:** https://offendersearch.app/docs/criminal.md

## Normalized criminal record fields beside the source's words

Every record carries a `normalized` object with one closed set of classes for category, severity, outcome, custody, person codes, places and dates. They are what [search filters](https://offendersearch.app/docs/criminal/filtering.md) test.

**The source's own text is always served beside it.** A normalized value is our classification; the published fact stays in the record's own fields, unchanged. A value that cannot be decided from what was published is `unknown` or `null`, never a guess.

- `normalized` is on every record, in search, batch and the record lookup. It is `null` when a record could not be classified.
- `rulesVersion` names the version of the rules that produced the values, and `quality` is `quarantined` when a source's normalized values are withheld (its own fields are unaffected).
- `include: ["normalizedDetail"]` on a search adds `rule` to every charge: which rule decided its outcome.
- `normalized.cases[]` and each case's `charges[]` follow the order of the record's own `cases[]` and `charges[]`.

```json
{
  "recordType": "court_case",
  "sex": "Male", "race": "White",
  "cases": [ { "caseNumber": "201944871", "status": "Disposed", "caseType": "Felony",
               "charges": [ { "statute": "PC 22.02", "description": "AGG ASSAULT W/DEADLY WEAPON",
                              "severity": "felony", "disposition": "GUILTY", "plea": "GUILTY" } ] } ],
  "normalized": {
    "rulesVersion": 1, "quality": "ok",
    "recordCategory": "court", "custodyStatus": "disposed",
    "sex": "M", "race": "W", "hair": null, "eyes": null,
    "residence": null,
    "jurisdiction": { "line1": null, "city": null, "county": "Harris", "countyFips": "48201",
                      "state": "TX", "zip5": null, "lat": null, "lng": null, "geoPrecision": "none" },
    "topSeverity": "felony", "hasConviction": true, "convictionCount": 1,
    "chargeCategories": ["assault"], "outcomes": ["convicted"],
    "latestOffenseDate": "2019-05-01", "latestDispositionDate": "2019-11-15",
    "latestFiledDate": "2019-05-03",
    "hasPhoto": false, "vacatedOrSealed": false,
    "cases": [ { "stage": "closed", "caseClass": "felony",
                 "charges": [ { "category": "assault", "notACharge": false,
                                "severity": "felony", "severityBasis": "published", "degree": null,
                                "outcome": "convicted", "convicted": true, "custodyEvent": null } ] } ]
  }
}
```

| Normalized value | The source's words, on the same record |
| --- | --- |
| `normalized.sex / race` | `sex` and `race` on the record, as published. |
| `normalized.hair / eyes` | `physical` on the record, as published. |
| `normalized.custodyStatus` | `custodyStatus` (the source's wording) and `currentStatus` on the record. |
| `normalized.residence` | `address` on the record. |
| `charges[].severity / degree` | `cases[].charges[].severity` and `statute` on the record. |
| `charges[].outcome / convicted` | `cases[].charges[].disposition` and `plea` on the record. |
| `cases[].stage / caseClass` | `cases[].status` and `caseType` on the record. |

## Criminal charge outcome classes

`outcome` on each charge, and `outcomes` on the record (every class present). `convicted` is `true` only for `convicted`.

| outcome | Meaning | convicted |
| --- | --- | --- |
| `convicted` | The charge ended in a conviction: a guilty plea, a guilty finding or a sentence, as the source records it. | `true` |
| `pending` | The charge is open and not yet decided. A hearing or motion about vacating a conviction is also `pending`. | `null` |
| `dismissed` | The court dismissed the charge. | `false` |
| `nolle_prosequi` | The prosecutor dropped the charge. | `false` |
| `acquitted` | The person was found not guilty. | `false` |
| `deferred_or_diverted` | Deferred adjudication, diversion or a similar program in which no conviction is entered. | `false` |
| `vacated` | The conviction was vacated, expunged, sealed, set aside or pardoned. | `false` |
| `warrant` | The charge is tied to an outstanding warrant. | `null` |
| `transferred` | The charge moved to another court or jurisdiction. | `null` |
| `closed_unspecified` | The charge is closed, and the source does not say how. | `null` |
| `administrative` | An administrative entry, not a decision on the charge. | `null` |
| `unknown` | The outcome cannot be decided from what the source published. | `null` |

## Criminal charge severity and severityBasis

`severity` on each charge, and `topSeverity` (the highest) on the record. `degree` carries the source's class or degree text, such as `F3` or `Class A`, when stated.

| severity | Meaning |
| --- | --- |
| `felony` | A felony. |
| `misdemeanor` | A misdemeanor. |
| `infraction` | An infraction or violation below a misdemeanor. |
| `unknown` | The severity cannot be decided from what was published. Never read it as minor. |

`severityBasis` says what decided it, and is `null` when the severity is `unknown`. Filter with `"severityBasis": ["published"]` (together with `severity`) to trust only the source's own label.

| severityBasis | Decided by |
| --- | --- |
| `published` | The source states the severity itself. |
| `statute_code` | A class code in the statute or charge (for example `F3` or `M1`). |
| `statute_table` | An official table of the state's statutes. |
| `case_type` | The type of case the charge was filed under. |
| `charge_text` | Words in the published charge description. |

## Criminal record and charge categories

`recordCategory` is the kind of record.

| recordCategory | Meaning |
| --- | --- |
| `court` | A court case. |
| `jail` | A jail booking. |
| `prison` | A state or federal prison record. |
| `warrant` | A warrant or a wanted-person notice. |
| `registry` | An offender registry entry. |
| `exclusion` | A government health-program or federal award exclusion. |
| `other` | Any other kind of record. |

`category` on each charge says what it is about, and `chargeCategories` on the record lists every one present. `notACharge: true` marks text in a charge slot that is not an offense, such as a custody, supervision or caption entry.

| category | Meaning |
| --- | --- |
| `homicide` | Homicide and manslaughter. |
| `sex_offense` | Sex offenses. |
| `robbery` | Robbery. |
| `domestic_violence` | Domestic violence, including protective-order violations. |
| `assault` | Assault, battery and threats. |
| `weapons` | Weapons offenses. |
| `burglary` | Burglary and breaking and entering. |
| `theft` | Theft, larceny and stolen property. |
| `fraud` | Fraud, forgery and identity theft. |
| `drug_distribution` | Drug manufacture, delivery and trafficking. |
| `drug_possession` | Drug possession. |
| `dui` | DUI and DWI. |
| `traffic` | Traffic offenses other than DUI. |
| `public_order` | Public order, trespass and property damage. |
| `supervision` | Probation and parole violations and failure to appear. |
| `other` | Other or unclear. |

## Criminal custody status and custody events

`custodyStatus` is the person's status on the record.

| custodyStatus | Meaning |
| --- | --- |
| `in_custody` | In jail or prison now. |
| `released` | Released. |
| `on_parole` | On parole. |
| `on_probation` | On probation. |
| `active_warrant` | An active warrant is out. |
| `wanted` | Wanted. |
| `registered` | On an offender registry. |
| `disposed` | The matter is disposed. |
| `absconder` | Absconded from supervision. |
| `deceased` | Deceased. |
| `excluded` | On a health-program or federal award exclusion list. |
| `unknown` | Not known. |

`custodyEvent` is a jail event listed against one charge. It is not a court outcome; the court outcome is `outcome`.

| custodyEvent | Meaning |
| --- | --- |
| `booked` | The person was booked on the charge. |
| `released` | The person was released on the charge. |
| `bonded` | Bond was posted on the charge. |
| `held` | The person is held on the charge. |
| `transferred` | The person was transferred on the charge. |
| `null` | No jail event is listed against the charge. |

## Criminal case stages and case classes

| stage | Meaning |
| --- | --- |
| `open` | The case is open. |
| `closed` | The case is closed. |
| `warrant` | The case has an outstanding warrant. |
| `unknown` | The stage cannot be decided. |

| caseClass | Meaning |
| --- | --- |
| `felony` | A felony case. |
| `misdemeanor` | A misdemeanor case. |
| `traffic` | A traffic case. |
| `infraction` | An infraction case. |
| `civil` | A civil case. |
| `unknown` | The class cannot be decided. |

## NCIC person codes on criminal records

`sex`, `race`, `hair` and `eyes` use the codes police systems use (NCIC). Each is `null` when the source publishes nothing, and the published words stay in the record's own `sex`, `race` and `physical`.

| sex | Meaning |
| --- | --- |
| `M` | Male |
| `F` | Female |
| `X` | Another marker the source publishes |
| `U` | Unknown |

| race | Meaning |
| --- | --- |
| `W` | White |
| `B` | Black |
| `I` | American Indian or Alaska Native |
| `A` | Asian or Pacific Islander |
| `H` | Hispanic, only where the source publishes it as a race |
| `U` | Unknown |

| hair | Meaning |
| --- | --- |
| `BLK` | Black |
| `BRO` | Brown |
| `BLN` | Blond |
| `RED` | Red |
| `GRY` | Gray |
| `WHI` | White |
| `SDY` | Sandy |
| `BLD` | Bald |
| `XXX` | Unknown |

| eyes | Meaning |
| --- | --- |
| `BLK` | Black |
| `BLU` | Blue |
| `BRO` | Brown |
| `GRN` | Green |
| `GRY` | Gray |
| `HAZ` | Hazel |
| `MAR` | Maroon |
| `PNK` | Pink |
| `MUL` | Multicolored |
| `XXX` | Unknown |

## Vacated and sealed criminal records: vacatedOrSealed

`vacatedOrSealed` is `true` when the source marks the record or a charge vacated, expunged or sealed. Such a record is marked and always returned; a vacated charge has the outcome `vacated` and `convicted: false`. A search leaves it out only when it sends `excludeVacatedOrSealed: true`.

The record also carries `hasConviction`, `convictionCount`, `hasPhoto` and its latest offense, filing and disposition dates, which the date filters and `lookbackYears` test.

## The Normalized object — normalized criminal record fields

A record's `normalized` classes. Every value is our classification of a published fact; the fact itself stays in the record's own fields beside it. A value that cannot be decided from what was published is `unknown` or `null`, never a guess.

Returned or accepted by [`POST /v1/criminal/search`](https://offendersearch.app/docs/criminal/search#reference-post-v1-criminal-search), [`GET /v1/criminal/searches/{searchId}`](https://offendersearch.app/docs/criminal/async#reference-get-v1-criminal-searches-searchid), [`POST /v1/criminal/batch`](https://offendersearch.app/docs/criminal/batch#reference-post-v1-criminal-batch), [`GET /v1/criminal/records/{recordId}`](https://offendersearch.app/docs/criminal/record-object#reference-get-v1-criminal-records-recordid).

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `rulesVersion` | `integer` |  | Version of the classification rules that produced these values. Example `1`. |
| `quality` | `string` — one of `"ok"`, `"quarantined"` |  | `quarantined` when this source's normalized values are withheld; the record's own fields are unaffected. |
| `recordCategory` | `string` — one of `"court"`, `"jail"`, `"prison"`, `"warrant"`, `"registry"`, `"exclusion"`, `"other"` |  | The kind of record. |
| `custodyStatus` | `string` — one of `"in_custody"`, `"released"`, `"on_parole"`, `"on_probation"`, `"active_warrant"`, `"wanted"`, `"registered"`, `"disposed"`, `"absconder"`, `"deceased"`, `"excluded"`, `"unknown"` |  | The person's custody status on this record. |
| `sex` | `string` or null — one of `"M"`, `"F"`, `"X"`, `"U"` |  | NCIC sex code. `null` when the source publishes none; its own text stays in `sex`. |
| `race` | `string` or null — one of `"W"`, `"B"`, `"I"`, `"A"`, `"H"`, `"U"` |  | NCIC race code. `H` only where the source publishes Hispanic as a race. Its own text stays in `race`. |
| `hair` | `string` or null — one of `"BLK"`, `"BRO"`, `"BLN"`, `"RED"`, `"GRY"`, `"WHI"`, `"SDY"`, `"BLD"`, `"XXX"` |  | NCIC hair-color code. |
| `eyes` | `string` or null — one of `"BLK"`, `"BLU"`, `"BRO"`, `"GRN"`, `"GRY"`, `"HAZ"`, `"MAR"`, `"PNK"`, `"MUL"`, `"XXX"` |  | NCIC eye-color code. |
| `residence` | [NormalizedPlace](https://offendersearch.app/docs/criminal/normalized-fields#object-normalizedplace) or null |  | Where the person lives, from the published address. `null` when none is published. |
| `jurisdiction` | [NormalizedPlace](https://offendersearch.app/docs/criminal/normalized-fields#object-normalizedplace) |  | Where the record is: the state and county of the court, jail or agency. |
| `topSeverity` | `string` — one of `"felony"`, `"misdemeanor"`, `"infraction"`, `"unknown"` |  | The highest severity of any charge on the record. |
| `hasConviction` | `boolean` |  | `true` when any charge's outcome is `convicted`. |
| `convictionCount` | `integer` |  | Charges whose outcome is `convicted`. |
| `chargeCategories` | `array of string` — one of `"supervision"`, `"homicide"`, `"sex_offense"`, `"robbery"`, `"domestic_violence"`, `"dui"`, `"assault"`, `"weapons"`, `"burglary"`, `"fraud"`, `"theft"`, `"drug_distribution"`, `"drug_possession"`, `"traffic"`, `"public_order"`, `"other"` |  | Every charge category on the record. |
| `outcomes` | `array of string` — one of `"convicted"`, `"pending"`, `"dismissed"`, `"nolle_prosequi"`, `"acquitted"`, `"deferred_or_diverted"`, `"vacated"`, `"warrant"`, `"transferred"`, `"closed_unspecified"`, `"administrative"`, `"unknown"` |  | Every outcome class on the record. |
| `latestOffenseDate` | `string (date)` or null |  | The latest offense date on the record. |
| `latestDispositionDate` | `string (date)` or null |  | The latest disposition date on the record. |
| `latestFiledDate` | `string (date)` or null |  | The latest filing date on the record. |
| `hasPhoto` | `boolean` |  | `true` when the record has a published photograph. |
| `vacatedOrSealed` | `boolean` |  | `true` when the source marks the record or a charge vacated, expunged or sealed. Such records are returned, marked, unless the search sends `excludeVacatedOrSealed: true`. |
| `cases` | array of [NormalizedCase](https://offendersearch.app/docs/criminal/normalized-fields#object-normalizedcase) |  | One entry per case, in the order of the record's `cases[]`. |

## The NormalizedPlace object — residence and jurisdiction

A place, normalized. Every text key is `null` when not known.

Returned or accepted by [`POST /v1/criminal/search`](https://offendersearch.app/docs/criminal/search#reference-post-v1-criminal-search), [`GET /v1/criminal/searches/{searchId}`](https://offendersearch.app/docs/criminal/async#reference-get-v1-criminal-searches-searchid), [`POST /v1/criminal/batch`](https://offendersearch.app/docs/criminal/batch#reference-post-v1-criminal-batch), [`GET /v1/criminal/records/{recordId}`](https://offendersearch.app/docs/criminal/record-object#reference-get-v1-criminal-records-recordid).

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `line1` | `string` or null |  | Street line. Example `"16966 NORTHCHASE DR APT 313"`. |
| `city` | `string` or null |  | City. Example `"HOUSTON"`. |
| `county` | `string` or null |  | County. Example `"Harris"`. |
| `countyFips` | `string` or null |  | Five-digit county FIPS code. Example `"48201"`. |
| `state` | `string` or null |  | Two-letter state code. Example `"TX"`. |
| `zip5` | `string` or null |  | Five-digit ZIP. Example `"77060"`. |
| `lat` | `number` or null |  | Latitude. |
| `lng` | `number` or null |  | Longitude. |
| `geoPrecision` | `string` — one of `"rooftop"`, `"street"`, `"zip"`, `"none"` |  | How precise `lat`/`lng` are; `none` when there are no coordinates. |

## The NormalizedCase object — case stage and class

One case, normalized, in the order of the record's `cases[]`.

Returned or accepted by [`POST /v1/criminal/search`](https://offendersearch.app/docs/criminal/search#reference-post-v1-criminal-search), [`GET /v1/criminal/searches/{searchId}`](https://offendersearch.app/docs/criminal/async#reference-get-v1-criminal-searches-searchid), [`POST /v1/criminal/batch`](https://offendersearch.app/docs/criminal/batch#reference-post-v1-criminal-batch), [`GET /v1/criminal/records/{recordId}`](https://offendersearch.app/docs/criminal/record-object#reference-get-v1-criminal-records-recordid).

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `stage` | `string` — one of `"open"`, `"closed"`, `"warrant"`, `"unknown"` |  | Where the case stands. |
| `caseClass` | `string` — one of `"felony"`, `"misdemeanor"`, `"traffic"`, `"infraction"`, `"civil"`, `"unknown"` |  | The class of case. |
| `charges` | array of [NormalizedCharge](https://offendersearch.app/docs/criminal/normalized-fields#object-normalizedcharge) |  | One entry per charge, in the order of the case's `charges[]`. |

## The NormalizedCharge object — charge severity and outcome

One charge, normalized. The published statute, description, severity and disposition stay on the case's own `charges[]`.

Returned or accepted by [`POST /v1/criminal/search`](https://offendersearch.app/docs/criminal/search#reference-post-v1-criminal-search), [`GET /v1/criminal/searches/{searchId}`](https://offendersearch.app/docs/criminal/async#reference-get-v1-criminal-searches-searchid), [`POST /v1/criminal/batch`](https://offendersearch.app/docs/criminal/batch#reference-post-v1-criminal-batch), [`GET /v1/criminal/records/{recordId}`](https://offendersearch.app/docs/criminal/record-object#reference-get-v1-criminal-records-recordid).

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `category` | `string` — one of `"supervision"`, `"homicide"`, `"sex_offense"`, `"robbery"`, `"domestic_violence"`, `"dui"`, `"assault"`, `"weapons"`, `"burglary"`, `"fraud"`, `"theft"`, `"drug_distribution"`, `"drug_possession"`, `"traffic"`, `"public_order"`, `"other"` |  | What the charge is about. `other` when no category fits. |
| `notACharge` | `boolean` |  | `true` when the text in the charge slot is not an offense (a custody, supervision or caption entry). |
| `severity` | `string` — one of `"felony"`, `"misdemeanor"`, `"infraction"`, `"unknown"` |  | Felony, misdemeanor or infraction; `unknown` when it cannot be decided. |
| `severityBasis` | `string` or null — one of `"published"`, `"statute_code"`, `"statute_table"`, `"case_type"`, `"charge_text"` |  | What decided `severity`. `null` when `severity` is `unknown`. |
| `degree` | `string` or null |  | The source's class or degree text (`F3`, `Class A`), when stated. Example `"Class A"`. |
| `outcome` | `string` — one of `"convicted"`, `"pending"`, `"dismissed"`, `"nolle_prosequi"`, `"acquitted"`, `"deferred_or_diverted"`, `"vacated"`, `"warrant"`, `"transferred"`, `"closed_unspecified"`, `"administrative"`, `"unknown"` |  | The outcome class. |
| `convicted` | `boolean` or null |  | `true` for `convicted`; `false` for `acquitted`, `dismissed`, `nolle_prosequi`, `deferred_or_diverted` and `vacated`; `null` otherwise. |
| `custodyEvent` | `string` or null — one of `"booked"`, `"released"`, `"bonded"`, `"held"`, `"transferred"` |  | A jail event listed against the charge (not a court outcome). `null` when none. |
| `rule` | `string` |  | Only with `include: ["normalizedDetail"]`. Which rule decided `outcome`, for audits. |

---

## Related

- Previous: [The Criminal Record object](https://offendersearch.app/docs/criminal/record-object.md)
- Next: [Verification reports](https://offendersearch.app/docs/criminal/verification-reports.md)
- Index: [Criminal Search API reference](https://offendersearch.app/docs/criminal.md)
