Skip to main content

Specification, shared test vectors, and reference implementations for Meridian Enterprise Unique Identifiers (EUIDs).

Project description

meridian-euid

Python CI Tag Spec License: CC BY 4.0

Meridian defines a compact Enterprise Unique Identifier (EUID) format suitable for printed labels and barcodes. The format is designed to be:

  • Opaque — no embedded metadata or semantics
  • Immutable — never reused or reassigned
  • Robust — checksum detects transcription and scanning errors
  • Environment-aware — strict separation between production and sandbox namespaces

Quick Start

Python

cd reference-implementations/python
pip install -e .

# Validate a production EUID
meridian-euid validate TX-1C --env production
# Output: VALID: TX-1C

# Encode an integer as a production EUID
meridian-euid encode 12345 DNA
# Output: DNA-C1SJ

# Parse an EUID into components
meridian-euid parse TX-1C
# Output: {"sandbox": null, "category": "TX", "body": "1", "checksum": "C", "integer": 1}

# Compute check character for a checksum payload
meridian-euid compute-check TX1
# Output: C

TypeScript

cd reference-implementations/typescript
npm install && npm run build

# See reference-implementations/typescript/README.md for API examples

Documentation

Document Description
SPEC.md Normative specification — defines syntax, validation, and checksum algorithm
CHANGELOG.md Version history and release notes
test-vectors/ Machine-readable test cases (README)
Python README Python implementation with CLI
TypeScript README TypeScript/Node.js implementation

Repository Structure

meridian-euid/
├── SPEC.md                      # Normative specification
├── CHANGELOG.md                 # Version history
├── LICENSE-SPEC                 # CC BY 4.0 for specification
├── test-vectors/
│   ├── README.md
│   └── v2.json                  # Shared test vectors
├── reference-implementations/
│   ├── python/                  # Python package with CLI
│   │   ├── meridian_euid/
│   │   ├── tests/
│   │   └── README.md
│   └── typescript/              # TypeScript/Node.js library
│       ├── src/
│       ├── test/
│       └── README.md
└── docs/                        # Additional documentation

EUID Format

Type Format Example
Production <CATEGORY>-<BODY><CHECKSUM> TX-1C, DNA-C1SJ
Sandbox <SANDBOX>:<CATEGORY>-<BODY><CHECKSUM> X:TAP-3VX, H:DNA-E8E
  • SANDBOX: optional single letter — 15 available: H,J,K,M,N,P,Q,R,S,T,V,W,X,Y,Z (A–G reserved)
  • CATEGORY: 2–3 uppercase letters, Crockford alphabet (no I/L/O/U)
  • BODY: Crockford Base32-encoded integer (no leading zeros; MUST NOT start with 0)
  • CHECKSUM: 1 Crockford Base32 character via Luhn-style MOD 32 (SPEC.md §7.5)
  • Uppercase only: lowercase input MUST be rejected (no normalization)

See SPEC.md for complete syntax and validation rules.

License

Contributing

Contributions are welcome. Please:

  1. Open an issue to discuss proposed changes
  2. Follow existing code style and conventions
  3. Ensure all tests pass before submitting a PR
  4. Update documentation as needed

For specification changes, note that any modification to regexes, checksum algorithm, or environment rules requires a major version bump per SPEC.md §14.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

meridian_euid_spec-0.2.4.tar.gz (34.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

meridian_euid_spec-0.2.4-py3-none-any.whl (3.7 kB view details)

Uploaded Python 3

File details

Details for the file meridian_euid_spec-0.2.4.tar.gz.

File metadata

  • Download URL: meridian_euid_spec-0.2.4.tar.gz
  • Upload date:
  • Size: 34.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for meridian_euid_spec-0.2.4.tar.gz
Algorithm Hash digest
SHA256 7417f7f6bd87afc1fc975c769a1ddd111636ad73c268eb348845bb9a3fd1ec23
MD5 a378e28ef1ba55e61a8f084b691e8d31
BLAKE2b-256 26bd9138df7312fec765438784a96290b5c9cd7c57cdb6e09ef2306701cc65a3

See more details on using hashes here.

File details

Details for the file meridian_euid_spec-0.2.4-py3-none-any.whl.

File metadata

File hashes

Hashes for meridian_euid_spec-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5378dead90b7754adca7262457a9ee4f39483892b9a99cec55209cb789cb7a9e
MD5 a7c894bb711224dfa748c5d0b9873f86
BLAKE2b-256 a243df0151a4f2129b807796c56aa9f4b9252d3721143a40bda04dcc84f223e5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page