Money
Every monetary value is an integer count of minor units of its stated currency.
One order carries one currency, a three-letter uppercase ISO 4217 code matching
^[A-Z]{3}$. Lower case is rejected. A mixed-currency order has no single
amount to check against and is refused.
Identifiers
A malformed identifier answers exactly like an unknown one. Sending
not-a-uuid returns 404 ORDER_NOT_FOUND rather than a validation error, so an
id-guessing caller learns nothing from the difference.Error shape
Every error, on every endpoint, has the same two fields.Rate limits
A refusal is
429 RATE_LIMITED with a Retry-After header in whole seconds,
never below 1. Honour it — retrying sooner only spends the next window.
Limits are enforced as a token bucket, so a short burst above the sustained rate
is admitted. That burst allowance is not contractual and should not be
designed against.
Size limits
Pagination
limit is clamped rather than rejected: a value above the maximum silently
becomes the maximum, and a non-numeric value becomes the default.