Data Model Specifications

This page contains the specifications on how to use the data models found on our github pages:

LIBRS Data Models

These models are meant to be a simplification of the existing Flat File format, but still meant to be compatible with it. For instance, in some places entire segments have been removed and rolled into other ones (EG: Segment 51 - Victim Injury is gone, and instead injuryType is just a property of Victim now).


Quick Start

To get down to it, the easiest way to start incorporating the LIBRS JSON models would be to convert existing Flat Files to JSON Format, and compare the inputs and outputs. You can do this with the ValidateFFtoJSON Endpoint. See below for details. You can also view more in-depth information on the Swagger Page for the API: https://json.librs.org:5000/swagger/index.html Note: It’s been brought to our attention that Swagger will remove the New Line characters from the request, which will cause the FFToJson and ValidateFFToJson requests to fail. The recommended workaround is to use Postman.

API Endpoints

Currently the JSON Validator is hosted at https://json.librs.org:5000.

Endpoint Body Requirement Description
/api/jsonvalidate An RVO (Root Validation Object) containing an array of LIBRS Incidents to be processed. Body should be formatted as application/json. No authentication/authorization is required for validation. This is the API Endpoint that will take one an RVO with any number of JSON-formatted LIBRS Incidents, and return the validation plus the original object as an extended RVO. Can be used to both validate and submit data.
/api/fftojson A LIBRS Flat File (Whole thing, Header to Footer). Can contain as many incidents as desired. Body should be formatted as text/plain. No authentication/authorization is required for use. This Endpoint will take an existing LIBRS Flat File, and convert it to an RVO. This is useful when first getting started so you can see how the old Flat File segments have been converted into Objects. This endpoint does not store any data, and cannot be used for monthly submissions.
/api/validatefftojson A LIBRS Flat File (Whole thing, Header to Footer). Can contain as many incidents as desired. Body should be formatted as text/plain. No authentication/authorization is required for use. Similar to FFtoJSON, this endpoint will also validate the converted JSON File, returning both the converted RVO and validations of the Incident(s) to the User.


JSON Process


Root Validation Object

This is the primary object that is used in the JSON Validator. It contains the following properties/objects:

Property Name Data Type Description Required
Spec String LIBRS Spec version that the file follows (currently 2.5) Yes
Ori String ORI of the Submitting Agency Yes
ReportYear Integer 4-Digit Reporting Period Year Yes
ReportMonth Integer Reporting Period Month Yes
AgencyName String Descriptive Name of the Agency No (Legacy DE - Not used in validation)
SoftwareID String Name of the RMS Generating the Data Yes
SoftwareVersion String Version of the RMS Generating the Data Yes
ForSubmission Boolean Set this Booleen to False for validation mode. Agencies can use the API to validate data as needed.`` If the JSON file is submitted via the agency’s FTP, this booleen will automatically be set to true and picked up through the LIBRS JSON batch processor. No (Assumed False if missing or NULL)
ZeroReport Boolean Boolean that tells us there’s no data for this Agency for the specified Reporting Period and Year No (Assumed False if missing or NULL)
IncidentList List of Librs Incidents The actual Incident Data in the form of a List of the LibrsIncident object. Yes


Example JSON Incident

Before we get too far into things, here’s a quick example of the entire RVO (Root Validation Object):

