OneTablet API Documentation

fetchStores

POST/management/stores/fetchStores

The identity map: your storefronts, with the complete join between OneTablet's identifiers and the delivery platform's (ONE-2618).

Each store carries Store.id and Store.code (ours), Store.platformStoreId (the platform's own), the owning Store.brand and Store.location each with their own ids and codes, and Store.wentLiveAt.

This is deliberately the first operation to integrate: one call gives the complete crosswalk, and everything else in the API is addressed by identifiers it returns. Ids are stable forever — build your mapping on them once, at onboarding.

Narrow the result with storeIds, locationIds, brandIds and platforms (ONE-2647); omitting them all returns your whole estate, which you page through as before.

Scope: storefronts at a kitchen you own, OR selling a brand you own. Retired storefronts and OneTablet's internal in-app-test pseudo-platform are excluded, so every row is a real storefront on a real platform.

Store.platformStoreId and Store.storeUrl are STORED values refreshed by an hourly sweep — this operation makes no live call out to a delivery platform, so it is cheap to poll but can lag a change made directly on one by up to an hour.

Paging: sorted by id ascending. Loop until nextCursor is absent. An estate of several thousand storefronts is normal; page, do not ask for everything at once.

Request

application/json
required
  • pageobject

    Cursor pagination.

    • limitnumber

      Page size, 1-100. Defaults to 50 when omitted.

    • cursorstring

      Opaque cursor from the previous response. Omit for the first page.

  • storeIdsstring[]

    Narrow to these Store.id values — the ids fetchStores itself returns.

  • locationIdsstring[]

    Narrow to storefronts at these kitchens (Location.id, as returned by fetchLocations).

  • brandIdsstring[]

    Narrow to storefronts selling these brands (Brand.id, as returned by fetchBrands).

  • platformsstring[]

    Narrow to these platform slugs, e.g. ["doordash", "ubereats"].

    Matched case- and punctuation-insensitively against the platform name, so "doordash", "DoorDash" and "Door Dash" all select the same platform. Same OPEN enum as Store.platform: a slug we do not recognise simply matches nothing rather than erroring.

Responses

200 — OK
  • storesobject[]

    The page of storefronts, sorted by id ascending.

    • idstring

      OneTablet's identifier for the storefront, and what pauseStores / unpauseStores accept.

    • codestring

      Stable storefront identifier, human-readable where configured; also what the platform holds as the merchant-supplied store id, and the value order payloads carry as store.externalId.

    • platformstring

      Delivery platform slug, e.g. "doordash", "ubereats", "grubhub".

      Treat as an OPEN enum: responses may carry slugs beyond the documented three (smaller platforms connected for some organizations), and new platforms are added without a version bump. Key on platformId if you need something closed and stable.

    • platformStoreIdstring

      The platform's own identifier for this storefront — the DoorDash store id, the UberEats store uuid, and so on. The field that makes the identity map useful.

      Absent where the platform's id IS the merchant-supplied id (Grubhub — use code there), or where we have not learned it yet. STORED and refreshed by an hourly sweep, not fetched live, so it can lag a change made directly on the platform by up to an hour.

    • brandobject

      The brand this storefront sells.

      • idstring

        Brand.id.

      • codestring

        Brand.code.

      • namestring

        Brand.name.

      • displayNamestring

        Brand.displayName.

    • locationobject

      The kitchen this storefront cooks in.

      • idstring

        Location.id.

      • codestring

        Location.code.

      • namestring

        Location.name.

      • displayNamestring

        Location.displayName.

      • timezonestring

        Location.timezone.

    • modestring

      full — OneTablet manages orders and menus for this storefront. reportingOnly — data ingestion only; we never see its orders.

      Worth reading before acting on a row: a reportingOnly storefront will never produce orders through this API, however healthy it otherwise looks. New values may be added.

    • wentLiveAtstring<date-time>

      When the storefront went live on the platform, as an ISO-8601 UTC instant. Absent until go-live.

    • platformIdstring

      OneTablet's id for the delivery platform (ONE-2618, additive). Unlike platform this is a fixed identifier that never changes and never gains new spellings — the right thing to key a mapping on.

    • platformStoreNamestring

      The storefront's name as it appears on the platform, where we hold it (additive).

    • namestring

      The storefront's name inside OneTablet (additive).

    • storeUrlstring

      Public URL of the storefront on the platform, where we hold one (ONE-2618, additive). Stored and refreshed by the same hourly sweep as platformStoreId, with the same staleness caveat.

  • nextCursorstring

    Opaque cursor for the next page. Absent means the last page.

About Stores

The places you operate and the brands you operate there.

OneTablet models a restaurant business in three layers, and every other section of this API assumes them. A brand is a menu concept — what a customer sees on a delivery app. A location is a physical address with a kitchen in it. A store is one storefront: a single brand, at a single location, on a single platform — so a location running two brands on three platforms has six stores, each with its own menu, hours and pause state.

The directory reads join on IDS, never on display names: every store carries its location.id and brand.id, and a location carries the id of each brand it runs.

Start here — a location carries the timezone that every schedule, report window and business day elsewhere on this API is interpreted in.

All three reads are org-scoped to the organization your api key resolves to, and all three are reads: nothing here mutates, and nothing here calls out to a delivery platform live (ONE-2618).