The GEMJO Passport Standard
An open format for reading a trader's record. No key, no account, no contract: the pack code is the credential, and every field is written down here.
gemjo-passport/1.0 · gemjo-passport-1
Endpoints
GET /api/public/v1/passport/{code}
Check one pack code. No key, no session — the code is the credential.
GET /api/public/v1/passport/standard
The machine-readable format: version, fields, endpoints.
POST /api/public/v1/passport/export-check
Post a signed export document back to GEMJO to ask whether the seal still holds.
What a check answers
- standard(string)Format name and version of this answer.
- code(string)The pack code that was checked, normalised.
- verdict(string)match | record_changed | seal_mismatch | expired | revoked | unknown.
- trustworthy(boolean)True only when a reader may rely on the sheet as printed.
- business.name(string)The business the pack was made for.
- business.country(string)Two-letter country code of the business.
- band(string)The readiness band claimed on the sheet.
- claims(object)The figures printed on the sheet at the moment it was made.
- fingerprints.chain(string)Audit-history fingerprint at the moment of issue.
- fingerprints.evidence(string)Proof-set fingerprint at the moment of issue.
- addedSince(number)Audit rows written after the pack was made.
- issuedAt(string)ISO timestamp the pack was sealed.
- expiresAt(string)ISO timestamp after which the code stops answering.
- checkedAt(string)ISO timestamp this answer was produced.
What a sealed export contains
- standard(string)Format name and version of the export.
- keyId(string)Which GEMJO signing key sealed this document.
- signature(string)HMAC-SHA256 over the canonical body, hex.
- sha256(string)SHA-256 of the canonical body, hex.
- body.business(object)Name, trade, city, country and currency.
- body.counts(object)How many rows of each kind are inside.
- body.sales(array)Every money row the shop recorded.
- body.evidence(array)Every piece of proof, with its number and fingerprint.
- body.loans(array)Borrowing the shop recorded, and how it was repaid.
- body.takenAt(string)ISO timestamp the book was taken out.
Who reads it as policy
No institution is listed publicly yet.
What we charge, and every change
Every price change GEMJO has ever made, with the reason and the day it started. A rise always needs a second owner and always waits for the first of the month.
No price has changed yet.