Parse and verify, never store.
The PDF417 license barcode parsed and verified locally, with hard policy flags — no_retention, enrich refused — as registry data.
The license barcode, in outline only.
generate
{
"error": {
"code": "ILLEGAL_ARTIFACT",
"message": "generate refuses dl-aamva: generating an AAMVA DL/ID barcode is manufacturing a government-credential artifact — refused at every tier, no override",
"scheme": "dl-aamva",
"hint": "parse-and-verify is supported; rendering this artifact is refused by type at every tier"
}
}
enrich
{
"error": {
"code": "policy_refusal",
"message": "enrich is refused for dl-aamva by registry policy",
"scheme": "dl-aamva",
"hint": "the scheme row carries no_retention / enrich: refused as hard flags"
}
}
The row.
| scheme | dl-aamva |
|---|---|
| grammar | The AAMVA DL/ID Card Design Standard's PDF417 payload: typed data elements (name, DOB, document numbers, jurisdiction fields) behind the ANSI header; jurisdiction versions pinned. |
| check digit | Structural validation of the AAMVA envelope and element types; derived outputs (age_over_21-style) computed locally from parsed fields. |
| canonical form | A typed local parse — never a stored record. |
| symbologies | PDF417 on the card back |
| enrichment | none — statutory. The row carries hard flags: no_retention, enrich: refused. enrich on a DL parse is a typed policy_refusal, exit 1, no override at any tier. |
| join rule | None on purpose. resolve has no network path for any scheme — for this one, that fact is the compliance posture. |
| pinned digest | dl-aamva sha256:8d8bbb7f63d26f11a7c4ab0caf54fa495bbd9b271f58fe276222c194bdf2df80 |
| as data | /schemes/dl-aamva.json |
In practice.
This is the registry row where the license class column does the most work: the Driver's Privacy Protection Act and its state analogues make retention the hazard, so the row's policy flags are law-shaped, not preference-shaped. The one CTA this scheme's post does not have is an onboarding path — deliberately.
On the blog.
-
Driver's licenses: parse, verify, never store
AAMVA PDF417 payloads are the one scheme where the law, not the license file, sets the rule — state statutes criminalize retention beyond age and authenticity checks. The registry row carries a hard no_retention flag, and the enrich verb refuses by design. This post is the refusal, documented for your security review.
Get an API key.
The local verbs run from npx barcoding.dev today with no key. A key opens the network half of the verb set.