{
    "spec": "2.5",
    "ori": "LA0320100",
    "reportYear": 2021,
    "reportMonth": 9,
    "agencyName": null,
    "softwareId": null,
    "softwareVersion": null,
    "forSubmission": false,
    "zeroReport": false,
    "incidentList": [
        {
            "actionType": "I",
            "incidentNumber": "21-000002-01",
            "admin": {
                "location": "            ",
                "stationID": null,
                "incidentDate": "2021-07-01T16:00:00Z",
                "isReportingDate": false,
                "clearedExceptionally": "N",
                "excpClearDate": null
            },
            "offense": [
                {
                    "offenseSeqNum": 1,
                    "isCompleted": true,
                    "offConnectToVic": 1,
                    "locationType": 48,
                    "premises": null,
                    "methodOfEntry": null,
                    "criminalActivity": [
                        "D"
                    ],
                    "weapons": [],
                    "cargoTheft": null,
                    "agencyAssignedNibrs": "35A",
                    "propertyLossTypeFlags": null,
                    "lrsNumber": "40:1060.13"
                }
            ],
            "propDesc": [
                {
                    "propertySeqNum": 1,
                    "propertyLossType": 6,
                    "propertyDescription": 10,
                    "propertyValue": null,
                    "dateRecovered": null,
                    "suspectedDrugType": "G",
                    "counterfeitDrug": false,
                    "estimatedDrugQty": 1.0,
                    "typeDrugMeas": "DU"
                }
            ],
            "propertyOffense": [
                {
                    "propertySequenceNumber": 1,
                    "offenseSequenceNumber": 1
                }
            ],
            "offender": [
                {
                    "offenderSeqNum": 1,
                    "age": "0",
                    "estimatedAge": false,
                    "dob": null,
                    "sex": "M",
                    "race": "U",
                    "gender": "   ",
                    "biasMotivation": null,
                    "ethnicity": "N",
                    "usingGaming": []
                    }
            ],
            "victim": [
                {
                    "officerActivity": null,
                    "victimSeqNum": 1,
                    "victimType": "S",
                    "age": null,
                    "estimatedAge": false,
                    "dob": null,
                    "sex": " ",
                    "gender": "   ",
                    "race": " ",
                    "ethnicity": " ",
                    "residentStatus": " ",
                    "aggravatedAssault": [],
                    "additionalHomicide": " ",
                    "precipitatingOffense": "   ",
                    "officerAssignmentType": null,
                    "officerOri": null,
                    "injuryType": " ",
                    "relatedOffenders": null
                }
            ],
            "arrestee": [],
	    "inchoate": false
        }
    ]
}


Librs Incident Object

The LibrsIncident object is the object that will be populated for each Incident that is being submitted. You’ll notice that not all Flat File Segments are represented by child objects. This is because we have been working on simplifying the objects where we can. For instance, Segment 41 - Offender Using/Gaming is gone, and instead represented by a property in the Offender Object.

THIS IS SUBJECT TO CHANGE - Don’t hold this as gospel. We will probably make more changes to this to make things simpler, like rolling in the Arrestee Statute Segment into the Arrestee, as well.

Basically, the only things that are required are what make it an Incident - Admin, Offense, and a Victim. And we also need to know the Incident Number and if it’s an insertion or a deletion, so Action Type and Incident Number are also needed. Everything else can be left out of the JSON Object if it’s not relevant (EG: Property Segment 30 for an Aggravated Assault).

Property Name Data Type Description Required
ActionType String Action Type for this Incident (Insert, Delete, etc…) Yes
IncidentNumber String Incident Number of this Incident Yes
Admin Admin Object Admin Segment (10) represented as a C# Object Yes
Offense List of Offense Objects List of Offense Segments (20) represented as a C# Object Yes
PropertySeg PropertySeg Object Property Segment (30) represented as a C# Object No
PropDesc List of PropDesc Objects List of Property Description Segments (31) represented as a C# Object No
PropertyOffense List of PropertyOffense Objects List of Property/Offense Relationship Segments (33) represented as a C# Object No
Offender List of Offender Objects List of Offender Segments (40) represented as a C# Object No
Victim List of Victim Objects List of Victim Segments (50) represented as a C# Object Yes
Arrestee List of Arrestee Objects List of Arrestee Segments (60) represented as a C# Object No
Errors List of Error Objects List of LIBRS Errors represented as a C# Object No (Returned back in API Response)
Warnings List of Warning Objects List of LIBRS Warnings represented as a C# Object No (Returned back in API Response)
Inchoate Boolean The Inchoate Modifier should be set to “True” if the LRS Code (DE 6) present in Offense and Arrestee Offense is appended with an Inchoate value. Inchoate values are used to add context to the charges laid against an
Offender. EG: Hiring a person to commit a murder should be charged with Attempted Murder, however the Addition of the Inchoate Modifier of ‘-I’ for ‘Inciting a Felony’ gives us extra context about exactly what happened.

If you don’t have an Inchoate Modifier to add, set this Boolean to “False”.
Yes




Admin Object

This is a C# Object that represents the existing Administrative Segment (10) from the Flat File. Some properties have been pulled out into the Root Validation Object (RVO) and thus don’t need to be repeated here or in other segments.

