Everything is snake_case
Every Traddal API is snake_case on the wire, in both directions. Request
bodies are accepted as snake_case and responses come back as snake_case —
including nested objects and arrays:
Do not send camelCase keys (customerId, countryCode). They are ignored,
not coerced.
Free-form maps — a catalogue item’s attributes, a flow config, carrier
credentials — are passed through verbatim: their keys are your data and are
never re-cased.
Item amounts are unit prices
An item’s monetary amount / unit_value is the per-unit price, not the
line total. Line totals are always unit_value × quantity.
Versioning
The Admin API is versioned in the path: /admin/api/v1/…. Breaking changes
ship as a sibling version (v2) — v1 stays stable. Additive changes (new
optional fields, new endpoints) can appear in v1 at any time; build clients
that tolerate unknown fields.
Errors
Errors are JSON with a conventional shape and an appropriate HTTP status:
Validation failures (400) include field-level details from the schema
validator. See Status and error codes.
Timestamps, countries, currencies
- Timestamps are ISO 8601 UTC (
2026-07-19T14:30:00Z); date-only fields are
YYYY-MM-DD.
- Countries are ISO 3166-1 alpha-2 (
US, GB, DE).
- Currencies are ISO 4217 (
USD, GBP, EUR).