AddPaymentCardRequest
Billing address for the card. Server upserts (deduplicating by deterministic hash) and binds the resulting address to the saved card. Callers don't thread address ids through the API.
bincardNumbercardTypecvcexpirationlastFourAddressInput
address1citypostalCodestateaddress2Amounts
adjustmentsAny 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.
feesAdditional 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.
promotionsThe 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.
subTotalThe subtotal amount of amounts being purchased before any fees, taxes, or adjustments
taxesTotal 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.
tipTip amount added to the order. This should be a full pass-through to the merchant for them to distribute appropriately.
tipDescriptionBreakdown of the tip added to the order.
This may specify how the tip total is to be distributed ex:[("Staff", 5), ("Driver", 5)]
The sum of the values should equal the Tip amount.
totalThe 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
DefaultItem
itemIdItem ID — must be one of the modifier group's itemIds
quantityNumber of times this item is pre-selected
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)
DishHighlights
descriptionnameExternalAddress
address1citypostalCodestateaddress2Server-geocoded coordinates. Populated on responses; ignored on requests (the server always geocodes from the address fields to avoid trusting partner-supplied points).
ExternalCatalog
sectionIdsOrdered list of section IDs
Time windows when this catalog is available. Empty or null = the catalog is never
open; supply explicit windows for every day to declare 24/7 availability. Mirrors
the same fail-closed semantic as Store.Availability.
See the CatalogSet Guide for overnight handling.
catalogIdUnique catalog identifier
nameMenu name (e.g., 'Lunch Menu')
ExternalCatalogSet
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
ExternalCustomer
emailfirstNamelastNamephonepartnerUserIdPartner-side stable identifier for this customer. Used as the durable
bridge key to a Gett User via DistributionPartnerUser.
Required on api-key direct-order requests; null on session-derived
customers (the session JWT already pins the user).
ExternalDeliveryInfo
typeType of delivery handoff
Physical address for external/partner-facing APIs. Excludes internal references (AddressId).
instructionsExternalItem
nameItem display name
basePriceRaw price of the item before modifiers, and the ONLY authority for commerce. The running/cart total is ALWAYS BasePrice + Σ(modifier BasePrice); see the CatalogSet Guide #price-calculation. Never compute a total from StartingAt.
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
startingAtHeadline "from $X" DISPLAY price only (e.g., 'Starting at $12.00') — the cheapest orderable configuration. It already folds in the cheapest required modifier of each group, so NEVER add modifiers to it; doing so double-counts. The cart total is computed from raw BasePrice, not from StartingAt. CompareAt (not StartingAt) drives savings/strikethrough.
ExternalModifierGroup
itemIdsAvailable modifier options (references items)
maximumAllowedMaximum selections allowed
minimumAllowedMinimum selections required
nameDisplay name (e.g., 'Choose Size')
Pre-selected modifier options. Total quantity across all defaults must not exceed maximumAllowed.
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.
ExternalOrder
Shopping cart with line items.
fulfillmentTypeFlat fulfillment mode for the partner-facing wire shape. Lives on ExternalOrder
only — the internal Gett.Core.Order.Order carries a discriminated Gett.Core.Order.Fulfillment
variant instead. Projected from Order.Fulfillment.Mode by
Gett.Core.Order.ExternalOrderMapper on the way out; read and used to construct
Order.Fulfillment on the way in.
Pricing breakdown. On validateOrder, the partner supplies Amounts.Tip;
the server computes and returns the rest of the breakdown. On placeOrder,
the provider returns the authoritative post-place breakdown that gets persisted.
Nullable because validate-only flows may omit it.
Customer contact information.
Required for partner api-key flows. Optional when the request is authenticated with a Marketfront session JWT — the server resolves the customer from the session user's profile.
Delivery details. Required when FulfillmentType is DeliveryByMerchant.
Validation or placement errors, if any. Same element shape as Gett.Core.ProblemDetail.Errors so partners get one parser across both inline-on-200 and 4xx error paths.
gettOrderIdUnique order identifier assigned by Gett. Empty in wire requests — set by server on placement.
isValidWhether the order passed validation (no errors).
partnerOrderIdPartner's own order identifier, assigned after placement by the provider.
placedAtWhen the order was placed.
traceIdW3C trace id (32-hex) for this response, populated only when Gett.Core.Order.ExternalOrder.Errors is
non-empty. Lets a tester or support agent jump straight from a failed validation/placement
to the distributed trace and correlated logs in SigNoz — the bridge that was missing when
a generic OTHER error gave no handle back to the server-side exception. Null on success.
ExternalSection
nameSection name (e.g., 'Appetizers')
itemIdsOrdered list of item IDs
sectionIdUnique section identifier
sectionIdsChild section IDs for nested hierarchies (e.g., 'Food' → 'Hot Food' → 'Pizza')
FulfillmentContextDto
addressIdmodeFulfillment method for the order
HoistSessionRequest
googleIdTokenA Google ID token obtained from the gett.co Google OAuth client. The server validates the token signature, expiry, and audience (pinned to gett.co client IDs) before promoting the session.
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
MatchedDish
itemIdUnique item identifier within the store catalog.
nameDish display name.
basePriceBase price of the dish.
descriptionDish description.
Highlighted versions of text fields, with match tokens wrapped in
«…» sentinels.
imageUrlDish image URL.
PaymentInfo
typePayment method type — one of gettPayment, cardOnFile, savedCard.
cardTokenFor cardOnFile: Your processor's card token
paymentIdFor savedCard: id of a Gett-managed payment owned by the session user.
processorTypeFor cardOnFile: stripe, braintree, square, etc.
PlaceOrderRequest
Shopping cart with line items.
fulfillmentTypeFlat fulfillment mode for the partner-facing wire shape. Lives on ExternalOrder
only — the internal Gett.Core.Order.Order carries a discriminated Gett.Core.Order.Fulfillment
variant instead. Projected from Order.Fulfillment.Mode by
Gett.Core.Order.ExternalOrderMapper on the way out; read and used to construct
Order.Fulfillment on the way in.
Payment details — see the Payments Guide.
Pricing breakdown. On validateOrder, the partner supplies Amounts.Tip;
the server computes and returns the rest of the breakdown. On placeOrder,
the provider returns the authoritative post-place breakdown that gets persisted.
Nullable because validate-only flows may omit it.
Customer contact information.
Required for partner api-key flows. Optional when the request is authenticated with a Marketfront session JWT — the server resolves the customer from the session user's profile.
Delivery details. Required when FulfillmentType is DeliveryByMerchant.
Validation or placement errors, if any. Same element shape as Gett.Core.ProblemDetail.Errors so partners get one parser across both inline-on-200 and 4xx error paths.
gettOrderIdUnique order identifier assigned by Gett. Empty in wire requests — set by server on placement.
isValidWhether the order passed validation (no errors).
partnerOrderIdPartner's own order identifier, assigned after placement by the provider.
placedAtWhen the order was placed.
traceIdW3C trace id (32-hex) for this response, populated only when Gett.Core.Order.ExternalOrder.Errors is
non-empty. Lets a tester or support agent jump straight from a failed validation/placement
to the distributed trace and correlated logs in SigNoz — the bridge that was missing when
a generic OTHER error gave no handle back to the server-side exception. Null on success.
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.
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. Paste into SigNoz trace search to find the distributed trace and correlated logs. Populated by the global exception filter.
RemoveCartItemRequest
Shopping cart with line items. Carts are client-managed — there is no server-side cart storage.
lineItemIdID of the line item to remove
SessionAddress
address1citypostalCodestateSessionCreateRequest
emailfirstNamelastNamepartnerUserIdphoneSessionCreateResponse
expiresAtisAnonymousPartner-facing identity flag. true when no
identity tuple was supplied at session-create; false when the
full {partnerUserId, email, firstName, lastName} tuple
resolved a Gett user. Orthogonal to Gett.Service.Marketfront.DTOs.SessionCreateResponse.Level (which
encodes order-readiness progression).
levelOrder-readiness progression: 0 (anonymous),
1 (identified, no delivery info), 2 (identified + address AND phone),
3 (identified + delivery + payment, fully order-ready). Create-time
max is 2 — L3 requires payment tokenization via Evervault post-create.
Identity is binary and orthogonal (Gett.Service.Marketfront.DTOs.SessionCreateResponse.IsAnonymous);
Gett.Service.Marketfront.DTOs.SessionCreateResponse.Level only progresses for identified sessions.
ProfileCompleteness.IsComplete remains the canonical
place-order gate.
partnerUserIdAlways set. Echoes the caller-supplied id for identified sessions, or
a server-minted gen_<guid> for anonymous sessions. For
anonymous sessions the value is ephemeral — the within-session
FulfillmentContext blob uses it as a key but it is not promised across
fresh anonymous sessions.
sessionIdStable per-token identifier — the JWT's jti claim surfaced for
clients that key session-scoped state without parsing the token. Same
value across Gett.Service.Marketfront.DTOs.SessionCreateResponse and
Gett.Service.Marketfront.DTOs.SessionMeResponse for one token. Distinct on every fresh
session-create (anonymous or identified). Used by the SDK Web Component
as the mf:<sessionId>:* localStorage prefix.
tokenSessionMeResponse
expiresAtisAnonymousPartner-facing identity flag. true when the
session has no identity tuple resolved (anonymous browse); false
when the session is identified. Orthogonal to Gett.Service.Marketfront.DTOs.SessionMeResponse.Level.
levelOrder-readiness progression computed from the user's
current DB state: 0 (anonymous), 1 (identified, no delivery info),
2 (identified + address AND phone), 3 (identified + delivery + payment,
fully order-ready). ProfileCompleteness.IsComplete remains
the canonical place-order gate.
levelMissingSubset of ["address", "phone", "payment"] the user has not yet
supplied. Empty when Gett.Service.Marketfront.DTOs.SessionMeResponse.Level is 3 (fully order-ready);
["address", "phone", "payment"] for anonymous sessions.
Drives session-level "tap to add" UX without re-deriving from the
User block.
sessionIdStable per-token identifier — the JWT's jti claim surfaced for
clients that key session-scoped state without parsing the token. Same
value as on Gett.Service.Marketfront.DTOs.SessionCreateResponse for one token. Used by
the SDK Web Component as the
mf:<sessionId>:* localStorage prefix.
Current atomic fulfillment context for the session, or null if the user
has not committed one yet. When set, the address referenced by
AddressId is guaranteed to belong to the authenticated user.
Anonymous sessions always receive null.
Authenticated user block. null for anonymous sessions — the
JWT carries no Id claim, no Gett user resolved. Populated for
identified sessions.
SessionMeUser
emailuserIdfirstNamelastNamelastPaymentIdLast-used saved payment. Drives "default for next order" payment selection on the consumer client.
lastUserAddressIdLast-used address from the user's address book. Drives "default for next order" selection on the consumer client.
phoneSetFulfillmentContextRequest
modeFulfillment method for the order
Store
categoriesTags the client groups and filters by. Mixes cuisine names from the
store's category metadata with synthetic system tags computed at
request time:
Synthetic tags are best-effort on search-mode results — index data
is sufficient for cuisine + Popular but Savings/Exclusive are skipped
when not derivable from the search hit.Closest — in the closest cluster by distance.Popular — high average rating.Savings — currently runs a meaningful discount.Exclusive — catalog set is partner-supplied (no discount).
deliveryAllowedWhether this store supports delivery fulfillment.
nameStore display name
Per-store capability flags. Unlike availability (Gett.Service.Marketfront.DTOs.Store.DeliveryAllowed/ Gett.Service.Marketfront.DTOs.Store.PickupAllowed), options describe how the store can be interacted with. Extension point for future capabilities (min-order, scheduling modes, …).
pickupAllowedWhether this store supports pickup fulfillment.
stemURL-safe slug used to navigate to the store page: /store/{stem}.
storeIdUnique store identifier
Physical address for external/partner-facing APIs. Excludes internal references (AddressId).
Weekly opening-hours pattern. Null when the store does not publish availability windows. The server treats null/empty as "closed" when computing Gett.Service.Marketfront.DTOs.Store.IsAcceptingOrders — partners should rely on that flag rather than deriving open-state from this field.
catalogSetIdID for fetching the store's catalog
descriptionStore description
distanceMilesDistance from search location in miles
Highlighted versions of text fields, with match tokens wrapped in
«…» sentinels. Populated only for search-mode results so the
UI can bold the matched substring.
imageUrlStore hero image
isAcceptingOrdersWhether the store is accepting orders right now. Computed server-side by intersecting the request instant with Gett.Service.Marketfront.DTOs.Store.Availability in the store's Gett.Service.Marketfront.DTOs.Store.TimeZone. False when the store is disabled, has no catalog, has no published windows, or has no zone.
Dishes on this store's menu that matched the query. Populated only when the search query surfaced the store through a dish hit (e.g. "pad thai" landing you on a restaurant whose name has no mention of Thai food).
priceLevelPrice tier (1=cheap … 4=expensive).
ratingAverage rating (1-5)
reviewCountNumber of reviews
savingsActive discount as a percentage (0–100). Null when no discount is running. The "Savings" entry in Gett.Service.Marketfront.DTOs.Store.Categories is the presentation flag; this is the underlying number for display (e.g. "SAVE 11%").
timeZoneIANA timezone of the store's address (e.g. "America/Los_Angeles"). Used by the client to interpret Gett.Service.Marketfront.DTOs.Store.Availability windows against the user's clock.
StoreHighlights
descriptionnameStoreOptions
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)
UpdateProfileRequest
phoneUserAddressResponse
userAddressIdinstructionsUserAddressResponsePagedResult
hasMoreTrue when offset + limit < totalCount.
The page of results.
limitEffective page size after clamping.
offsetEffective offset after clamping.
totalCountTotal number of items matching the query, across all pages.
UserPaymentResponse
cardTypelastFourpaymentIdexpirationDateUserPaymentResponsePagedResult
hasMoreTrue when offset + limit < totalCount.
The page of results.
limitEffective page size after clamping.
offsetEffective offset after clamping.
totalCountTotal number of items matching the query, across all pages.
ValidationError
codeSpecific validation error code identifying the issue.
itemIdAffected item ID (if applicable)
jsonPathJSON path to the offending field (e.g. $.cart.lineItems[0], $.fulfillmentType). More general than Gett.Core.ValidationError.ItemId.
messageUser-friendly error message