E-FACTS — E-receipt management companyE-FACTS — E-receipt management company
Engineering

API & data guidelines

Naming, money, schemas, and client mapping conventions

API & data guidelines

Non-negotiables

RuleDetail
MoneyInteger cents (Int64 / integer) — never floating currency
JSONsnake_case in API responses
AuthBearer JWT for shopper routes; document flows, not secrets
ValidationServer-side Zod (or equivalent) is source of truth

Resource families (shopper-facing)

FamilyTypical concerns
Authregister, login, refresh, Google, logout
Receiptslist, detail, line items, create/update where allowed
WarrantiesCRUD tied to purchases / items
Offerslist + redemption
Preferencesshopper settings
StreamSSE updates when enabled

Exact paths live in the backend repo — prefer OpenAPI / route modules over duplicating every endpoint here.

Client mapping

iOS (and any web clients) should:

  1. Decode snake_case explicitly (CodingKeys / mappers).
  2. Keep display formatting in the UI layer (tabular-nums for money).
  3. Treat API errors as typed (APIError) with user-safe messages.

Privacy-sensitive fields

Field classHandling
Identity bind (UCI / last4)Validate server-side; minimize logging
TokensKeychain / httpOnly cookies — never localStorage for docs JWT (docs uses its own cookie)
ReceiptsLeast privilege; no PAN

Versioning

Prefer /api/v1/... style versioning. Breaking changes require a new version or explicit migration notes in the backend README.

On this page