OneTablet API Documentation

API conventions

Five rules hold everywhere on this API. Learn them once and every operation reads the same.

One path per operation, everything in the body

Every operation is a POST to a fixed, verb-first path with a typed JSON request object. No path parameters, no query strings. A request is therefore fully described by its URL and its body, which is what makes it trivial to log, replay and diff.

No version segment

The base path carries no /v1. Evolution here is additive — new optional fields and new operations, never removals or narrowing — so there is no cutover a version segment would ever mark. Ignore fields you do not recognise and your client survives every release.

Money is an integer in the currency's minor unit

1250 is $12.50. A decimal amount cannot survive a round trip through every language's default number type, so the API never emits one. All Phase 0 order amounts are USD; a currency field will be added additively before non-USD markets onboard.

Times are ISO-8601 in UTC

A store's local time is a rendering decision, and the API does not make it for you — resolve it from the location's IANA timezone. Fields carrying an instant are typed string<date-time> in the reference.

Unknown fields are your problem to ignore, not ours to withhold

We add optional fields to existing request and response objects at any time. A new field always has a defined meaning when absent, so an older client is never wrong — only less informed.