Skip to main content
Every resource in the BlooBank API carries a consistent set of identifier and metadata fields. Learning this shape once gives you a mental model that applies to every endpoint — wallets, payment orders, and any resource added in the future.

The standard envelope

Every resource includes these fields:

Two flavors of identifier

Most BlooBank resources expose two identifiers, and choosing the right one for your use case matters.

id

Server-assigned. Opaque (wal_2NhVqRtYbHmRdZ4vG6qAeL). Immutable. Use as your database key.

name

Caller-supplied during creation. Human-readable (production-main). Use in URLs and human-facing flows.
The API accepts either id or name in path parameters for most endpoints — e.g., GET /wallets/{wallet} works with both wal_… and production-main. Internally, the API resolves the name to the id before processing.

Naming rules

name follows RFC 1035 DNS label rules:

Versioning fields

Different resources expose different *Version fields — walVersion for wallets, ordVersion for payment orders. The pattern is the same:
  • Starts at 1 on creation.
  • Increments by 1 on every mutation of the resource’s tracked content.
  • Useful when reasoning about historical snapshots from event streams.
*Version is for tracking content changes, not concurrency control. For optimistic concurrency, use etag with the If-Match header (when the feature lands).

The selfName convention

selfName is the canonical relative name of the resource — the path you would use to reference it inside the API. Examples: Compare with the full URL:
selfName is what you would log or persist when you need a portable, base-URL-agnostic reference.

Timestamps

All timestamps are ISO 8601 in UTC with millisecond precision:
The trailing Z is required. The API never returns timestamps in local time. See Date & time for client-side parsing notes.

etag — reserved

Every resource carries an etag — a hex-encoded SHA-256 fingerprint of the resource content. Today it is informational only. In a future release, it will support optimistic concurrency control via the If-Match request header:
When this lands, requests with a stale etag will fail fast with a clear error rather than overwriting a concurrent modification.

Next

Amounts & currency

How money is represented across the API.

Date & time

UTC, ISO 8601, and request-signing clock skew.