Property Name Data Type Description Required
Location String 12-Character String of the Incident Location Type (DE 9) No (Defaults to blank spaces)
StationID String 6-Character String of the Agency’s Station ID (DE L54) No (Defaults to blank spaces)
IncidentDate DateTime UTC Formatted Datetime of the Incident (DE 3) Yes
IsReportingDate Boolean Boolean that replaces the R Modifier in DE 3 No (Defaults False)
ClearedExceptionally String 1-Character String to represent the Exceptional Clearance Status of the Incident (DE 4) No (Defaults to “N” for None)
ExcpClearDate DateTime UTC Formatted Datetime of the Exceptional Clearance Date (DE 5) If ClearedExceptionally is not N, then Yes. Otherwise No.

Example

"admin": {
          "location": "            ",
          "stationID": "      ",
          "incidentDate": "2021-05-29T05:00:00",
          "isReportingDate": false,
          "clearedExceptionally": "N",
          "excpClearDate": null
         }


Offense Object

This is a C# Object that represents the existing Offense Segment (20) from the Flat File. You can include as many as required in the form of an array of these objects.

Property Name Data Type Description Required
OffenseSequenceNum Integer Number to Uniquely Identify the Offense (DE L6) Yes
AttemptedCompleted String 1-Digit Character (A for Attempted, or C for Completed) that depicts if the offense was Attempted or fully committed (Completed) (DE 7) Yes
OffConnecttoVic Integer Number that links the Offense to a single Victim via the Victim’s Sequence Number (DE 24) Yes
LocationType Integer Number that describes the Location in which the Offense took place (DE 9) No
Premises Integer Number that describes the Number of Premises an Offender Entered (DE 10) Yes if the Offense is Burglary and Location Type is 14 or 19, otherwise, no
MethodOfEntry String 1-Digit Character (F for Force, or N for No Force) that describes how the Offender entered a location in case of a Burglary. (DE 11) Yes if the Offense is Burglary, otherwise, no
CriminalActivity List of Strings List (up to three) 1-Digit Characters to represent three types of Criminal Activity/Gang Information involved in an Offense (DE 12) Yes
Weapons List of Weapons List of theWeapons Object, which contains a property for the weapon type, if it was an automatic firearm, if a firearm was stolen, and if a firearm was discharged in committing the offense (New DE) No (Defaults to Empty List)
CargoTheft Boolean Boolean value to indicate whether or not an Offense involved cargo theft. If any are true, the Incident-Level DE for the NIBRS Report will also reflect True, but for Louisiana we want to know about the individual Offense. No (Defaults to False)
AgencyAssignedNibrs String 3-Digit String of the NIBRS Code of the Offense at hand. (DE N6) Yes
LrsNumber String Up to 12-Digits of Characters to represent the Louisiana Revised Statute (LRS) Code of the Offense at hand (DE 6)

For more information about LRS and LRS Qualifiers see https://docs.librs.org/librs-spec#louisiana-revised-statute-6. If appending an Inchoate to t he LRS see https://docs.librs.org/librs-spec#inchoates-70.
Yes

Example

"offense": [
                {
                    "offenseSeqNum": 1,
                    "attemptedCompleted": "C",
                    "offConnecttoVic": 1,
                    "locationType": "20",
                    "premises": null,
                    "methodOfEntry": " ",
                    "criminalActivity": [
                        "N"
                    ],
                    "weapons": [
                        {
                            "weaponForce": "12",
                            "automatic": false,
                            "stolenFirearm": false,
                            "dischargedFirearm": false
                        }
                    ],
                    "cargoTheft": false,
                    "agencyAssignedNibrs": "09A",
                    "lrsNumber": "14:30.1-I"
                },
                {
                    "offenseSeqNum": "002",
                    "attemptedCompleted": "C",
                    "offConnecttoVic": "002",
                    "locationType": "20"
                    "criminalActivity": [
                        "N"
                    ],
                    "weapons": [
                        {
                            "weaponForce": "40",
                            "automatic": false,
                            "stolenFirearm": null,
                            "dischargedFirearm": null
                        }
                    ],
                    "agencyAssignedNibrs": "13B",
                    "lrsNumber": "14:35.2"
                }
            ]


Property Object

This is a C# Object that represents the existing Property Segment (30) from the Flat File. This Object is optional if you have no information to give us (EG: The only offense is an Aggravated Assault and has nothing to do with stolen vehicles). If you don’t include it, we fill in a blank object automatically, so the number of stolen and recovered vehicles will be the same as if they were left as blank spaces in the Flat File.

