Michigan Plate Readers

Data

Every data file this site publishes, with a definition for each column.

Version. Data files, version 1 (2026-10-03). The version goes up by one each time the published files change; the changelog lists what changed.

Cite as. Ackley-Smith, Chance. Michigan Plate Readers: data files, version 1 (2026-10-03). https://michiganplatereaders.org/data/

Files

FileWhat it holdsRowsLast changedSHA-256
agencies.csvOne row per agency on the project's list, in order of name. Agencies with an empty slug have no page on the site yet.712026-10-03085d2a386f2c0406e148a1f1b7677bb960f18d7e4d3d01be564e289474a15e34
appeals.csvOne row per appeal filed with the head of a public body under MCL 15.240 (a denial) or MCL 15.240a (a fee).32026-10-0340a20a7e93921cfb3afc177f7a5c0151de0f404efb7bb4e1620a7fd0d54ec84f
documents.csvOne row per published document: letters, notices and records received from agencies, records released to other requesters, and our own filings.552026-10-034ba3eaddd2a18f1bfa6e39af8d3e76068e37b607f4c1d8738863ad53553e2ef5
fees.csvFees the project has paid to agencies for records, one row per payment. Fees demanded and not paid are in requests.csv.12026-10-0345e55428b9f1cd268add65aa90549d14c37c18842091b3210e525b708b4d30f5
requests.csvThe request log: one row per request filed. Dates, dollar amounts and codes; the letters are listed in documents.csv.302026-10-0304cdf7899afd51c1ff382afdeab74ef418d7477f501de328a489f3054bcd1905
right_of_reply.csvThe right-of-reply log: the draft of an agency's findings sent to the agency before they are first published, and the agency's reply.02026-10-03c98700997136061ffa74f4a9fa2149b776f9b1390a5d527db6b5c26a23294741

Codebook

The same definitions as one file: CODEBOOK.md.

agencies.csv

One row per agency on the project's list, in order of name. Agencies with an empty slug have no page on the site yet.

ColumnTypeMeaningSource
agencystringAgency name as used in the request log. requests.csv joins on this column.Our request log
slugstringShort name used in the agency's page address and in the agency column of the other tables. Empty until the agency has a page on the site: from its first request, or from the day its findings are published.Assigned by us
countystringOakland, Wayne, Macomb, or Statewide.Entered by us from public sources
polices_itselfstringYes when the community runs its own police department; No, with who polices it, when another agency does; n/a for county and state bodies and for a city council or oversight board.Entered by us from public sources

appeals.csv

One row per appeal filed with the head of a public body under MCL 15.240 (a denial) or MCL 15.240a (a fee).

ColumnTypeMeaningSource
agencystringAgency slug.agencies.csv, slug
agency_namestringAgency name.Entered by us
requeststringTracking number of the request appealed.requests.csv
kindcodefee: an appeal of a fee under MCL 15.240a. denial: an appeal of a denial under MCL 15.240.The appeal as filed
date_sentdateDay the appeal was sent.The appeal as filed
outcome_codecodepending: no determination yet. fee_reduced, fee_upheld, fee_waived: the determination on a fee appeal. reversed, reversed_in_part, upheld: the determination on an appeal of a denial. withdrawn: withdrawn by us before a determination.The agency's determination
outcome_datedateDay the determination was delivered, or the day the appeal was withdrawn. Empty while pending.The agency's determination
our_docstringPath of the published copy of the appeal, contact details omitted.documents.csv, kind = ours
agency_docstringPath of the published copy of the agency's determination, where there is one.documents.csv, kind = agency

documents.csv

One row per published document: letters, notices and records received from agencies, records released to other requesters, and our own filings.

