Q: Is the billing based on each URI we go to? How are we charged if multiple requests are submitted to satisfy one request?
A: We make a single charge for each search. A search will return "resources" based on that search. You may then access more details at no further cost by following some of the URI items contained in the resources. So for instance, if you search for "Capone, Al" in the role of "Defendant", you'll be charged for that search and then presented with a series of case resources with various detail URIs that you may re-submit to get more information. Walking down the tree of each case to get the related resources that interest you doesn't cost a thing. (We figure that from your perspective, a result that says "Nothing found" is the most valuable result, so charging you more to sift through the details when we find one or more hits shouldn't cost more.)
In the API, a search is any URI your application constructs. Typically a search URI contains "actors_cases.xml", "cases.xml", "actors_cases.json", or "cases.json" followed by at least one search parameter. Inside the response may be several URI items that point to detail resources such as charges, minutes, and dispositions. Search requests are billable, but your account will not be charged for any requests that follow the detail URIs.
Q: When I do a search I get only 200 records. Is there a limit to the size of the result set?
A: Search results are limited to the first 200 items. If the search could return more than 200 items, use the offset and limit parameters in subsequent requests. See the next question for details.
Q: What are the offset and limit parameters? Why would I need them?
A: Search responses are limited to 200 items. With the limit parameter, you can specify that fewer items be returned. If the first response contained 200 items, you can get some more by repeating the request with "offset=200". The request can be repeated with new offsets as many times as necessary to get all the items that match the search parameters.
Q: What is the order of search results?
A: Results are guaranteed to have a consistent order. If you repeat a request, the results will come back in the same order each time. If you want the results in a particular order, use the order_by request parameter.
Q: Is there a stated SLA for response time of the searches?
A: No. Because we give you wide latitude in constructing your searches, you can create painful queries that will result in slow response time. However, we believe you *should* be allowed to do this when the need arises, so we don't limit you, but therefore can't guarantee a response time. A typical search where you specify the full last name and the first few letters of the first name will return in sub-second time. If you have a "typical" search for you that is not returning fast enough, let us know and we'll tune the system to respond very quickly to any reasonable search.
Q: What are the stated hours of uptime and scheduled downtime/maintenance windows?
A: I don't think we currently have a policy set for this. We aim to keep the API service running 24/7/365. So far, we have been able to perform system upgrades in a few minutes when no one is using the service, so you should not even notice. If we ever need to take the API service down for an extended period of time, we will give you advance notice.
Q: Is there a document that contains all valid XML elements, maximum lengths, field types, and possible values for the fields. Ex. Case_local_disposition_code values we have seen; BT, VB, DE, DI, blank, null.
A: No. With a very few exceptions, Most of these fields are unrestricted text received from the local case management systems. We can help you decode the current most common distinct values of fields such as disposition code, but we can't guarantee that a county won't start sending a new one tomorrow. (But of course, we're always willing to help if you run into a head-scratcher.) See the next question for one of the exceptions.
Q: There are several locations for disposition codes, especially for criminal cases. Is there a list of descriptions that correspond to the codes?
A: As explained in the previous question, we receive many of these disposition codes as unrestricted text, and we do not have a canonical list of the possible codes. This is true for case_local_disposition_code and criminal_disposition_local_code. The exception is criminal_disposition_state_disposition_code.
Recently (in 2013), many courts in Indiana began using the same set of disposition codes. When we know a court is using this set, we put the value into criminal_disposition_state_disposition_code. This set of disposition codes and the corresponding descriptions are listed here:
ACH Adjudicated CHINS
AD Adjudicated Delinquent
ADLI Adjudicated Delinquent: Lesser Included
ADM Admission
ANCH Adjudicated Not CHINS
AND Adjudicated Not Delinquent
CM Conviction Merged
D Dismissed
DJ Default Judgment
DRE Disposition Removed Due to Clerical Error
DWOP Dismissed Without Prejudice
DWP Dismissed with Prejudice
ER Charge Added in Error
FAC Finding of Aggravated Circumstances
FGL Finding of Guilty Lesser Included
G Finding of Guilty
GMI Finding of Guilty but Mentally Ill
GPLI Plea Guilty Lesser Included
JAD Judgment Against Defendant
JFD Judgment for Defendant
JSA Judgment Set Aside
NCO Nolo Contendere
NG Finding of Not Guilty
NRI Not Responsible By Reason Of Insanity
PBA Plea by Agreement
PBAM Plea By Agreement but Mentally Ill
PG Plea Guilty
PGM Plea Guilty but Mentally Ill
REM Remanded
REV Reversed
RVRM Reversed and Remanded
VTDN Vacated (Trial De Novo)
Q: What is the list of values that can populate charge_state_degree_code?
A: The list of codes and the corresponding descriptions as of July 1, 2014 is:
F1 Felony 1
F2 Felony 2
F3 Felony 3
F4 Felony 4
F5 Felony 5
F6 Felony 6
FA Felony A
FB Felony B
FC Felony C
FD Felony D
IFA Infraction Class A
IFB Infraction Class B
IFC Infraction Class C
IFD Infraction Class D
MA Misdemeanor Class A
MB Misdemeanor Class B
MC Misdemeanor Class C
MR Murder
NC No State Code
Q: What is the list of values that can populate charge_state_offense_modifier_code?
A: The list of codes and the corresponding descriptions is:
AC Attempt to Commit
AIC Aiding, Inducing, or Causing an Offense
CC Conspiracy to Commit
Q: Is there any documentation of return/error codes when making the request? How do we distinguish between data not found and service not available?
A: There is no documentation of return/error codes specific to Doxpop. We use standard HTTP status codes when making a response. 200 means good data. 500 means there is a problem with our service. Status codes in the 400 range means there was some problem with the request.
If there is no data to be found for the request, an empty set will be returned. For JSON that would be [], for XML it would be an empty <response/> element.
Q: The service appears to support pattern matching. Can someone confirm the matching logic?
A: We do only minimal pattern matching in a few places. For names, we expect the last name then first name; commas are ignored, and an implicit wildcard is placed at the end. Case number searches ignore hyphens and other punctuation.
Q: Is address searching on the defendant supported? Will it be in the future?
A: We don't support any address searching on the defendant. You can limit searches by county of the court. We'll add this to our requested enhancement list. Let us know if it is important to you.
Q: Are the search results FCRA compliant?
A: Only if you make them compliant by following the rules on your end. We do not "evaluate" the results in any way, we only provide query tools to access the raw data and leave the interpretation and evaluation to you.
Q: Can I retrieve all of the court records in a single request for local caching?
A: Sure- We don't mind if you cache some of our smaller "lookup" tables such as the courts locally to reduce the number of requests you need to make. Just make sure you have a system for keeping them updated. To retrieve all courts in a single request, use a request like this: http://demo-api.doxpop.com/courts.xml.