This may go away in the future and be tallied based on the Property Descriptions that are given to us, since all it contains is the number of stolen and recovered vehicles.

Property Name Data Type Description Required
NumOfStolenVehicles Integer Number to define the number of vehicles that were stolen in an Incident. (DE 18) No
NumOfRecoveredVehicles Integer Number to define the number of vehicles that were stolen in an Incident. (DE 19) No

Example

"propertySeg": {
                "numOfStolenVehicles": 1,
                "numOfRecoveredVehicles": 1
            }


Property Description Object

This is a C# Object that represents the existing Property Description Segment (31) from the Flat File. You can include as many as you like as an array of this object.

Property Name Data Type Description Required
PropertySeqNum Integer Number to uniquely identify the Property that’s being described (DE P1) Yes
PropertyLossType Integer Number to describe the Loss Type of the Property that is being Described. (DE 14) Yes
PropertyDescription Integer Numbered Code that’s used to describe what the actual property is (DE 15) Yes
PropertyValue Integer Number that’s used to identify the value of the Property that’s being described (DE 16) No
DateRecovered Datetime UTC Datetime of when the Property was Recovered (DE 17) No
SuspectedDrugType String 2-Digit String that is used to Identify the kind of drug the Property is if its Description is “Drug” (DE 20) No (Defaults to blank spaces)
EstimatedDrugQty Decimal Decimal Number to represent the quantity of a drug based on the selected Measurement Type (DE 21) No
TypeDrugMeas String 2-Digit String of the shortcode for the measurement type (DE 22) No (Defaults to blank spaces)

Example

"propDesc": [
                {
                    "propertySeqNum": 1,
                    "propertyLossType": 5,
                    "propertyDescription": 3,
                    "propertyValue": 10000,
                    "dateRecovered": "2020-07-31T05:00:00",
                    "suspectedDrugType": "  ",
                    "estimatedDrugQty": null,
                    "typeDrugMeas": "  "
                },
                {
                    "propertySeqNum": 2,
                    "propertyLossType": 6,
                    "propertyDescription": 10,
                    "propertyValue": null,
                    "dateRecovered": null,
                    "suspectedDrugType": "L ",
                    "estimatedDrugQty": 2.0,
                    "typeDrugMeas": "GM"
                }
    ]


Property Offense Object

This is a C# Object that represents the existing Property Offense Relationship Segment (33) from the Flat File. You can include as many as you like as an array of this object. It’s just a simple pair of Property Sequence Numbers and Offense Numbers so we can accurately link together the Properties to their associated Offense(s).

Property Name Data Type Description Required
PropertySequenceNumber Integer Number to identify the Property we want to relate to an Offense (DE P1R) Yes
OffenseSequenceNumber Integer Number to uniquely identify the Offense that the Property goes with (DE L6R) Yes

Example

"propertyOffense": [
                {
                    "propertySequenceNumber": 1,
                    "offenseSequenceNumber": 2
                },
                {
                    "propertySequenceNumber": 2,
                    "offenseSequenceNumber": 1
                }
            ]


Offender Object

This is a C# Object that represents the existing Offender Segment (40) from the Flat File. You can include as many as you like as an array of this object. It also wraps the Offender Using Segment (41) into it, so that Segment/Object doesn’t exist.

Property Name Data Type Description Required
OffenderSeqNum String Number to uniquely identify the Offender that’s being specified (Currently Left Padded with Zeros, but will probably become just an Integer in the future) (DE 36) Yes
Age String String to represent the Offender’s Age. 0-99 is allowed. Use 0 for Unknown offenders. Yes
EstimatedAge Boolean True/False value to tell us if the Age is an Estimate (replaces the “E” Modifier from the Flat File) No
Dob DateTime UTC Datetime of the Offender’s Birthdate No
Sex String 1-Digit Character to represent the biological sex of the Offender M, F, or U Yes
Race String 1-Digit Character to represent the race of the Offender Yes
Gender String 3-Digit Character String to represent the Gender Identity of the Offender. Note, we don’t actually have any requirements for this right now, but it is a thing. No
BiasMotivation Integer Number to represent the Bias/Motivation Type Yes
Ethnicity String 1-Digit Character to represent the Ethnicity of the Offender Yes
UsingGaming List of Strings List of 1-Digit Strings to represent the Using/Gaming Motivation Types of the Offender Yes

