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
- 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.
closedSpecialHoursnever 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.
- limitnumber
{
"storeIds": [
"<storeIds>"
],
"locationIds": [
"<locationIds>"
],
"brandIds": [
"<brandIds>"
],
"platforms": [
"<platforms>"
],
"state": "open",
"hasDiscrepancy": {},
"page": {
"limit": 50,
"cursor": "<cursor>"
}
}Responses
- statusesobject[]
The page of statuses, sorted by
storeIdascending.- storeIdstring
- desiredobject
- statestringPossible 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 intopauseNote. 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>
- statestring
- observedobject
- statestringPossible 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
classificationbelow.
- statestring
- 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.
- remediationChannelstringPossible values: [api, merchantPortal, platformSupport]
- lastPolledAtstring<date-time>
When OneTablet last refreshed
observed. Reason about staleness against this before acting. Absent on apauseStores/unpauseStoresresponse, 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).