OneTablet API Documentation

fetchStoreStatuses

POST/management/stores/fetchStoreStatuses

Status for any set of stores — one storefront or the whole estate — in one operation (ONE-2619, v1).

Each status carries three things, distinctly: desired (what OneTablet is configured to do), observed (what the platform reports), and discrepancy (present always; its classification fields populate only when the two disagree).

Served from OneTablet's continuously-refreshed cache — lastPolledAt tells you how fresh observed is; reason about staleness before acting. Never touches platform rate limits.

Pass storeIds for specific stores, filter by locationIds / brandIds / platforms, or filter hasDiscrepancy: true for just the stores needing attention. Omitting a filter means no filter, exactly as on fetchStores.

Paging: sorted by storeId ascending. Loop until nextCursor is absent.

Request

application/json
required
  • storeIdsstring[]

    Narrow to specific storefronts.

  • locationIdsstring[]

    Narrow to storefronts at these kitchens.

  • brandIdsstring[]

    Narrow to storefronts selling these brands.

  • platformsstring[]

    Narrow to these platform slugs.

  • statestring

    Filter on the desired state. closedSpecialHours never matches in v1 — see the note above.

    Possible values: [open, paused, closedSpecialHours]
  • hasDiscrepancyobject

    Filter to stores with (or without) a live discrepancy between desired and observed state.

  • 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.

Responses

200 — OK
  • statusesobject[]

    The page of statuses, sorted by storeId ascending.

    • storeIdstring
    • desiredobject
      • statestring
        Possible values: [open, paused, closedSpecialHours]
      • pauseReasonstring

        Typed pause reason. Pauses recorded outside this API — or whose free-text reason does not match a typed value — read as 'other', with the operator's original wording folded into pauseNote. Absent for a system-initiated pause with no operator-entered reason at all.

        Possible values: [closingEarly, problemInRestaurant, outOfItems, tooBusy, other]
      • pauseNotestring
      • pausedUntilstring<date-time>

        Absent means the pause is indefinite.

      • updatedAtstring<date-time>
    • observedobject
      • statestring
        Possible values: [online, offline, deactivated, unknown]
      • orderableobject

        Can a guest place an order right now. null/absent when the platform does not expose it.

      • platformReasonstring

        The platform's own reason string, where exposed — raw, not the typed classification below.

    • discrepancyobject
      • hasDiscrepancyobject
      • classificationstring

        Treat as an OPEN enum — new classifications, including ones outside this list, arrive additively as OneTablet's own taxonomy grows.

      • autoRemediableobject
      • requiresHumanInterventionobject

        No API on either side can fix this — route to a human.

      • remediationChannelstring
        Possible values: [api, merchantPortal, platformSupport]
    • lastPolledAtstring<date-time>

      When OneTablet last refreshed observed. Reason about staleness against this before acting. Absent on a pauseStores/unpauseStores response, which never re-reads the platform.

  • 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).