Example

"offender": [
                {
                    "offenderSeqNum": 1,
                    "age": "37",
                    "estimatedAge": false,
                    "dob": null,
                    "sex": "M",
                    "race": "B",
                    "gender": "   ",
                    "biasMotivation": 88,
                    "ethnicity": "U",
                    "usingGaming": [
                        "N"
                    ]
                }
            ]


Victim Object

This is a C# Object that represents the existing Offender Segment (40) from the Flat File. You can include as many as you like as an array of this object. Please note that it also includes the Victim Injury Segment (51) and the Victim/Offender Relationship (52) in it, so those are no longer separate Segments/Objects to be reported.

Property Name Data Type Description Required
VictimSeqNum Integer Number to uniquely identify the Victim that’s being specified (DE 36) Yes
VictimType String 1-Digit Character to represent the Type of Victim being described Yes
Age String String to represent the Victim’s Age. 0-99, NN, NB, or BB is allowed. Use 0 for Unknown victims. NN for NeoNatal, NB for Newborn, and BB for Baby. Yes
EstimatedAge Boolean True/False value to tell us if the age of the Victim is an Estimate (replaces the E Modifier from Flat File) No
Dob DateTime UTC Datetime of the Victim’s Birthdate No
Sex String 1-Digit Character to represent the Biological Sex of the Victim - M, F, or U Yes
Race String 1-Digit Character to represent the Race of the Victim Yes
Gender String 3-Digit Character String to represent the Gender Identity of the Victim. Note, we don’t actually have any requirements for this right now, but it is a thing. No
Ethnicity String 1-Digit Character to represent the Ethnicity of the Victim Yes
ResidentStatus String 1-Digit Character to represent the Permanent Resident/Citizenship status of the Victim. No
AggravatedAssault List of Integers List of up to two Numbers to describe the Aggravated Assault Circumstances, Negligent Manslaughter Circumstances, or Justifiable Homicide Circumstances (Dependent on the NIBRS Code of the Offense the Victim is associated with). 13A, 09A, 09B, & 09C
AdditionalHomicide String 1-Digit Character to further describe the circumstances surrounding an 09C - Justifiable Homicide. If Offense related to Victim is 09C
PrecipitatingOffense String 3-Digit NIBRS Code of the Offense that the Victim was committing when an 09C - Justifiable Homicide occurred. Note that the Victim of an 09C is the Offender of another Offense. This offense may or may not be reported alongside the 09C, so this DE is intended to capture that in case it isn’t. If Offense related to Victim is 09C
OfficerActivityCircumstance Integer Number to describe the actions/activities an Officer was performing when they became the Victim of an Offense. If Victim is Type “L”
OfficerAssignmentType String 1-Digit Character to describe the role the Officer that was the Victim of an Offense was performing/a part of when the Offense occurred. If Victim is Type “L”
OfficerOri String 9-Digit String of the Victim Officer’s ORI Number If Victim is Type “L”
InjuryType String 1-Digit Character to represent the Injury Type of the Victim For Crimes Against Person
RelatedOffenders List of VicOff Objects Object that contains the Victim Sequence Number, Offender Sequence Number, and their relationship. This will get revised to only be the Offender Number and Relationship. For Crimes Against Person and Property

Example

