> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pr.snh-ai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Supported XML Schemas

> XML formats accepted by the Public Records service for criminal record evaluation

The Public Records service accepts criminal records as raw XML for initial submissions. The XML is automatically detected and parsed — you do not need to specify which schema you are sending.

Three XML schemas are supported:

| Schema                                              | Root Element                | Structure                                                                                           |
| --------------------------------------------------- | --------------------------- | --------------------------------------------------------------------------------------------------- |
| [ScreeningResults](#screeningresults)               | `<ScreeningResults>`        | Flat structure — cases listed under `<postResults>` with `<chargeinfo>` for each charge             |
| [BackgroundReportPackage](#backgroundreportpackage) | `<BackgroundReportPackage>` | Nested structure — screenings contain cases with `<SubjectIdentification>` blocks                   |
| [OrderXML](#orderxml)                               | `<OrderXML>`                | Order-based structure — `<Order>` → `<OrderDetail>` → results with `<Record>` and `<Count>` entries |

All three schemas are normalized into the same internal format before compliance rules are applied. The response structure is identical regardless of which XML schema was submitted.

***

## ScreeningResults

Root element: `<ScreeningResults>`

The most common format. Criminal cases are listed under `<postResults>`, with each case containing charge information, defendant details, and case metadata.

### Structure overview

```xml theme={null}
<ScreeningResults>
  <login>
    <account>05022022</account>
    <username>testuser</username>
  </login>
  <Subject>
    <name_first>JOHN</name_first>
    <name_middle>A</name_middle>
    <name_last>DOE</name_last>
    <dob>19900515</dob>
    <ssn>123456789</ssn>
  </Subject>
  <postResults order="12345" type="USA_CRIMINAL" filledStatus="FILLED">
    <case>
      <case_number>MJ-05003-TR-0006023-2020</case_number>
      <offense_date>20200310</offense_date>
      <jurisdiction_state>PA</jurisdiction_state>
      <jurisdiction>Montgomery County</jurisdiction>
      <defendant>
        <name_first>JOHN</name_first>
        <name_last>DOE</name_last>
        <dob>19900515</dob>
      </defendant>
      <chargeinfo>
        <charge>DRIVING WHILE OPERATOR PRIVILEGES SUSPENDED</charge>
        <crime_type>SUMMARY</crime_type>
        <disposition>GUILTY</disposition>
        <disposition_date>20200610</disposition_date>
        <sentencing>
          <jail_time>30 Days</jail_time>
          <fine_amount>250.00</fine_amount>
          <probation>12 Months</probation>
        </sentencing>
      </chargeinfo>
    </case>
  </postResults>
</ScreeningResults>
```

### Key elements

| Element         | Location                  | Description                                                                                 |
| --------------- | ------------------------- | ------------------------------------------------------------------------------------------- |
| `<login>`       | Root                      | Account credentials identifying the screening provider                                      |
| `<Subject>`     | Root                      | The person being screened (name, DOB, SSN)                                                  |
| `<postResults>` | Root                      | One per search result — contains all cases from one court search                            |
| `@order`        | `<postResults>` attribute | Search/order reference number                                                               |
| `@type`         | `<postResults>` attribute | Search type (e.g., `USA_CRIMINAL`, `USA_CRIMINAL_PLUS`, `County_criminal`)                  |
| `<case>`        | Inside `<postResults>`    | One per criminal case — contains case number, jurisdiction, and charges                     |
| `<chargeinfo>`  | Inside `<case>`           | One per charge — contains charge description, type, disposition, and sentencing             |
| `<defendant>`   | Inside `<case>`           | The person named in the court record (compared against the candidate for identity matching) |
| `<sentencing>`  | Inside `<chargeinfo>`     | Sentence details (jail time, fines, probation, etc.)                                        |

### Accepted variations

The parser also handles:

* `<xml><ScreeningResults>...</ScreeningResults></xml>` (nested in an outer wrapper)
* `<xml><postResults>...</postResults></xml>` (direct case listing without the ScreeningResults wrapper)
* Multiple `<postResults>` blocks (one per court search)
* Multiple `<chargeinfo>` blocks within a single `<case>`
* Single `<chargeinfo>` (not wrapped in an array)

***

## BackgroundReportPackage

Root element: `<BackgroundReportPackage>`

A more structured format that groups screening results by type, with detailed subject identification blocks per case.

### Structure overview

```xml theme={null}
<BackgroundReportPackage>
  <ScreeningsSummary>
    <Organization>
      <OrganizationName>ScreeningCo</OrganizationName>
    </Organization>
    <PersonalData>
      <PersonName>
        <GivenName>JOHN</GivenName>
        <MiddleName>A</MiddleName>
        <FamilyName>DOE</FamilyName>
      </PersonName>
      <DateOfBirth>1990-05-15</DateOfBirth>
    </PersonalData>
  </ScreeningsSummary>
  <Screenings>
    <Screening type="Criminal">
      <ScreeningStatus>
        <OrderStatus>COMPLETED</OrderStatus>
        <DateOrderReceived>2025-04-30</DateOrderReceived>
      </ScreeningStatus>
      <Results>
        <Result>
          <CaseNumber>2024-CF-00312</CaseNumber>
          <CourtName>Harris County Criminal Court</CourtName>
          <State>TX</State>
          <County>Harris</County>
          <FileDate>2024-01-15</FileDate>
          <SubjectIdentification>
            <PersonName>
              <GivenName>JOHN</GivenName>
              <FamilyName>DOE</FamilyName>
            </PersonName>
            <DateOfBirth>1990-05-15</DateOfBirth>
          </SubjectIdentification>
          <Charges>
            <Charge>
              <Description>THEFT OF PROPERTY >= $2,500</Description>
              <Type>FELONY</Type>
              <Disposition>GUILTY</Disposition>
              <DispositionDate>2024-06-20</DispositionDate>
            </Charge>
          </Charges>
        </Result>
      </Results>
    </Screening>
  </Screenings>
</BackgroundReportPackage>
```

### Key elements

| Element                   | Location                     | Description                                                                    |
| ------------------------- | ---------------------------- | ------------------------------------------------------------------------------ |
| `<ScreeningsSummary>`     | Root                         | Summary information including organization and candidate personal data         |
| `<PersonalData>`          | Inside `<ScreeningsSummary>` | The person being screened — uses `<GivenName>`, `<MiddleName>`, `<FamilyName>` |
| `<Screenings>`            | Root                         | Container for all screening results                                            |
| `<Screening>`             | Inside `<Screenings>`        | One per screening type — contains status and results                           |
| `<ScreeningStatus>`       | Inside `<Screening>`         | Order status and dates                                                         |
| `<Result>`                | Inside `<Results>`           | One per criminal case                                                          |
| `<SubjectIdentification>` | Inside `<Result>`            | The person named in the court record for this case                             |
| `<Charges>` / `<Charge>`  | Inside `<Result>`            | Individual charges with description, type, and disposition                     |

***

## OrderXML

Root element: `<OrderXML>`

An order-centric format where criminal results are nested within order details. Cases are represented as records with individual charge counts.

### Structure overview

```xml theme={null}
<OrderXML>
  <Order>
    <Subject>
      <FirstName>JOHN</FirstName>
      <MiddleName>A</MiddleName>
      <LastName>DOE</LastName>
      <DateOfBirth>05/15/1990</DateOfBirth>
      <SSN>123-45-6789</SSN>
      <Aliases>DOE, JOHNNY A</Aliases>
      <Address>123 Main St, Austin, TX 78701</Address>
    </Subject>
    <OrderDetail OrderId="41115779" ServiceCode="County_criminal">
      <Status>COMPLETE</Status>
      <State>TX</State>
      <County>Harris</County>
      <Result>
        <Record>
          <CaseNumber>2024-CF-00312</CaseNumber>
          <FileDate>01/15/2024</FileDate>
          <DOB>05/15/1990</DOB>
          <DefendantName>DOE, JOHN A</DefendantName>
          <Count>
            <Charge>THEFT OF PROPERTY >= $2,500</Charge>
            <Type>FELONY</Type>
            <Disposition>GUILTY</Disposition>
            <DispositionDate>06/20/2024</DispositionDate>
            <OffenseDate>12/01/2023</OffenseDate>
            <Sentence>
              <PrisonTime>2 Years</PrisonTime>
              <Restitution>5000.00</Restitution>
            </Sentence>
          </Count>
        </Record>
      </Result>
    </OrderDetail>
  </Order>
</OrderXML>
```

### Key elements

| Element         | Location                  | Description                                                                   |
| --------------- | ------------------------- | ----------------------------------------------------------------------------- |
| `<Order>`       | Root                      | The top-level order container                                                 |
| `<Subject>`     | Inside `<Order>`          | The person being screened — uses `<FirstName>`, `<LastName>`, `<DateOfBirth>` |
| `<Aliases>`     | Inside `<Subject>`        | Known aliases in `"LastName, FirstName MiddleName"` format                    |
| `<OrderDetail>` | Inside `<Order>`          | One per search within the order — contains results for one court/jurisdiction |
| `@OrderId`      | `<OrderDetail>` attribute | The order detail identifier                                                   |
| `@ServiceCode`  | `<OrderDetail>` attribute | Search type (e.g., `County_criminal`, `Statewide_criminal`)                   |
| `<Result>`      | Inside `<OrderDetail>`    | Container for criminal records found                                          |
| `<Record>`      | Inside `<Result>`         | One per criminal case                                                         |
| `<Count>`       | Inside `<Record>`         | One per individual charge within a case                                       |
| `<Sentence>`    | Inside `<Count>`          | Sentencing details for the charge                                             |

***

## How XML Schemas Map to the API

Regardless of which schema you submit, the service normalizes the data into the same internal structure. The mapping works like this:

| Concept      | ScreeningResults | BackgroundReportPackage   | OrderXML          | API Response        |
| ------------ | ---------------- | ------------------------- | ----------------- | ------------------- |
| Court search | `<postResults>`  | `<Screening>`             | `<OrderDetail>`   | `court_decisions[]` |
| Case         | `<case>`         | `<Result>`                | `<Record>`        | `case_decisions[]`  |
| Charge       | `<chargeinfo>`   | `<Charge>`                | `<Count>`         | `offenses[]`        |
| Subject name | `<defendant>`    | `<SubjectIdentification>` | `<DefendantName>` | `id_match`          |
| Charge type  | `<crime_type>`   | `<Type>`                  | `<Type>`          | `type`              |
| Disposition  | `<disposition>`  | `<Disposition>`           | `<Disposition>`   | `disposition`       |

You do not need to pre-process or convert between formats. Send the XML as-is in the `record.xml` field, and the service handles detection and parsing automatically.

***

## Alternative: JSON Resubmission

For resubmissions with corrected data, you can bypass XML entirely and send pre-processed criminal data as JSON using `record.record_json`. See [Resubmission Workflow](/guides/resubmission) and the [`record_json` reference](/api-reference/endpoints/evaluate#record_json-reference) for the JSON structure.

***

## Related

* [How It Works](/how-it-works) — Step-by-step processing flow
* [Evaluate Endpoint](/api-reference/endpoints/evaluate) — Full API reference including `record.xml` field
* [Resubmission Workflow](/guides/resubmission) — JSON resubmission path
