Criminal Records API · v1.0.0

Record normalization

The source's words at the top level; the closed vocabularies in `normalized`. Nothing is overwritten.

The rule

Every source word is kept in its own field — sex, race, currentStatus, physical.hairColor, charges[].disposition, recordType. The normalized object holds the closed-vocabulary classification computed from per-source tables, profile rules and global rules, falling back to unknown. recordCategory is the normalized twin of recordType; normalized.custodyStatus of currentStatus; normalized…outcome of disposition. sources[].code is always the public jurisdiction code.

Field by field

Source words (top level)Classification (`normalized`)Vocabulary
recordTyperecordCategory (also top level)court, jail, prison, warrant, registry, exclusion, other
currentStatuscustodyStatustwelve values incl. unknown
charges[].dispositioncases[].charges[].outcome, convicted; outcomes[], hasConviction, convictionCounttwelve outcomes
charges[].severity, description, statutecases[].charges[].severity, severityBasis, category; topSeverity, chargeCategories[]severities, bases, sixteen categories
sex, race, physical.hairColor, physical.eyeColorsex, race, hair, eyesNCIC codes (M F X U; W B I A H U; hair and eye codes)
address, state, countyresidence, jurisdiction (NormalizedPlace with geoPrecision: rooftop, street, zip, none)—
dob.*dob.dobPrecisionfull, month_year, year, age, none
dates in cases[], booking, warrant, …ISO where they parse; otherwise the source text—

normalized.quality is ok or quarantined; normalized.rulesVersion names the rule set. include: ["normalizedDetail"] adds the rule that produced each charge's classification; include: ["sourceData"] is reserved for the per-source annex and today only clears omittedFields.

Product overview