"victim": [
                {
                    "victimSeqNum": 1,
                    "victimType": "I",
                    "age": "33",
                    "estimatedAge": false,
                    "dob": null,
                    "sex": "F",
                    "gender": "   ",
                    "race": "B",
                    "ethnicity": "U",
                    "residentStatus": "R",
                    "aggravatedAssault": [
                        10
                    ],
                    "additionalHomicide": " ",
                    "precipitatingOffense": "   ",
                    "officerActivityCircumstance": "  ",
                    "officerAssignmentType": " ",
                    "officerOri": "         ",
                    "injuryType": " ",
                    "relatedOffenders": [
                        {
                            "victimSeqNum": 1,
                            "offenderNumber": 0,
                            "relationship": "RU"
                        }
                    ]
                }


Arrestee Object

This is a C# Object that represents the existing Arrestee Segment (60) from the Flat File. You can include as many as you like as an array of this object.

Property Name Data Type Description Required
ArrestSeqNum Integer Number to uniquely identify the Arrestee that’s being specified (DE 36) Yes
ArrestNumber String 12-Digit Alpha/Numeric String of Characters that uniquely identifies the Arrest in the Agency’s RMS Yes
ArrTransactionNumber String 15-Digit Alpha/Numeric String of Characters that uniquely Identifies the Arrestee in AFIS (DE L55) Yes
ArresteeName String 20-Digit Character String of the Arrestee’s Name. Should be in the format of (Last)(Suffix),(First)(Middle) No
ArrestDate DateTime UTC Datetime of the Arrest Yes
ArrestType String 1-Digit Character to describe the nature of how the Arrest was Initiated - O, S, or T. Yes
MultipleArresteeIndicator String 1-Digit Character that indicates if this Arrest should be counted towards the number ofpeople arrested by an Agency. Sometimes an Offender will appear multiple times in the same Incident, or across multiple Incidents. Their arrest for one of these Offenses will subsequently “clear” the others, but since they were only physically arrested one time, the MAI should be used to denote that the Arrest record shouldn’t affect the number of people the agency has arrested, only the number of Offenses cleared by arrest. Yes
Age String String to represent the Arrestee’s Age. 1-99 for Age in years. If it is impossible to determine even an Estimated Age of the Arrestee, then enter Unknown (‘0’). If the Arrestee’s Age is NOT KNOWN, estimate the Arrestee Age. If a range is given for the Arrestee’s Age, enter the median (average) age of the range (rounded down). Estimated Age should be set to True if the age is estimated. Yes
EstimatedAge Boolean True/False value to tell us if the age of the Arrestee is an Estimate (replaces the E Modifier from Flat File)  
Dob DateTime UTC Datetime of the Arrestee’s Birthdate No
Sex String 1-Digit Character to represent the Biological Sex of the Arrestee - M, F, or U Yes
Race String 1-Digit Character to represent the Race of the Arrestee Yes
Gender String 3-Digit Character String to represent the Gender Identity of the Arrestee. Note, we don’t actually have any requirements for this right now, but it is a thing. No
Ethnicity String 1-Digit Character to represent the Ethnicity of the Arrestee Yes
ResidentStatus String 1-Digit Character to represent the Permanent Resident/Citizenship status of the Arrestee. No
DispositionUnder18 String 1-Digit Character used to describe how an Arrestee 17 years of age or younger was handled by the Agency.Options in this field are as follows:
  • D - Handled Within Department and Released.
  • J - Referred to Juvenile Court or Probation Department
  • W - Referred to Welfare Agency
  • P - Referred to Other Police Agency
  • A - Referred to Criminal or Adult Court.
``The Federal UCR program considers juveniles as under 18 years of age regardless of state law. The LIBRS program will stay aligned with the FBI even though the Juvenile Age definition has changed. If the arrestee is 17 and considered an adult in Louisiana, please use A – Referred to Criminal or Adult Court.
If Arrestee is 17 or younger
ArrestArmed List of Weapon List ofWeapon Objects (Same as in the Offense Object) that were found on the Arrestee’s person at the time of Arrest. Yes
ArrestStatute List of ArrStatute List of theArrestee Statute Objects associated with the Arrestee Yes

Example

"arrestee": [
                {
                    "arrestSeqNum": 1,
                    "arrestNumber": "     8675309",
                    "arrTransactionNumber": "               ",
                    "arresteeName": "DOE, JOHNATHAN Q",
                    "arrestDate": "2020-07-01T00:00:00Z",
                    "arrestType": "O",
                    "multipleArresteeIndicator": "N",
                    "age": "37",
                    "dob": "1980-01-31T00:00:00Z",
                    "sex": "M",
                    "gender": "   ",
                    "race": "W",
                    "ethnicity": "U",
                    "residentStatus": "U",
                    "dispositionUnder17": " "
                    "arrestArmed":
   		   							[{
                        "weaponForce": "40",
                        "automatic": false,
                        "stolenFirearm": null,
                        "dischargedFirearm": null
                			}],
										"arrestStatute": 
											[{
                        "arrestConToOffense": "00120-000000-01"
                        "agencyAssignedNibrs": "240",
                        "lrsNumber": "14:67.26"
                      },{
                        "arrestConToOffense": "00220-000000-01",
                        "agencyAssignedNibrs": "35A",
                        "lrsNumber": "40:967"
                      }]
                }
            ]


Errors Object

The Errors Object is equivalent to the Error Details that are provided in the Flat File’s Error Detail Report. We provide them back here so that the JSON Validator’s API can be called within the RMS, and errors can be directly returned to the User.

This is a Read-Only object, you won’t be sending this along with your data, only getting it back.

Property Name Data Type Description
ErrorCode Integer The Error Code of the Error (Typically a 5-Digit Number)
ErrorMsg String The text of the Error Code describing what’s wrong
Contents String The particular data that was submitted that the validation had an issue with
DataElem String The particular data elements that the validation had an issue with
IncidentNumber String The Incident Number that the validation had an issue with
SegmentNumber String Legacy, but the equivalent of the Segment Number as it refers to the JSON Object that the validation error came from (Will get updated to just say what the name of the object was, but for now it spits out something like 20 if it doesn’t like and Offense)


Warnings Object

The Warnings Object is basically the same thing as the Errors Object, but just for warnings. Makes it easy to keep the actual Errors that are preventing the Incident from being accepted separate from just Warnings about it.

This is a Read-Only object, you won’t be sending this along with your data, only getting it back.

Property Name Data Type Description
ErrorCode Integer The Warning Code of the Warning (Typically a 5-Digit Number)
ErrorMsg String The text of the Warning Code describing what’s wrong
Contents String The particular data that was submitted that the validation had an issue with
DataElem String The particular data elements that the validation had an issue with


Incident Child Objects

The following Objects are used within the other objects that make up an Incident. :



Arrestee Statute Object

This is a C# Object that represents the existing Arrestee Statute Segment (62) from the Flat File. This will end up getting rolled into the Arrestee Object, but for now it is separate.

Property Name Data Type Description Required
ArrestConToOffense String 15-Character String that combines the Offense Sequence Number with the Incident Number EG XXXYY-YYYYYY-YY, where XXX is the Offense Sequence Number and YY-Y… is the Incident Number Yes
AgencyAssignedNibrs String 3-Digit NIBRS Code of the Offense that the Arrestee was Arrested for. Yes
LrsNumber String 12-Digit LRS Code (Louisiana Revised Statute Code) that the Arrestee was Arrested for.

For more information about LRS and allowed Qualifiers see https://docs.librs.org/librs-spec#louisiana-revised-statute-number-of-arrest-45. If appending an Inchoate to the LRS see
https://docs.librs.org/librs-spec#inchoates-70.
 

Example

"arrStatute": [
                {
                    "arrestConToOffense": "00120-000000-01"
                    "agencyAssignedNibrs": "240",
                    "lrsNumber": "14:67.26"
                },
                {
                    "arrestConToOffense": "00220-000000-01",
                    "agencyAssignedNibrs": "35A",
                    "lrsNumber": "40:967"
                }
            ]


Weapon Object

This is an object that replaces the Type of Weapon/Force Data Element from the Flat File.

Property Name Data Type Description Required
WeaponForce Integer Number that represents the Type of Weapon Force being described Yes
Automatic Boolean True/False value that describes if the Weapon was an Automatic Weapon or not (only relevant for Firearms) No (Defaults False)
StolenFirearm Boolean True/False value that describes if a Firearm was Stolen (only relevant for Firearms) No (Defaults False)
DischargedFirearm Boolean True/False value that describes if a Firearm was Discharged in the course of an Offense being committed (only relevant for Firearms) No (Defaults False)

Example:

"weapon":
   		[{
        "weaponForce": 40,
        "automatic": false,
        "stolenFirearm": null,
        "dischargedFirearm": null
      }]


Legacy LIBRS Values

In order to maintain compatibility with the existing codebase, we had to bring forward some legacy data elements. When submitting data to us, you do not need to include any of these - these are here for us behind the scenes because we’re using the same library you are.

Another way to look at it is this is all the stuff you had to repeat on every single segment, despite that 99% of it never changed. Cutting fluff.

Property Name Data Type Description Required
EntireLineSegment String Entire Legacy Flat File line (Segment) that was read in No
SegmentDescriptor String First two digits of the Flat File Segment to tell us what it was (10, 20, etc…) No
ActionType String Action Type that the Segment was trying to perform No
ORINumber String ORI of the Submitting Agency No
IncidentNumber String Incident Number the Segment is associated with No
ExpansionBuffer String Blank Space left for future expansion No
SegmentEnd String ZZ at the end of the data No
Padding String Blank Spaces to make the line 150 Characters long. No