Schemas
Address
address1address2cityCity / locality.
Server-geocoded coordinates. Populated on responses; ignored on requests (the server always geocodes from the street fields to avoid trusting a partner-supplied point).
postalCodestateState / region.
AgeRestriction
A category of legal age restriction that applies to ordering an Item
(see AgeRestrictions). Serialized as the UPPER_SNAKE value name
(e.g. ALCOHOL).
Allergen
A major food allergen that an Item is known to contain as an ingredient.
The nine values are the U.S. FDA major food allergens (the eight from the 2004 FALCPA plus
sesame from the 2021 FASTER Act) — the same set CA SB 68 (effective 2026-07-01) requires
in-scope restaurant chains to disclose for every menu item on online ordering platforms and
mobile apps. Serialized as the UPPER_SNAKE value name (e.g. TREE_NUTS).
AmountDetail
amount^-?\d+(\.\d+)?$ · requiredMonetary amount as a decimal string in the order currency's minor-unit scale (e.g. "10.50").
descriptionAmounts
adjustments^-?\d+(\.\d+)?$Any manual adjustments made to the order amount
Breakdown of the adjustments made to the order. The sum of the values should equal the Adjustments amount.
currencyISO 4217 currency code (e.g. USD, EUR) that every amount in this breakdown is
denominated in. Determined by the store; read-only and always present on responses.
fees^-?\d+(\.\d+)?$Additional fees applied to the order (e.g., service fees, booking fees)
Breakdown of the fees applied to the order. The sum of the values should equal the Fees amount.
promotions^-?\d+(\.\d+)?$The total amount of promotions or discounts applied to the order. A discount should be represented as a POSITIVE value.
Breakdown of the promotions or discounts applied. A discount should be represented as a POSITIVE value.
subTotal^-?\d+(\.\d+)?$The subtotal amount of amounts being purchased before any fees, taxes, or adjustments
taxes^-?\d+(\.\d+)?$Total tax amount applied to the order. This includes line item specific taxes.
Breakdown of the taxes applied to the order. The sum of the values should equal the Taxes amount.
tip^-?\d+(\.\d+)?$Tip amount added to the order. This should be a full pass-through to the merchant for them to distribute appropriately.
Breakdown of how the tip is to be distributed (e.g. Staff 5.00, Driver 5.00),
as a full pass-through to the merchant. When non-empty, the sum of the values must equal the
Tip amount. Empty when the tip is not itemized.
total^-?\d+(\.\d+)?$The final total amount of the order. SubTotal + Fees + (-Promotions) + Taxes + Adjustments + Tip = Total
Availability
dayOfWeekDay of week this availability window applies to
endEnd time of the availability window. Use 00:00:00 to represent end-of-day.
startStart time of the availability window
AvailabilityWindow
dayOfWeekendstartCart
catalogSetIdCatalog set identifier (canonical Guid).
Line items in the cart
storeIdStore identifier (canonical Guid).
CartModifierGroup
Selected modifier line items
modifierGroupIdReference to modifier group in CatalogSet
Catalog
sectionIdsOrdered list of section IDs
allowedFulfillmentModesFulfillment methods this menu can be ordered under (pickup and/or delivery). A menu always declares at least one method; a method absent here cannot be used to order from this menu.
Time windows when this catalog is available. Empty or null = never open;
use Open247 to declare 24/7 availability explicitly. This
mirrors the fail-closed semantic of Store.Availability in the
Marketfront API. See the CatalogSet Guide for overnight handling.
catalogIdUnique catalog identifier
nameMenu name (e.g., 'Lunch Menu')
CatalogSet
Menus keyed by catalog ID
Menu items keyed by item ID
Modifier groups keyed by modifier group ID
Menu sections keyed by section ID
catalogSetIdUnique identifier for this catalog version
ClientContext
ipThe end user's originating IP address, IPv4 or IPv6. Must be a publicly routable address — loopback, link-local and private-range addresses are rejected, as is any placeholder value. If your front end sits behind a proxy or CDN, this is the first address in the forwarded-for chain, not the address of your own server.
userAgentThe end user's User-Agent, taken verbatim from the request your front end received.
Do not substitute your own service's user agent.
Customer
emailfirstNamelastNamephonepartnerUserIdYour own stable identifier for this customer, so the customer can be recognized across orders. Supply it on your order requests.
DefaultItem
itemIdItem ID — must be one of the modifier group's itemIds
quantityNumber of times this item is pre-selected
DeliveryFulfillment
deliveryTypeDelivery handoff method (door-to-door, leave at door, etc.).
modeFulfillment mode discriminator.
scheduleTypeWhether the customer wants immediate or scheduled fulfillment.
Delivery destination. On a request, the inline street fields. On a response, the
fully-resolved address (canonical street fields + server-geocoded latLong).
Resolved into AddressId at build time.
instructionsOptional free-text delivery instructions. Maximum 500 characters.
scheduledTimeUTC instant the customer wants the order ready. Required when
ScheduleType is Scheduled;
must be null for Asap.
DiscoverStoresRequest
Location to search near
fulfillmentTypeFilter by fulfillment method (delivery or pickup).
limitMaximum number of results to return
offsetOffset for pagination
queryFree-text search query. Accepts anything from single keywords like "pizza" to natural language requests like "healthy lunch spots with outdoor seating".
DiscoverStoresResponse
hasMoreWhether more results are available
Stores matching the discovery criteria.
totalCountTotal number of matching stores (for pagination)
Fulfillment
Decision Table
| Variant | Matching Criteria |
|---|---|
| type = object · mode="PICKUP" · requires: scheduleType | |
| type = object · mode="DELIVERY_BY_MERCHANT" · requires: scheduleType, deliveryType |
modeFulfillment mode discriminator.
scheduleTypeWhether the customer wants immediate or scheduled fulfillment.
scheduledTimeUTC instant the customer wants the order ready. Required when
ScheduleType is Scheduled;
must be null for Asap.
Item
nameItem display name
ageRestrictionsLegal age restrictions that apply to ordering this item (e.g. ALCOHOL).
null means unknown (no signal); an empty array means known to be unrestricted.
allergensMajor food allergens this item is known to contain as an ingredient (the FDA / CA SB 68
set; see Allergen). null means no allergen data is available — you
must NOT imply the item is allergen-free. An empty array means the restaurant
affirmatively declares no major allergens. These two states are distinct — treat them
differently and do not coerce one to the other.
basePricePrice of the item before modifiers, in the store's currency. A line's unit price is this
base price plus the base price of each selected modifier, clamped up to
StartingAt. Never compute a total as StartingAt + modifiers — that
figure already folds in the cheapest required choice, so adding modifiers double-counts it.
This is normally the advertised price, but it is not for an item using the synthetic-base encoding (gett-2748.21), where it is the advertised price minus the value of the item's pre-selected DefaultItems and may be NEGATIVE. Such a number means nothing on its own — only under the StartingAt floor that clamps it. Display surfaces should therefore read StartingAt, not this field, for any price shown outside a fully built line.
compareAtOriginal/marketplace price for showing savings (e.g., strikethrough pricing). Present when the item is priced below a comparable marketplace listing.
descriptionItem description
imageUrlItem image URL
itemIdUnique item identifier
modifierGroupIdsList of modifier group IDs for this item
startingAtThe cheapest orderable configuration — BasePrice plus the cheapest choice of every required group. Show it on menu tiles as "from $X"; never add modifiers to it (that double-counts the cheapest required choice, which it already folds in). For strikethrough pricing, use CompareAt.
It is also a FLOOR on the line total, not display-only (gett-2748.21).
CartSubTotal computes
max(StartingAt, BasePrice + Σ selected modifiers). For an ordinary item this is a
no-op — nothing can price below the cheapest orderable configuration by definition — but it
is what lets a provider express a merchant rule that gives value back without ever refunding
below the advertised price. Menufy's substitution credit is the case it was built for: a
removed default modifier credits its value against paid extras, and
BasePrice carries the synthetic base (advertised minus the defaults' value,
possibly negative) with this field carrying the advertised price the customer cannot go
under.
Incompatible with a negative-priced modifier on the same item. A deselect credit (Olo
"No Drink" −0.75) legitimately prices a configuration BELOW the base, so an item offering one
must either leave this null or fold the credit into the value — otherwise the floor clamps
the credit away. No provider does both today; the shared conversion suite pins that.
LineItem
itemIdReference to item in CatalogSet
Selected modifier groups for this item
quantityItem quantity
lineItemIdUnique identifier for this line item
Location
latitudeLatitude coordinate
longitudeLongitude coordinate
ModifierGroup
itemIdsAvailable modifier options (references items)
maximumAllowedMaximum selections allowed
minimumAllowedMinimum selections required
nameDisplay name (e.g., 'Choose Size')
Pre-selected modifier options — the configuration the customer gets if they change nothing. Total quantity across all defaults must not exceed maximumAllowed, and every item must appear in ItemIds.
A default is priced like any other selection: it contributes its item's BasePrice to the line, and cart math has no "free because it is default" rule. The cart that is sent is the order, so a default omitted from it is one the kitchen will not make — track defaults as real, removable selections rather than as decoration on the option list. Where a merchant credits a removed default against paid extras, that is expressed entirely through the pair on the parent item — a synthetic BasePrice (advertised minus the whole default pool) under an StartingAt floor — and needs no special case here or in cart math. Keeping every default then reproduces the advertised price exactly; removing one frees its value to offset a paid extra; removing more than is spent hits the floor and refunds nothing.
enableDuplicateItemsWhether same modifier can be selected multiple times (e.g., 'Extra Pepperoni' x2). Required for scenarios like dozen bagels where fewer unique items than minimumAllowed exist.
modifierGroupIdUnique modifier group identifier
Quantity-based pricing tiers. When present, overrides item basePrice for selections in this group. See the CatalogSet Guide for calculation details.
Order
OrderCore
Shopping cart with line items.
The end user's own IP and user agent. Required on every order request — Gett cannot observe them, because your call reaches us server-to-server.
How and when the order should be fulfilled — the mode (delivery or pickup), schedule, and (for delivery) the destination Address and handoff details. Supply it on the request; on the response it is returned fully resolved.
Pricing breakdown. On validateOrder you supply tip and the response returns
the rest of the breakdown; on placeOrder the response returns the final, authoritative
amounts. Optional on requests that only need validation.
Customer contact information for the order. Supply it on your order requests; it is echoed back, fully resolved, on the response.
OrderError
codeError reason code (wire: code; x-extensible-enum).
messageUser-facing error message (wire: message). Always a
curated, canonical string — never raw vendor text.
pointerRFC 6901 JSON Pointer to the wire element that caused the error (e.g. /cart/lineItems/0).
OrderErrorReasons
Reason codes for order errors. Canonical order error reason codes; treat unrecognized values as OTHER (x-extensible-enum).
OrderPlaceRequest
Shopping cart with line items.
The end user's own IP and user agent. Required on every order request — Gett cannot observe them, because your call reaches us server-to-server.
How and when the order should be fulfilled — the mode (delivery or pickup), schedule, and (for delivery) the destination Address and handoff details. Supply it on the request; on the response it is returned fully resolved.
Payment details — see the Payments Guide.
Pricing breakdown. On validateOrder you supply tip and the response returns
the rest of the breakdown; on placeOrder the response returns the final, authoritative
amounts. Optional on requests that only need validation.
Customer contact information for the order. Supply it on your order requests; it is echoed back, fully resolved, on the response.
OrderValidateRequest
Shopping cart with line items.
The end user's own IP and user agent. Required on every order request — Gett cannot observe them, because your call reaches us server-to-server.
How and when the order should be fulfilled — the mode (delivery or pickup), schedule, and (for delivery) the destination Address and handoff details. Supply it on the request; on the response it is returned fully resolved.
Pricing breakdown. On validateOrder you supply tip and the response returns
the rest of the breakdown; on placeOrder the response returns the final, authoritative
amounts. Optional on requests that only need validation.
Customer contact information for the order. Supply it on your order requests; it is echoed back, fully resolved, on the response.
PaymentInfo
typePayment method type — one of GETT_PAYMENT, CARD_ON_FILE, SAVED_CARD.
paymentTokenFor CARD_ON_FILE: a single-use card token (nonce) from your own payment solution. The secure interchange that lets Gett resolve it is configured with your Gett representative during onboarding — see the Payments guide.
PickupFulfillment
modeFulfillment mode discriminator.
scheduleTypeWhether the customer wants immediate or scheduled fulfillment.
scheduledTimeUTC instant the customer wants the order ready. Required when
ScheduleType is Scheduled;
must be null for Asap.
ProblemDetail
statusThe HTTP status code.
titleA short, human-readable summary of the problem type.
typeA URI reference that identifies the problem type.
detailA human-readable explanation specific to this occurrence.
errorCategoryMachine-readable error category (e.g. validation, rate_limit, payment, availability, server_error).
errorCodeMachine-readable error code for domain-specific errors.
Validation error details, when applicable. These use the same element shape
(OrderError) as the inline order.errors[] on a 200 validate response
with isValid:false, so you can parse one error shape across both paths.
instanceA URI reference that identifies the specific occurrence.
requestIdUnique identifier for this request, useful for support.
retryAfterSeconds to wait before retrying. Present when retryable is true and a wait period is known.
retryableWhether the request can be retried with a reasonable expectation of success.
timestampWhen the error occurred.
traceIdW3C trace id (32-hex) for this request. Include it when contacting support so we can locate the request.
RemoveCartItemRequest
Shopping cart with line items. Carts are client-managed — there is no server-side cart storage.
lineItemIdID of the line item to remove
ScheduleType
Whether the customer wants the order fulfilled as soon as possible or at a scheduled time.
Section
itemIdsOrdered list of item IDs
nameSection name (e.g., 'Appetizers')
sectionIdUnique section identifier
sectionIdsChild section IDs for nested hierarchies (e.g., 'Food' → 'Hot Food' → 'Pizza')
Store
categoriesLabels describing this store — a mix of cuisine types (e.g. Thai, Pizza)
and highlight tags such as Popular, Savings, Exclusive, and
Closest. Use them to group or filter stores in your UI.
fulfillmentModesFulfillment modes this store offers, as the same FulfillmentType values the
discovery filter and the order graph use (PICKUP, DELIVERY_BY_MERCHANT). Empty
only for a store that offers neither. Filter or badge stores off this set rather than
separate per-mode booleans.
nameStore display name
Per-store capability flags — e.g. whether the store accepts tips. Distinct from FulfillmentModes, which says which fulfillment modes are offered at all.
storeIdUnique store identifier
A postal address used across the order API.
On a request, supply the street fields; LatLong is ignored — the server geocodes coordinates from the street fields. On a response, the street fields are echoed alongside the server-geocoded LatLong.
Weekly opening-hours pattern, for display. Empty when the store does not publish availability windows. To decide whether the store can take an order right now, use IsAcceptingOrders rather than deriving open-state from these windows.
catalogSetIdID for fetching the store's catalog
descriptionStore description
distanceMilesDistance from search location in miles
imageUrlStore hero image
isAcceptingOrdersWhether the store is accepting orders right now. Prefer this flag over deriving open-state yourself from Availability — it already accounts for the store's hours, timezone, and catalog status.
priceLevelPrice tier (1=cheap … 4=expensive).
ratingAverage rating (1-5)
reviewCountNumber of reviews
savingsActive discount as a percentage (0–100), for display (e.g. "SAVE 11%"). Null when no discount is running.
timeZoneIANA timezone of the store's address (e.g. "America/Los_Angeles"). Used by the client to interpret Availability windows against the user's clock.
StoreOptions
acceptsDeliveryTipsWhether this store accepts tips on delivery orders.
acceptsPickupTipsWhether this store accepts tips on pickup orders.
Tier
offset0-based selection index where this tier begins. For the k-th selection, use the tier with the greatest offset that is <= k.
pricePrice charged per selection at this tier
UpdateCartItemRequest
Shopping cart with line items. Carts are client-managed — there is no server-side cart storage.
lineItemIdID of the line item to update
quantityNew quantity (0 removes the item)