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

# 0135 — Public id format

> Accepted · 2026-10-20

> [!NOTE]
>
> Amends and accepts [0082](/adr/0082-public-ids-and-api-areas): the id format is fixed here; the
> four API areas of 0082 stand.

## Context

[0082](/adr/0082-public-ids-and-api-areas) set public ids as a prefix plus base32 of one UUIDv7, and left the exact format
open. The owner's data answer DA9 (mem L535) fixes the length and the prefix rules on 2026-10-20. The HTTP rule examples
still show a different format (gap B23).

## Decision

1. A public id is `prefix_` plus the lowercase Crockford base32 encoding of the UUIDv7. It is 26 characters after the
   prefix.
2. Prefixes are 2 to 6 letters. Each prefix is registered in the gen manifest, and gen fails on a duplicate prefix.
3. The four API areas of 0082 stand.
4. Database ids are never exposed. Public ids are the only external form.

## Consequences

* Examples in the HTTP rules and the style guide must use the 26-character form. Until they do, they describe a format
  that this ADR no longer accepts (gap B23; `docs-governance`).
* The registry of prefixes is a shared file in gen, so a new prefix is a reviewed change.

## Enforcement

planned — gen checks prefix length and uniqueness against the manifest. The rule examples are fixed by the final docs pass.

## Alternatives

* Raw UUIDs externally: rejected by 0082 (database ids are never exposed).

## Supersedes and sources

Supersedes: none.

Amends and accepts: [0082](/adr/0082-public-ids-and-api-areas). Sources: owner data answer DA9 (`stackra-decisions-2026-10-19.md`
L535, 2026-10-20); gap B23.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.