Storefront GraphQL API
Read the catalogue of a Pobo eshop and run its cart and checkout from your own storefront.
- Endpoint
POST /api/v1/storefront/{eshop}/graphql on the API host — POST only, one operation per request (no batching).
- Authentication
Authorization: Bearer <storefront token>. The merchant issues the token in Pobo; keep it on your server, never in the browser.
- Visitor IP
- Send the visitor's address in
Pobo-Client-Ip — checkout, order-code lookup and the assistant limit per visitor by it.
- Schema
- schema.graphql — for code generation (GraphQL Codegen and the like).
Limits
- Page size
first at most 50; numbered page 1 to 1 000
- Depth
- 10 levels
- Complexity
- 1 000 points per query — the cost is returned in
extensions.cost
- Budget
- 30 000 points per minute per token; over it the API answers 429 with
BUDGET_EXCEEDED
Example
curl https://api.pobo.space/api/v1/storefront/{eshop}/graphql \
--header 'Authorization: Bearer YOUR_STOREFRONT_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"query": "query { products(first: 10, lang: \"cs\") { edges { node { id name } } } }"}'
Errors
Errors come back in errors[].extensions.code: NOT_FOUND, BAD_USER_INPUT, OUT_OF_STOCK, PRICE_CHANGED, SLOT_TAKEN, QUERY_TOO_COMPLEX, BUDGET_EXCEEDED, RATE_LIMITED, INTERNAL.
Queries
The eshop; currency follows the price list of lang (the main language when left out).
| Argument | Type | Description |
| lang |
String |
|
A visible product of the eshop; NOT_FOUND otherwise.
| Argument | Type | Description |
| id |
ID! |
|
| lang |
String |
|
Visible products, at most 50 per page.
| Argument | Type | Description |
| first |
Int default 20 |
|
| after |
String |
|
| page |
Int |
Numbered page, 1 to 1000; not together with after. |
| category |
ID |
|
| includeSubcategory |
Boolean default true |
|
| inStock |
Boolean |
|
| branch |
ID |
Only products with a variant in stock in the warehouse of this branch; an unknown branch or one without a warehouse matches nothing. |
| priceMin |
String |
Decimal string, compared with the cheapest priced variant in the price list of lang. |
| priceMax |
String |
|
| sort |
ProductSort default POSITION |
|
| search |
String |
Product name only, 2 to 100 characters. |
| parameter |
[ParameterFilter!] |
Values of one parameter match any (OR), parameters all (AND); an unknown slug matches nothing. At most 10 parameters of 20 values. |
| lang |
String |
|
Parameter facets and the price range of the products the same arguments list. A value's count leaves out its own parameter's filter; at most 10 parameters, a parameter with one value or on one product left out. Flat cost.
| Argument | Type | Description |
| category |
ID |
|
| includeSubcategory |
Boolean default true |
|
| inStock |
Boolean |
|
| priceMin |
String |
Ignored by the price range. |
| priceMax |
String |
Ignored by the price range. |
| search |
String |
|
| parameter |
[ParameterFilter!] |
|
| lang |
String |
|
A category whose whole branch is visible; NOT_FOUND otherwise.
| Argument | Type | Description |
| id |
ID! |
|
| lang |
String |
|
Root categories; children deeper than depth come back empty.
| Argument | Type | Description |
| depth |
Int default 3 |
|
| lang |
String |
|
The entity behind a storefront address (/{lang}/{prefix}/{slug}); null when this eshop does not show it.
| Argument | Type | Description |
| path |
String! |
|
A visible article of the eshop; NOT_FOUND otherwise.
| Argument | Type | Description |
| id |
ID! |
|
| lang |
String |
|
Visible articles, newest first, at most 50 per page.
| Argument | Type | Description |
| first |
Int default 20 |
|
| after |
String |
|
| lang |
String |
|
Addresses of every visible product, category and article in one language, for a sitemap. Flat cost per page. Unlike the other fields, a language the eshop does not serve is refused with BAD_USER_INPUT instead of falling back to the main one.
| Argument | Type | Description |
| first |
Int default 1000 |
|
| after |
String |
|
| lang |
String |
|
Search-as-you-type: up to 5 products, 3 categories and 3 articles whose name contains the query (2 to 100 characters). Flat cost.
| Argument | Type | Description |
| query |
String! |
|
| lang |
String |
|
An open or ordered cart of this eshop; NOT_FOUND when unknown or expired.
| Argument | Type | Description |
| id |
ID! |
|
Shipping methods the eshop offers, in their order. Flat cost.
| Argument | Type | Description |
| lang |
String |
|
Payment methods the eshop offers, in their order. Flat cost.
| Argument | Type | Description |
| lang |
String |
|
Pickup points the shipping method offers (its kind, active, in the countries Pobo serves): by distance around near, by a word of the name, city, street or zip in query, or both. At most 20. Flat cost.
| Argument | Type | Description |
| shipping |
ID! |
|
| query |
String |
|
| near |
GeoInput |
|
| first |
Int default 20 |
|
An active branch of the eshop; NOT_FOUND otherwise.
| Argument | Type | Description |
| id |
ID! |
|
| lang |
String |
|
Active branches of the eshop in their order. Flat cost.
| Argument | Type | Description |
| lang |
String |
|
Branches a reservation of these pieces (line, or the lines of listId) can go to: active, taking reservations, with every piece free in their warehouse. Empty while the eshop takes no reservations. Flat cost.
reservationSlot: [String!]!
Free start times of a branch from one day to another (YYYY-MM-DD, at most 31 days), as ISO 8601 in Europe/Prague; only days the eshop takes reservations for. Flat cost.
| Argument | Type | Description |
| branch |
ID! |
|
| from |
String! |
|
| to |
String! |
|
An open reservation list of this eshop; NOT_FOUND when unknown, expired or reserved already — start a new one.
| Argument | Type | Description |
| id |
ID! |
|
The visitor's product comparison; NOT_FOUND when unknown or expired — start a new one.
| Argument | Type | Description |
| id |
ID! |
|
The products of a shared comparison link (at most 4), in its order; nothing is stored. Hidden and unknown products are left out.
| Argument | Type | Description |
| id |
[ID!]! |
|
| lang |
String |
|
A reservation by the random token reservationCreate returned; NOT_FOUND otherwise. Flat cost.
| Argument | Type | Description |
| token |
String! |
|
An order of this eshop by the random token checkoutComplete returned — for the thank-you page; NOT_FOUND otherwise.
| Argument | Type | Description |
| token |
String! |
|
The order behind a short link (/o/{code}) — its token and language, for the redirect to the order page; NOT_FOUND otherwise. Limited per visitor IP (Pobo-Client-Ip), else per token. Flat cost.
| Argument | Type | Description |
| code |
String! |
|
Mutations
cartCreate: Cart!
A new empty cart; keep its id in an httpOnly cookie on the storefront server.
| Argument | Type | Description |
| lang |
String |
|
cartLineAdd: Cart!
Adds to the quantity already in the cart; 1 to 999 pieces, at most 50 lines.
| Argument | Type | Description |
| cartId |
ID! |
|
| variantId |
ID! |
|
| quantity |
Int! |
|
cartLineUpdate: Cart!
Sets the quantity; 0 removes the line.
| Argument | Type | Description |
| cartId |
ID! |
|
| variantId |
ID! |
|
| quantity |
Int! |
|
cartLineRemove: Cart!
| Argument | Type | Description |
| cartId |
ID! |
|
| variantId |
ID! |
|
cartSetShipping: Cart!
A method with a pickupKind needs pickupPointId, a point of that kind from Query.pickupPoint; the point then is the delivery address.
| Argument | Type | Description |
| cartId |
ID! |
|
| shippingId |
ID! |
|
| pickupPointId |
ID |
|
cartSetPayment: Cart!
| Argument | Type | Description |
| cartId |
ID! |
|
| paymentId |
ID! |
|
cartSetCoupon: Cart!
Puts a coupon on the cart (code in any case). An unknown code fails with BAD_USER_INPUT, extensions.field = coupon and extensions.reason = unknown; 10 unknown codes a minute per visitor IP (header Pobo-Client-Ip), 60 per token without it, then RATE_LIMITED. A known coupon that does not apply stays on the cart with Cart.coupon.problem.
| Argument | Type | Description |
| cartId |
ID! |
|
| code |
String! |
|
cartRemoveCoupon: Cart!
| Argument | Type | Description |
| cartId |
ID! |
|
checkoutComplete: Order!
Places the order. expectedTotal = Cart.total.amountWithVat the customer saw; a different total fails with PRICE_CHANGED (extensions.total = the new one). The same idempotencyKey (8 to 64 letters, digits or dashes) returns the same order. At most 5 orders in 10 minutes per visitor IP (header Pobo-Client-Ip), RATE_LIMITED with HTTP 429 above it.
| Argument | Type | Description |
| cartId |
ID! |
|
| termsAccepted |
Boolean! |
|
| expectedTotal |
String! |
|
| idempotencyKey |
String! |
|
A new empty product comparison; keep its id in an httpOnly cookie on the storefront server, like the cart.
| Argument | Type | Description |
| lang |
String |
|
Adds a product (at most 4 in a comparison; a product already there changes nothing). BAD_USER_INPUT when the product is not offered or the comparison is full.
| Argument | Type | Description |
| compareId |
ID! |
|
| productId |
ID! |
|
| Argument | Type | Description |
| compareId |
ID! |
|
| productId |
ID! |
|
A new empty reservation list; keep its id in an httpOnly cookie on the storefront server, like the cart. BAD_USER_INPUT while the eshop takes no reservations.
| Argument | Type | Description |
| lang |
String |
|
Adds to the quantity already on the list; 1 to 99 pieces, at most 20 products. Holds nothing in the warehouse yet.
| Argument | Type | Description |
| listId |
ID! |
|
| variantId |
ID! |
|
| quantity |
Int! |
|
Sets the quantity; 0 removes the line.
| Argument | Type | Description |
| listId |
ID! |
|
| variantId |
ID! |
|
| quantity |
Int! |
|
| Argument | Type | Description |
| listId |
ID! |
|
| variantId |
ID! |
|
Reserves the pieces (line, or the lines of listId — the list then closes) at a branch for a free slot (Query.reservationSlot). The pieces are held in the branch's warehouse until the branch converts, cancels or closes the reservation. SLOT_TAKEN when the slot filled up meanwhile, OUT_OF_STOCK (extensions.variantId) when the branch lacks a piece. Limited like checkoutComplete (header Pobo-Client-Ip).
The customer cancels a pending reservation before it starts, with the token from the e-mail.
| Argument | Type | Description |
| token |
String! |
|
orderPaymentStart: Order!
A new payment of an unpaid online order (pay again on the thank-you page); Order.paymentUrl is where to send the customer. Limited like checkoutComplete.
| Argument | Type | Description |
| token |
String! |
|
Objects
Addressobject
| Field | Type | Description |
| name |
String! |
|
| company |
String |
|
| companyId |
String |
|
| vatId |
String |
|
| street |
String! |
|
| city |
String! |
|
| zip |
String! |
|
| country |
Country! |
|
AlternatePathobject
| Field | Type | Description |
| lang |
String! |
|
| path |
String! |
|
Anchorobject
| Field | Type | Description |
| id |
String! |
|
| label |
String! |
|
Articleobject
| Field | Type | Description |
| id |
ID! |
|
| name |
String! |
|
| slug |
String |
|
| path |
String |
|
| alternate |
[AlternatePath!]! |
Addresses of this entity in the eshop's languages that have a slug, main language first. |
| seo |
Seo! |
|
| publishedAt |
String |
|
| content |
Content |
|
ArticleEdgeobject
| Field | Type | Description |
| node |
Article! |
|
| cursor |
String! |
|
Assistantobject
| Field | Type | Description |
| eshopId |
Int! |
|
| holdoutPercent |
Int! |
Percent of visitors kept without the bubble as the control group: hidden when crc32("{eshopId}:{visitor}") % 100 is below it. |
| position |
String! |
right or left |
| colorPrimary |
String |
|
| privacyUrl |
String |
|
| allowDismiss |
Boolean! |
|
| allowHandoff |
Boolean! |
|
| allowAddToCart |
Boolean! |
|
| supportName |
String |
|
| supportPhotoUrl |
String |
|
| text |
String! |
Bubble texts by language, a JSON object: language => key => text (status phases and suggestions are nested). |
AvailabilityInfoobject
| Field | Type | Description |
| state |
Availability! |
|
| label |
String! |
|
| quantity |
Int |
Whole pieces that can be ordered now (stock minus what orders hold), at most 100 — 100 means 100 or more. Only on a variant in stock; null otherwise and on the product. |
BankTransferobject
| Field | Type | Description |
| account |
String |
|
| iban |
String |
|
| variableSymbol |
String! |
|
| amount |
String! |
|
| currency |
String! |
|
| qrPayload |
String |
QR Platba (SPAYD) string; null when the eshop has no IBAN. |
Branchobject
A branch customers come to: its page, address, opening hours and what it offers. Plan: doc/claude/plan-branch.md.
| Field | Type | Description |
| id |
ID! |
|
| name |
String! |
|
| slug |
String |
|
| path |
String |
|
| alternate |
[AlternatePath!]! |
Addresses of this branch in the eshop's languages that have a slug, main language first. |
| seo |
Seo! |
|
| description |
String |
HTML cleaned when it was saved: paragraphs, lists, h2/h3, emphasis, quotes and http(s)/mailto/tel links only. |
| address |
BranchAddress! |
|
| phone |
String |
|
| email |
String |
|
| location |
GeoPoint |
|
| openingHour |
[BranchOpeningDay!]! |
Seven days, Monday (1) to Sunday (7); an empty interval list = closed that day. |
| closedDay |
[String!]! |
Extra closed days (YYYY-MM-DD) in the next 60 days; public holidays are not listed. |
| image |
[Image!]! |
The first is the main photo. Alt falls back to the branch name. |
| banner |
Image |
The wide picture at the top of the branch page, uploaded by the merchant; null when there is none (no fallback to image). Alt is the branch name. |
| service |
[BranchServiceItem!]! |
|
| employee |
[BranchEmployee!]! |
People of the branch team the merchant switched on and confirmed their consent for, in the eshop's order. |
| notice |
[BranchNotice!]! |
Notices valid today (Europe/Prague). |
| practical |
BranchPractical! |
|
BranchAddressobject
| Field | Type | Description |
| street |
String |
|
| city |
String |
|
| zip |
String |
|
| country |
String! |
ISO 3166-1 alpha-2. |
BranchEmployeeobject
| Field | Type | Description |
| id |
ID! |
|
| name |
String! |
Full name, a degree included. |
| title |
String |
Position in the language of the request, falling back to the main language. |
| bio |
String |
A few sentences in the language of the request, falling back to the main language. HTML cleaned when it was saved: paragraphs, line breaks, emphasis and http(s)/mailto/tel links only. |
| image |
Image |
Square photo; alt is the name and the position. |
BranchIntervalobject
| Field | Type | Description |
| from |
String! |
HH:MM |
| to |
String! |
HH:MM |
BranchNoticeobject
| Field | Type | Description |
| kind |
BranchNoticeKind! |
|
| text |
String! |
|
| validTo |
String |
YYYY-MM-DD; null = until further notice. |
BranchPracticalobject
| Field | Type | Description |
| parking |
String |
|
| accessibility |
String |
|
| transport |
String |
|
BranchServiceItemobject
| Field | Type | Description |
| code |
String! |
|
| icon |
String |
One of the icons the storefront ships: eye_test, contact_lens, kids, sunglasses, repair, parking, accessible, gift. |
| name |
String! |
|
BranchStockobject
| Field | Type | Description |
| branchId |
ID! |
|
| name |
String! |
|
| quantity |
Int! |
Free pieces at the branch, at most 100. |
Cartobject
| Field | Type | Description |
| id |
ID! |
|
| lang |
String! |
|
| line |
[CartLine!]! |
|
| contact |
CartContact |
|
| shipping |
ShippingMethod |
|
| pickupPoint |
PickupPoint |
The chosen pickup point of a shipping method with a pickupKind. |
| payment |
PaymentMethod |
|
| coupon |
CartCoupon |
The coupon on the cart; with a problem it discounts nothing and checkoutComplete refuses the order until it is removed. |
| discount |
Price |
What the coupon takes off the goods; null without a discount (a free-shipping coupon shows in shipping.priceBeforeCoupon). |
| itemCount |
Int! |
|
| subtotal |
Price! |
|
| total |
Price! |
|
| termsUrl |
String |
Null until the eshop sets its terms; checkout refuses an order without them. |
| isOrdered |
Boolean! |
True once the cart became an order. |
CartContactobject
| Field | Type | Description |
| email |
String! |
|
| phone |
String |
|
| billingAddress |
Address! |
|
| shippingAddress |
Address |
|
| note |
String |
|
CartCouponobject
| Field | Type | Description |
| code |
String! |
|
| kind |
CouponKind! |
|
| problem |
String |
Why the coupon does not apply, null when it does: not_started, expired, currency, min_total, used_up, used_by_email, sale_only, covers_order, unknown (switched off). |
CartLineobject
| Field | Type | Description |
| quantity |
Int! |
|
| product |
Product! |
|
| variant |
Variant! |
|
| unitPrice |
Price |
Null when the variant lost its price since it was added; checkout refuses the cart then. |
| linePrice |
Price! |
|
Categoryobject
| Field | Type | Description |
| id |
ID! |
|
| name |
String! |
Short name for menus, breadcrumbs and tiles. |
| heading |
String! |
The page heading (H1) the merchant set for this language; the name when they set none. |
| slug |
String |
|
| path |
String |
|
| alternate |
[AlternatePath!]! |
Addresses of this entity in the eshop's languages that have a slug, main language first. |
| seo |
Seo! |
|
| parent |
Category |
|
| child |
[Category!]! |
|
| ancestor |
[Category!]! |
Root first, the category itself left out. |
| content |
Content |
|
| image |
Image |
The category photo: uploaded by the merchant on pobo, imported from the platform elsewhere. Alt is the category name. |
| banner |
Image |
The wide picture behind the category heading, uploaded by the merchant on pobo; null when there is none (no fallback to image). |
| icon |
Image |
The menu icon, uploaded by the merchant on pobo: an SVG or a square PNG. Show it as an image, never inline. |
| isReservationOnly |
Boolean! |
Products in this category can only be reserved at a branch: it, or a category above it, is marked reservation-only. False while the eshop takes no reservations. |
Compareobject
| Field | Type | Description |
| id |
ID |
Null for the comparison of a shared link, which is not stored. |
| lang |
String! |
|
| product |
[Product!]! |
|
| productCount |
Int! |
|
| parameterName |
[String!]! |
Parameter names of the products as table rows: in the order of the storefront filters, then as they first appear. |
Contentobject
| Field | Type | Description |
| lang |
String! |
Language the content is written in. |
| html |
String! |
The whole Pobo page, shared descriptions included — the HTML REST V2 returns as content.html. |
| marketplaceHtml |
String |
The same page with marketplace widgets. |
| jsonLd |
String |
FAQPage JSON-LD object as a JSON string, for a script tag of type application/ld+json. |
| anchor |
[Anchor!]! |
H2 headings of the page; their ids are already in the HTML. |
DeliveryEstimateobject
| Field | Type | Description |
| from |
String |
YYYY-MM-DD; null while a prepaid order waits for its payment (then the days count from the payment). |
| to |
String |
|
| minDay |
Int! |
|
| maxDay |
Int! |
|
| afterPayment |
Boolean! |
|
FacetValueobject
| Field | Type | Description |
| slug |
String! |
|
| name |
String! |
|
| count |
Int! |
|
GeoPointobject
| Field | Type | Description |
| lat |
Float! |
|
| lng |
Float! |
|
Imageobject
| Field | Type | Description |
| url |
String! |
|
| alt |
String |
|
OpeningHourobject
| Field | Type | Description |
| day |
String! |
|
| hours |
String! |
|
Orderobject
| Field | Type | Description |
| number |
String! |
|
| token |
String! |
Random; the address of the thank-you page. Read the order back with Query.order(token). |
| total |
Price! |
|
| couponCode |
String |
The coupon code the order used; null without a coupon. |
| discount |
Price |
What the coupon took off the goods; null without a discount. |
| status |
OrderStatus! |
Where the order is in its handling; a cancelled order cannot be paid any more. |
| paymentType |
PaymentType! |
|
| paymentStatus |
PaymentStatus! |
|
| paymentUrl |
String |
Where to pay an online order: set only in the answer of checkoutComplete and orderPaymentStart, null when the gateway failed (offer to pay again). |
| pickupPoint |
PickupPoint |
The pickup point the order goes to; null for delivery to an address. |
| bankTransfer |
BankTransfer |
Bank transfer details; null for cash on delivery. |
| shortUrl |
String |
The short link to the order page (/o/{code}); null when the eshop has no address. |
| shippingName |
String! |
|
| paymentName |
String! |
|
| line |
[OrderLine!]! |
|
| progress |
[OrderProgressStep!]! |
NEW → PROCESSING → SHIPPED → DELIVERED with when each was reached (null = not yet); a cancelled order has only CANCELLED. |
| delivery |
DeliveryEstimate |
When the order should arrive; null when the shipping promises nothing, once delivered or cancelled, and after the last day passed. |
| shipment |
OrderParcel |
The Packeta parcel of a shipped order; null otherwise. |
| document |
[OrderDocument!]! |
The invoice and credit notes of the order, oldest first; empty until the order is paid and invoiced. |
OrderDocumentobject
| Field | Type | Description |
| kind |
OrderDocumentKind! |
|
| number |
String! |
|
| issuedAt |
String! |
ISO 8601. |
| url |
String! |
The PDF; a signed link valid for an hour, issued anew on every read of the order — never cache it. |
OrderLineobject
| Field | Type | Description |
| name |
String! |
|
| quantity |
Int! |
|
| linePrice |
Price! |
|
OrderLinkobject
| Field | Type | Description |
| token |
String! |
|
| lang |
String! |
|
OrderParcelobject
| Field | Type | Description |
| number |
String! |
|
| trackingUrl |
String! |
|
OrderProgressStepobject
| Field | Type | Description |
| status |
OrderStatus! |
|
| reachedAt |
String |
ISO 8601; null = not reached (yet). |
PageInfoobject
| Field | Type | Description |
| hasNextPage |
Boolean! |
|
| endCursor |
String |
|
Parameterobject
| Field | Type | Description |
| name |
String! |
|
| value |
String! |
|
PickupPointobject
| Field | Type | Description |
| id |
ID! |
|
| kind |
PickupPointKind! |
|
| name |
String! |
|
| street |
String! |
|
| city |
String! |
|
| zip |
String! |
|
| country |
Country! |
|
| distanceKm |
Float |
Kilometres from Query.pickupPoint(near); null without it. |
| opening |
[OpeningHour!]! |
|
Priceobject
Amounts are decimal strings with four decimals, never floats.
| Field | Type | Description |
| amount |
String! |
|
| amountWithVat |
String! |
|
| amountWithoutVat |
String! |
|
| currency |
String! |
|
| includesVat |
Boolean! |
|
| beforeDiscount |
String |
|
| saleEndsAt |
String |
|
| lowestPrice30Day |
String |
During a sale: the lowest price charged in the 30 days before the sale began, earlier sales included, on the basis of amount (EU Omnibus — show it next to the discount). Null without a sale, in a cart, or when Pobo has no price from before the sale (price history is kept since 2026-11-04). |
PriceRangeobject
Decimal strings with four decimals.
| Field | Type | Description |
| min |
String! |
|
| max |
String! |
|
| histogram |
[Int!]! |
Products per 20 equal bands from min to max (max in the last band); like the range, the price filter itself is left out. |
Productobject
| Field | Type | Description |
| id |
ID! |
|
| name |
String! |
|
| slug |
String |
|
| path |
String |
|
| alternate |
[AlternatePath!]! |
Addresses of this entity in the eshop's languages that have a slug, main language first. |
| shortDescription |
String |
|
| seo |
Seo! |
|
| image |
[Image!]! |
|
| banner |
Image |
The wide picture of the product page, uploaded by the merchant; null when there is none (no fallback to image). Alt is the product name. |
| parameter |
[Parameter!]! |
|
| category |
[Category!]! |
|
| variant |
[Variant!]! |
|
| price |
Price |
The cheapest variant that can be sold, as on the product card. |
| availability |
AvailabilityInfo! |
|
| isReservationOnly |
Boolean! |
Sold by reservation at a branch only: cartLineAdd refuses it (reason reservation_only). True when any of its categories, or any category above one of them, is marked reservation-only; the main category plays no part. |
| content |
Content |
Pobo content, rendered ahead of time; null until the first render (up to about a minute after a change). |
| tryOn |
TryOn |
The product can be tried on a photo of the visitor (try-on add-on); null when the add-on is off or no variant has a photo to try on. Start one with POST /api/v1/storefront/{eshop}/addon/try-on/result. |
ProductConnectionobject
| Field | Type | Description |
| edges |
[ProductEdge!]! |
|
| pageInfo |
PageInfo! |
|
| totalCount |
Int! |
All products the same arguments list, counted only when selected; adds no cost. |
ProductEdgeobject
| Field | Type | Description |
| node |
Product! |
|
| cursor |
String! |
|
Redirectobject
An old address: the storefront answers with a permanent redirect to this path.
| Field | Type | Description |
| to |
String! |
|
Reservationobject
A reservation of goods at a branch. Plan: doc/claude/plan-order-reservation.md.
| Field | Type | Description |
| token |
String! |
Random; the address of the reservation page and the cancel link. |
| code |
String! |
Short, for the branch. |
| status |
ReservationStatus! |
|
| startsAt |
String! |
ISO 8601, Europe/Prague. |
| branch |
Branch |
Null when the branch was switched off since. |
| line |
[ReservationLine!]! |
|
| canCancel |
Boolean! |
Pending and not started yet — reservationCancel takes it. |
ReservationLineobject
| Field | Type | Description |
| variantId |
ID |
|
| name |
String! |
|
| quantity |
Int! |
|
ReservationListLineobject
Seoobject
| Field | Type | Description |
| title |
String |
|
| description |
String |
|
ShippingMethodobject
| Field | Type | Description |
| id |
ID! |
|
| name |
String! |
|
| price |
Price! |
|
| requiresAddress |
Boolean! |
|
| pickupKind |
PickupPointKind |
Set when the customer picks a pickup point of this kind (Query.pickupPoint) instead of giving an address. |
| priceBeforeCoupon |
Price |
In a cart with a free-shipping coupon: the price the coupon took away (price is then zero); null otherwise. |
Shopobject
| Field | Type | Description |
| name |
String! |
|
| defaultLang |
String! |
|
| lang |
[String!]! |
|
| currency |
String! |
Currency of the price list the storefront shows in the language asked for. |
| stylesheet |
[Stylesheet!]! |
Stylesheets of the eshop's widgets, in the order the Pobo script loads them. |
| phoneRequired |
Boolean! |
The checkout must ask for a phone: the eshop sends text messages about the order (cartSetContact refuses a missing one with field = phone). |
| branchSchemaType |
String! |
The schema.org type of the branch pages: LocalBusiness, Optician or Store. |
| reservationEnabled |
Boolean! |
The eshop takes reservations at its branches (reservationCreate). |
| assistant |
Assistant |
The shopping assistant bubble; null while it is switched off. The storefront server talks to it with its token at /api/v1/storefront/{eshop}/assistant/*. |
| tryOn |
Boolean! |
The glasses try-on add-on is switched on — the storefront may promote it (which products: Product.tryOn). |
SitemapEntryobject
| Field | Type | Description |
| type |
SitemapEntityType! |
|
| path |
String! |
|
| updatedAt |
String |
ISO 8601, when the entity was last edited; null when unknown. |
Stylesheetobject
| Field | Type | Description |
| url |
String! |
|
TryOnobject
| Field | Type | Description |
| subject |
TryOnSubject! |
What the visitor photographs. |
| variantId |
[ID!]! |
Variants that can be tried on — show the button only for these. |
| cta |
TryOnCta! |
Where the button under the result leads, as the merchant set it. |
Variantobject
| Field | Type | Description |
| id |
ID! |
|
| code |
String! |
|
| ean |
String |
|
| name |
String |
|
| image |
Image |
The variant's own picture; null when it has none the storefront can show. |
| price |
Price |
|
| availability |
AvailabilityInfo! |
|
| branchAvailability |
[BranchStock!]! |
Branches taking reservations that have free pieces of the variant; empty while the eshop takes no reservations. |
Inputs
AddressInputinput
| Field | Type | Description |
| name |
String! |
|
| company |
String |
|
| companyId |
String |
Company id (IČO), digits only; spaces are removed. |
| vatId |
String |
EU VAT id (DIČ / IČ DPH) with its country prefix; spaces are removed. Not checked in VIES yet. |
| street |
String! |
|
| city |
String! |
|
| zip |
String! |
|
| country |
Country! |
|
CartContactInputinput
| Field | Type | Description |
| email |
String! |
|
| phone |
String |
|
| billingAddress |
AddressInput! |
|
| shippingAddress |
AddressInput |
Left out = the billing address. |
| note |
String |
|
GeoInputinput
| Field | Type | Description |
| lat |
Float! |
|
| lng |
Float! |
|
OrderByClauseinput
Allows ordering a list of records.
| Field | Type | Description |
| column |
String! |
The column that is used for ordering. |
| order |
SortOrder! |
The direction that is used for ordering. |
ParameterFilterinput
Slugs as productFacet returns them: lowercase letters, digits and hyphens, at most 80 characters.
| Field | Type | Description |
| slug |
String! |
|
| value |
[String!]! |
|
ReservationContactInputinput
| Field | Type | Description |
| name |
String! |
|
| email |
String! |
|
| phone |
String |
|
ReservationLineInputinput
| Field | Type | Description |
| variantId |
ID! |
|
| quantity |
Int! |
1 to 99 pieces. |
Enums
Availabilityenum
| Value | Description |
| IN_STOCK | |
| BACKORDER | |
| OUT_OF_STOCK | |
BranchNoticeKindenum
| Value | Description |
| INFO | |
| WARNING | |
| CLOSED | The branch is closed while the notice is valid. |
Countryenum
EU member states an order is billed in and delivered to (ISO 3166-1 alpha-2).
| Value | Description |
| AT | |
| BE | |
| BG | |
| CY | |
| CZ | |
| DE | |
| DK | |
| EE | |
| ES | |
| FI | |
| FR | |
| GR | |
| HR | |
| HU | |
| IE | |
| IT | |
| LT | |
| LU | |
| LV | |
| MT | |
| NL | |
| PL | |
| PT | |
| RO | |
| SE | |
| SI | |
| SK | |
CouponKindenum
| Value | Description |
| PERCENT | |
| AMOUNT | |
| FREE_SHIPPING | |
OrderByRelationAggregateFunctionenum
Aggregate functions when ordering by a relation without specifying a column.
| Value | Description |
| COUNT | Amount of items. |
OrderByRelationWithColumnAggregateFunctionenum
Aggregate functions when ordering by a relation that may specify a column.
| Value | Description |
| AVG | Average. |
| MIN | Minimum. |
| MAX | Maximum. |
| SUM | Sum. |
| COUNT | Amount of items. |
OrderDocumentKindenum
| Value | Description |
| INVOICE | |
| CREDIT_NOTE | |
OrderStatusenum
| Value | Description |
| NEW | |
| PROCESSING | |
| SHIPPED | |
| DELIVERED | |
| CANCELLED | |
PaymentStatusenum
| Value | Description |
| UNPAID | |
| PAID | |
PaymentTypeenum
| Value | Description |
| BANK_TRANSFER | |
| CASH_ON_DELIVERY | |
| ONLINE | |
PickupPointKindenum
| Value | Description |
| BRANCH | |
| BOX | |
| CARRIER | |
ProductSortenum
| Value | Description |
| POSITION | |
| NAME | |
| PRICE_ASC | |
| PRICE_DESC | |
| NEWEST | |
ReservationStatusenum
| Value | Description |
| PENDING | |
| CONVERTED | |
| CANCELLED | |
| NO_SHOW | |
SitemapEntityTypeenum
| Value | Description |
| PRODUCT | |
| CATEGORY | |
| ARTICLE | |
| BRANCH | |
SortOrderenum
Directions for ordering a list of records.
| Value | Description |
| ASC | Sort records in ascending order. |
| DESC | Sort records in descending order. |
Trashedenum
Specify if you want to include or exclude trashed results from a query.
| Value | Description |
| ONLY | Only return trashed results. |
| WITH | Return both trashed and non-trashed results. |
| WITHOUT | Only return non-trashed results. |
TryOnCtaenum
| Value | Description |
| RESERVE | |
| CART | |
Unions