2.8.0 · 2026-07-26
Changed
- Real client IP detection:
X-Forwarded-For (or X-Real-IP) is now evaluated. The history source_ip now shows the actual client IP instead of the reverse proxy IP, and rate limiting on public endpoints now applies per real client rather than globally per proxy.
- Prerequisite: the upstream reverse proxy must correctly set
X-Forwarded-For. Without the proxy header, behaviour is unchanged (fallback to the direct connection IP).
2.5.0 · 2026-07-23
Added
POST /v2/me/rotate-key — rotate your own API key (self-service, authenticated with the current key). The new key is returned once; the old one is immediately invalidated.
POST /v2/tenants/{id}/rotate-key — admin emergency function (master key) to regenerate a tenant's API key if they have lost it.
GET /v2/history now supports pagination via ?offset=N (e.g. ?limit=50&offset=50 for the second page).
- Changelog entries can be marked as
[intern]; the internal field in the /v2/changelog response lets clients (e.g. the app) hide purely internal versions.
2.3.1 · 2026-04-26
Changed
POST /v2/keyify now requires an X-API-KEY header (consistent with all other endpoints).
- Swagger documentation for
/v2/keyify updated: @Security ApiKeyAuth, 401 response added.
2.2.0 · 2026-04-26
Added
- UID endpoints
/v2/uid/numeric and /v2/uid/alpha now require an X-API-KEY header.
- Generated UIDs are stored masked in history (only the last 5 characters visible, e.g.
***********g7h8i).
- UIDs count towards the monthly ID quota and are rejected when the trial or limit is exceeded.
POST /v2/schemas: the response now includes preview — a preview of the first ID without consuming the counter.
GET /v2/schemas: each schema now includes preview, last_generated (the most recently generated ID), and last_generated_at (its timestamp).
2.1.0 · 2026-04-25
Added
- Mapping tables: central lookup tables for attribute-based ID generation.
- New placeholder
{MAP:tablename} in schema patterns — value is resolved from the table at runtime.
POST /v2/mappings/{table} — create or update an entry (white → 101).
GET /v2/mappings — list all your mapping tables.
GET /v2/mappings/{table} — retrieve all entries for a table.
DELETE /v2/mappings/{table}/{entry} — delete a single entry.
DELETE /v2/mappings/{table} — delete an entire table.
- Package-dependent limits for table count and entries per table.
GET /v2/me now also shows mapping limits and current table count.
2.0.0 · 2026-04-25
Added
- Package system: four tiers with defined limits (schemas and IDs per month).
- Discovery — 2 schemas, 250 IDs/month (14-day trial period)
- Orbit — 5 schemas, 2,000 IDs/month
- Galaxy — 10 schemas, 5,000 IDs/month
- Universe — 20 schemas, 10,000 IDs/month
- Monthly ID usage is tracked automatically; when a limit is reached, a clear response with an upgrade hint is returned.
GET /v2/me now returns package limits and current usage.
PATCH /v2/tenants/{id} — change a tenant's package, status, or bonus quota (master key only).
Changed
- New Discovery tenants automatically receive a 14-day trial period.
- Existing tenants were migrated to Galaxy.
1.5.0 · 2026-04-24
Added
DELETE /v2/tenants/{id} — full deletion of a tenant including all schemas, IDs, and history data (Ouruka backend only, requires master key).
- Rate limiting for stateless endpoints:
/v2/uid/numeric, /v2/uid/alpha, /v2/keyify, /v2/changelog — max. 60 requests per minute per IP address.
1.4.0 · 2026-04-24
Added
- New schema type
hash for deterministic content fingerprinting.
- Same input → always the same hash value (SHA-256, configurable length: 16, 32, 40, or 64 characters).
- Typical use case: supplier or record deduplication without a dedicated hash service.
- Hash IDs are stored in history like all other IDs — duplicates are immediately visible.
1.3.0 · 2026-04-23
Added
{COUNTER:N:interval} — counter with automatic reset per period. Intervals: daily, monthly, quarterly, yearly. Example: {COUNTER:4:yearly} → restarts at 0001 every year.
DELETE /v2/schemas/{name} now returns a summary: how many history entries and counters were deleted.
Changed
- History stability improved: internal database structure optimised.
- History cleanup: more robust background cleanup logic.
1.2.2 · 2026-04-20
Added
GET /v2/changelog — service version history available as JSON.
Changed
POST /v2/schemas: a schema can no longer be modified after creation. To change it: delete the schema and recreate it.
- Security improvements in the authentication area.
Fixed
DELETE /v2/schemas/{name} now cleans up completely (history entries are also deleted).
1.2.1 · 2026-03-19
Added
uid: allowed lengths extended to 256 and 512 characters.
- Swagger: tag order defined (system → tenants → schemas → generate → uid → keyify → history).
- Swagger: descriptions of all endpoints revised — placeholder explanations, examples, and use cases added.
- Swagger: host and scheme are now set dynamically at runtime via
SWAGGER_HOST (production: https://ouruka.com).
Changed
- Swagger examples consistently aligned with the order scenario (
ORD-202503-RED-XL-00001).
1.2.0 · 2026-03-12
Added
- Versioning via build-time
ldflags (-X main.version=1.2.0).
- Automatic cleanup worker (interval: 12h) for expired data.
GET /health now returns "version".
Changed
- Internal architecture:
Server struct with context-aware background worker.
1.1.0 · 2026-02-25
Added
POST /v2/uid/numeric — cryptographically random numeric ID (lengths: 16, 32, 64, 128).
POST /v2/uid/alpha — cryptographically random alphanumeric ID (lengths: 16, 32, 64, 128).
POST /v2/keyify — convert a UTF-8 string to a system-safe ASCII key (umlaut transliteration).
1.0.0 · 2026-02-25
Added
GET /health — system status with PostgreSQL and Redis check.
POST /v2/tenants — create a tenant (internal endpoint, master key protected).
GET /v2/me — retrieve your own tenant data.
POST /v2/schemas — create or update an ID schema.
GET /v2/schemas — list all schemas for the tenant.
DELETE /v2/schemas/{name} — delete a schema and reset its counter.
POST /v2/generate/{name} — generate an ID from a schema (with VAR1–VAR4 support).
GET /v2/history — history of generated IDs (limit: 1–200).
- Multi-tenancy via
X-API-KEY header.
- Redis counter with AOF persistence.
- PostgreSQL for tenant and schema management as well as history.