ColumnTypeMeaningSource
agencystringAgency slug.agencies.csv, slug
kindcodeagency: a document an agency sent. ours: a request, appeal or other filing we sent.Entered by us
classcodecorrespondence: a document about the handling of a request (our requests and appeals; the agency's response letters, fee notices and forms, determinations and denials), published with the request log. record: a record the agency produced in answer to a request, published with the agency's findings.Entered by us
filestringPath of the published file.Entered by us
titlestringWhat the document is.Written from the document
requeststringThe request that produced it (tracking number), or the MuckRock request number for a record released to another requester.Entered by us
date_receiveddateDay the record was received from the agency. For kind = ours, the day we sent it. For a record released to another requester, the date of that release.Response files; MuckRock request pages
pagesintegerPage count for PDFs; empty for other file types.Counted from the published file
sha256stringSHA-256 of the file as published, after any redaction.Computed from the published file
redactionstringWhat was removed before publication, or none.Entered by us
source_urlstringWhere the record was first released, for records obtained by another requester.MuckRock request pages

fees.csv

Fees the project has paid to agencies for records, one row per payment. Fees demanded and not paid are in requests.csv.

ColumnTypeMeaningSource
agencystringAgency slug.agencies.csv, slug
agency_namestringAgency name.Entered by us
datedateDay the payment was made.The project's payment record
requeststringTracking number of the request the fee was charged on.requests.csv
amountnumberDollars paid.The agency's invoice or fee form
kindstringDeposit or final fee.The agency's invoice or fee form

requests.csv

The request log: one row per request filed. Dates, dollar amounts and codes; the letters are listed in documents.csv.

ColumnTypeMeaningSource
trackingstringThe agency's request number, or our own reference where the agency assigns none (for example WP-2026-09-29-A). Unique in this table.Our request log
agencystringAgency name, as in agencies.csv.Our request log
statuscodeopen or closed, as marked in our request log.Our request log
urlstringThe request's page on the agency's NextRequest portal, where there is one. Some portals show the page only to the requester and the agency.The agency's portal
our_docstringPath of the published copy of the request text, contact details omitted.documents.csv, kind = ours
template_versioncodeWhich request text was sent. v1: the one-part text of the two requests filed August 19, 2026. v2-A and v2-B: the two-part text first used September 29, 2026, documents and system exports. The Royal Oak and Waterford Township texts add one paragraph about the agency's request form and ask for the same records. variant-westland, variant-sumpter: a shorter two-part text written for that agency, with a different list of records. followup-26-956: a one-off text that follows request 26-956. oneoff-26-1080: a one-off text sent to one agency on September 29, 2026. Compare agencies within one version.Assigned by us from the text sent
text_sha256stringSHA-256 of the published PDF of the request text (the file in our_doc). The file opens with our line saying how and when the request was filed. The same version sent to two agencies has two hashes, because each text names its agency.documents.csv, sha256
date_sentdateDay the request was submitted.Our request log
deemed_receiveddateDay the request counts as received under MCL 15.235(1): the next business day after an electronic submission.Our request log
due_datedateFive business days after deemed_received (MCL 15.235(2)).Computed
extension_takenyes/noyes when the agency issued a notice extending its time to respond; no otherwise, including requests still pending.The agency's notice
extended_due_datedateTen business days after due_date, by our count, when an extension was taken (MCL 15.235(2)(d)); empty otherwise. The agency's own notice may state a different date.Computed
response_delivereddateDay the response reached the requester. A letter dated earlier and delivered later is counted on the day it was delivered.The agency's response
business_daysintegerBusiness days from deemed_received (day zero) through response_delivered, computed under the rule in the conventions above. Empty while the request is pending.Computed
determination_codecodeThe agency's own answer, in the terms of MCL 15.235(2). none: no answer yet. granted. granted_in_part: granted in part and denied in part. denied. no_records: denied with a statement that the records do not exist.The agency's response
fee_demanded_usdnumberThe first fee the agency stated, in dollars. 0.00 when the response stated no fee. Empty while pending. Later figures are in the agency's letters, listed in documents.csv.The agency's response
deposit_usdnumberThe first deposit the agency required before producing records, in dollars. 0.00 when none was required. Empty while pending.The agency's response
waiver_codecodeEvery request text asks for a fee waiver or reduction in the public interest. requested: no decision yet. granted: the fee was waived. denied: the agency charged a fee and declined the waiver. not_addressed: the agency charged a fee and its response said nothing about the waiver. na: no fee was charged.The agency's response
fee_final_usdnumberDollars paid for the request. 0.00 when the agency answered and charged no fee, or when the request ended with nothing paid. Empty while the request is pending or the fee is unresolved.Our record of fees paid
disposition_codecodeWhere the request stands. pending: no response yet. fee_pending: the agency responded with a fee or deposit that is unpaid or under appeal, and production waits on it. denied: denied in whole. no_records: the agency stated it has no responsive records. produced: records were produced. produced_full and produced_part replace produced once the agency's findings are published, after the agency has had seven days to review a draft: our check of what was produced against the items requested found every item (full) or only some (part). An agency's statement that a request is granted in full does not by itself make the code produced_full. withdrawn: withdrawn by the requester.Coded by us

right_of_reply.csv

The right-of-reply log: the draft of an agency's findings sent to the agency before they are first published, and the agency's reply.

ColumnTypeMeaningSource
agencystringAgency slug.agencies.csv, slug
roundinteger1: the draft goes to an agency once.Recorded by us
reasonstringWhy it was sent: first publication.Recorded by us
packet_builtdateDay the draft was prepared.Recorded by us
packet_sha256stringSHA-256 of the PDF sent to the agency.Recorded by us
statementsstringTwelve-character hashes, separated by spaces, of each Gap, Question, Analysis and Reported statement about the agency when the draft was built. A statement on the site whose hash is not in this list was added or changed after the agency's review and carries its date on the page.Recorded by us
sent_datedateDay the draft was sent.Recorded by us
wait_daysintegerDays the agency has with the draft before the findings are published: 7.Recorded by us
reply_datedateDay the agency replied; empty if it has not.Recorded by us