REST API: objednávky, vratky a zásilky
Referenční popis cest pro objednávky, vratky a zásilky: parametry dotazu, pole odpovědi, synchronizace přes updated_since, chyby a ukázka volání.
Pro účetnictví, ERP a expedici: kdo co objednal, v jakém je to stavu, kolik to stálo, co se vrací a kde je zásilka.
Cesty odpovídají na GET na doméně vašeho obchodu, například https://muj-eshop.cz/api/v1/…, a klíč se posílá v hlavičce Authorization: Bearer nebo x-api-key. Parametry, pole i chyby na téhle stránce se generují ze smlouvy, podle které API odpovídá, takže platí pro build, na kterém stránka běží. Každá cesta může navíc vrátit chyby společné všem cestám: invalid_api_key, missing_api_key, external_access_disabled, external_access_not_enabled, external_access_suspended, key_surface_mismatch, plan_required, shop_unavailable, shop_not_found, rate_limited a server_error. Co znamenají, popisuje článek Chybové odpovědi, klíč a oprávnění Autentizace a oprávnění a průchod výpisem Stránkování a filtry.
GET /api/v1/orders
Objednávky s částkami v haléřích, bez updated_since od nejnovější, s ním od nejstarší změny. Nákupní ceny, marže, interní poznámky ani identifikátory platby ven nejdou.
- Oprávnění:
orders:read, u klíče „Objednávky (čtení)“. - Odpověď: stránka výpisu, záznamy jsou v
dataa jak otevřít další stránku, říká seznam Obálka odpovědi. - Synchronizace: s
updated_sincese výpis řadí podle poleupdated_atod nejstarší změny, bez něj od nejnovějšího záznamu. Poleupdated_at: Poslední změna záznamu objednávky. Podle něj stránkujeupdated_since.
curl -s "https://muj-eshop.cz/api/v1/orders?limit=100" \
-H "Authorization: Bearer $SHOPZI_API_KEY"Parametry dotazu
limit(celé číslo od 1 do 100, výchozí25; nepovinný): Počet řádků na stránku, výchozí 25. Vyšší hodnota se ořízne na 100, nesmysl spadne na výchozí.cursor(text; nepovinný): Hodnotanext_cursorz předchozí stránky, beze změny. Platí jen pro tentýž dotaz.updated_since(čas ISO 8601; nepovinný): ISO 8601 se zónouZnebo s číselným posunem (+02:00). Vrátí záznamy změněné od té chvíle včetně, seřazené od nejstarší změny, a stránkuje stabilně: řádek změněný během průchodu se v něm neopakuje a přijde v příštím. Hodnotanext_updated_sincejde do adresy vložit bez kódování;+z nezakódované adresy se čte jako+.status(jedna z hodnotpending,received,confirmed,processing,shipped,delivered,completed,cancelledarejected; nepovinný): Stav objednávky.payment_status(jedna z hodnotpending,authorized,paid,failed,refundedapartially_refunded; nepovinný): Stav platby.
Obálka odpovědi
data(pole záznamů): Záznamy stránky, jejich pole popisuje seznam Pole záznamu.next_cursor(text nebonull): Kurzor další stránky,null= tohle je poslední stránka.next_updated_since(čas ISO 8601): Hodnotaupdated_sincepro příští průchod: začátek tohoto průchodu mínus 5 minut. Na všech stránkách jednoho průchodu je stejná a do adresy jde vložit bez kódování.
Pole záznamu
id(UUID)order_number(text): Číslo objednávky, jak ho vidí zákazník.status(jedna z hodnotpending,received,confirmed,processing,shipped,delivered,completed,cancelledarejected)payment_status(jedna z hodnotpending,authorized,paid,failed,refundedapartially_refunded)payment_method(jedna z hodnotcard_online,apple_pay,google_pay,bank_transfer,codainvoice)fulfillment_status(jedna z hodnotpending,label_created,handed_over,in_transit,ready_for_pickup,delivered,returned,failedacancelled, nebonull): Stav nejnovější zásilky,nullbez zásilky. Vznik i posun zásilky posuneupdated_atobjednávky; podrobnosti zásilky jsou v/shipments.currency_code(text se vzorem^[A-Z]{3}$): Kód měny podle ISO 4217, dnes vždy CZK.subtotal_minor(celé číslo): Zboží celkem v haléřích, s DPH.discount_total_minor(celé číslo): Sleva celkem v haléřích.shipping_price_minor(celé číslo): Doprava v haléřích, s DPH.total_minor(celé číslo): K úhradě celkem v haléřích, s DPH.email(text)phone(text nebonull)is_quotation(truenebofalse):true= velkoobchodní poptávka, ne závazná objednávka.placed_at(čas ISO 8601)created_at(čas ISO 8601)updated_at(čas ISO 8601): Poslední změna záznamu objednávky. Podle něj stránkujeupdated_since.
Chyby této cesty
- 400
invalid_query: Parametr dotazu má neplatnou hodnotu: čas v updated_since bez časového posunu, nebo hodnota filtru, kterou výčet nezná. Zpráva jmenuje parametr, u filtru i povolené hodnoty. - 400
invalid_cursor: Kurzor je poškozený, nebo patří k jinému dotazu (jiná cesta, jiný filtr nebo jiné updated_since). Začněte průchod znovu bez cursor. - 403
insufficient_scope: Klíč je platný, ale nemá oprávnění, které cesta vyžaduje. Zpráva vypíše, co klíči chybí a co má.
GET /api/v1/orders/{id}
Jedna objednávka i s položkami, fakturační a doručovací adresou a variabilním symbolem.
- Oprávnění:
orders:read, u klíče „Objednávky (čtení)“. - Odpověď: jeden záznam v
data.
curl -s "https://muj-eshop.cz/api/v1/orders/$ID" \
-H "Authorization: Bearer $SHOPZI_API_KEY"Parametry v cestě
id(UUID; povinný): Identifikátor záznamu (UUID) z výpisu.
Obálka odpovědi
data(záznam): Jeho pole popisuje seznam Pole záznamu.
Pole záznamu
id(UUID)order_number(text): Číslo objednávky, jak ho vidí zákazník.status(jedna z hodnotpending,received,confirmed,processing,shipped,delivered,completed,cancelledarejected)payment_status(jedna z hodnotpending,authorized,paid,failed,refundedapartially_refunded)payment_method(jedna z hodnotcard_online,apple_pay,google_pay,bank_transfer,codainvoice)fulfillment_status(jedna z hodnotpending,label_created,handed_over,in_transit,ready_for_pickup,delivered,returned,failedacancelled, nebonull): Stav nejnovější zásilky,nullbez zásilky. Vznik i posun zásilky posuneupdated_atobjednávky; podrobnosti zásilky jsou v/shipments.currency_code(text se vzorem^[A-Z]{3}$): Kód měny podle ISO 4217, dnes vždy CZK.subtotal_minor(celé číslo): Zboží celkem v haléřích, s DPH.discount_total_minor(celé číslo): Sleva celkem v haléřích.shipping_price_minor(celé číslo): Doprava v haléřích, s DPH.total_minor(celé číslo): K úhradě celkem v haléřích, s DPH.email(text)phone(text nebonull)is_quotation(truenebofalse):true= velkoobchodní poptávka, ne závazná objednávka.placed_at(čas ISO 8601)created_at(čas ISO 8601)updated_at(čas ISO 8601): Poslední změna záznamu objednávky. Podle něj stránkujeupdated_since.billing(objekt)billing.name(text)billing.company(text nebonull)billing.ico(text nebonull)billing.dic(text nebonull)billing.street(text)billing.city(text)billing.postal_code(text)billing.country(text)shipping(objekt)shipping.name(text nebonull)shipping.street(text nebonull)shipping.city(text nebonull)shipping.postal_code(text nebonull)shipping.country(text nebonull)shipping.pickup_point_label(text nebonull)shipping.carrier_code(jedna z hodnotpacketa,personal,balikovna,cp,ppl,dpd,glsaprintify, nebonull)variable_symbol(text nebonull)notes(text nebonull): Poznámka zákazníka k objednávce.lines(pole objektů)lines[].id(UUID)lines[].product_id(UUID nebonull)lines[].variant_id(UUID nebonull)lines[].sku(text nebonull)lines[].name(text): Název položky v okamžiku objednávky.lines[].quantity(celé číslo)lines[].unit_price_minor(celé číslo): Jednotková cena v haléřích, s DPH.lines[].line_discount_minor(celé číslo)lines[].line_total_minor(celé číslo)lines[].vat_rate(celé číslo od 0 do 100): Sazba DPH v celých procentech.
Chyby této cesty
- 403
insufficient_scope: Klíč je platný, ale nemá oprávnění, které cesta vyžaduje. Zpráva vypíše, co klíči chybí a co má. - 404
not_found: Záznam s tímhle identifikátorem v obchodě není.
GET /api/v1/returns
Vratky a reklamace i s položkami, důvodem a stavem vrácení peněz v haléřích, s odkazem na objednávku a na vystavený dobropis.
- Oprávnění:
orders:read, u klíče „Objednávky (čtení)“. - Odpověď: stránka výpisu, záznamy jsou v
dataa jak otevřít další stránku, říká seznam Obálka odpovědi. - Synchronizace: s
updated_sincese výpis řadí podle poleupdated_atod nejstarší změny, bez něj od nejnovějšího záznamu.
curl -s "https://muj-eshop.cz/api/v1/returns?limit=100" \
-H "Authorization: Bearer $SHOPZI_API_KEY"Parametry dotazu
limit(celé číslo od 1 do 100, výchozí25; nepovinný): Počet řádků na stránku, výchozí 25. Vyšší hodnota se ořízne na 100, nesmysl spadne na výchozí.cursor(text; nepovinný): Hodnotanext_cursorz předchozí stránky, beze změny. Platí jen pro tentýž dotaz.updated_since(čas ISO 8601; nepovinný): ISO 8601 se zónouZnebo s číselným posunem (+02:00). Vrátí záznamy změněné od té chvíle včetně, seřazené od nejstarší změny, a stránkuje stabilně: řádek změněný během průchodu se v něm neopakuje a přijde v příštím. Hodnotanext_updated_sincejde do adresy vložit bez kódování;+z nezakódované adresy se čte jako+.status(jedna z hodnotrequested,received,approved,partially_approved,rejected,refunded,closedacancelled; nepovinný): Stav vratky.
Obálka odpovědi
data(pole záznamů): Záznamy stránky, jejich pole popisuje seznam Pole záznamu.next_cursor(text nebonull): Kurzor další stránky,null= tohle je poslední stránka.next_updated_since(čas ISO 8601): Hodnotaupdated_sincepro příští průchod: začátek tohoto průchodu mínus 5 minut. Na všech stránkách jednoho průchodu je stejná a do adresy jde vložit bez kódování.
Pole záznamu
id(UUID)return_number(text)order_id(UUID)order_number(text)regime(jedna z hodnotwithdrawal,reklamaceaseller_cancel): withdrawal = odstoupení od smlouvy, reklamace = vada zboží, seller_cancel = zrušeno prodejcem (dodavatel zboží nemůže dodat, nejde o odstoupení zákazníka).status(jedna z hodnotrequested,received,approved,partially_approved,rejected,refunded,closedacancelled)reason(jedna z hodnotchanged_mind,better_price,wrong_size,looks_different,arrived_late,no_longer_needed,defective,damaged_in_transit,wrong_item,missing_parts,not_as_described,quality_issueaother, nebonull)refund(objekt)refund.currency_code(text se vzorem^[A-Z]{3}$): Kód měny podle ISO 4217, dnes vždy CZK.refund.requested_minor(celé číslo): Kolik zákazník požadoval.refund.approved_minor(celé číslo): Kolik obchod schválil, i s poštovným.refund.shipping_minor(celé číslo): Vrácené poštovné (§ 1832 OZ).refund.refunded_minor(celé číslo): Kolik se už opravdu vrátilo.credit_note_id(UUID nebonull): Vystavený dobropis k vratce, identifikátor pro/documents/{id}.credit_note_number(text nebonull)deadline_at(čas ISO 8601 nebonull): Lhůta vyřízení reklamace (zákonná, nebo dohodnutá delší).items(pole objektů)items[].id(UUID)items[].order_line_id(UUID)items[].variant_id(UUID nebonull)items[].sku(text nebonull)items[].name(text)items[].quantity_requested(celé číslo)items[].quantity_approved(celé číslo)items[].unit_price_gross_minor(celé číslo)items[].currency_code(text se vzorem^[A-Z]{3}$): Kód měny podle ISO 4217, dnes vždy CZK.items[].vat_rate(celé číslo od 0 do 100)items[].reason(jedna z hodnotchanged_mind,better_price,wrong_size,looks_different,arrived_late,no_longer_needed,defective,damaged_in_transit,wrong_item,missing_parts,not_as_described,quality_issueaother, nebonull)created_at(čas ISO 8601)updated_at(čas ISO 8601)
Chyby této cesty
- 400
invalid_query: Parametr dotazu má neplatnou hodnotu: čas v updated_since bez časového posunu, nebo hodnota filtru, kterou výčet nezná. Zpráva jmenuje parametr, u filtru i povolené hodnoty. - 400
invalid_cursor: Kurzor je poškozený, nebo patří k jinému dotazu (jiná cesta, jiný filtr nebo jiné updated_since). Začněte průchod znovu bez cursor. - 403
insufficient_scope: Klíč je platný, ale nemá oprávnění, které cesta vyžaduje. Zpráva vypíše, co klíči chybí a co má.
GET /api/v1/returns/{id}
Jedna vratka nebo reklamace, v témže tvaru jako ve výpisu.
- Oprávnění:
orders:read, u klíče „Objednávky (čtení)“. - Odpověď: jeden záznam v
data.
curl -s "https://muj-eshop.cz/api/v1/returns/$ID" \
-H "Authorization: Bearer $SHOPZI_API_KEY"Parametry v cestě
id(UUID; povinný): Identifikátor záznamu (UUID) z výpisu.
Obálka odpovědi
data(záznam): Jeho pole popisuje seznam Pole záznamu.
Pole záznamu
id(UUID)return_number(text)order_id(UUID)order_number(text)regime(jedna z hodnotwithdrawal,reklamaceaseller_cancel): withdrawal = odstoupení od smlouvy, reklamace = vada zboží, seller_cancel = zrušeno prodejcem (dodavatel zboží nemůže dodat, nejde o odstoupení zákazníka).status(jedna z hodnotrequested,received,approved,partially_approved,rejected,refunded,closedacancelled)reason(jedna z hodnotchanged_mind,better_price,wrong_size,looks_different,arrived_late,no_longer_needed,defective,damaged_in_transit,wrong_item,missing_parts,not_as_described,quality_issueaother, nebonull)refund(objekt)refund.currency_code(text se vzorem^[A-Z]{3}$): Kód měny podle ISO 4217, dnes vždy CZK.refund.requested_minor(celé číslo): Kolik zákazník požadoval.refund.approved_minor(celé číslo): Kolik obchod schválil, i s poštovným.refund.shipping_minor(celé číslo): Vrácené poštovné (§ 1832 OZ).refund.refunded_minor(celé číslo): Kolik se už opravdu vrátilo.credit_note_id(UUID nebonull): Vystavený dobropis k vratce, identifikátor pro/documents/{id}.credit_note_number(text nebonull)deadline_at(čas ISO 8601 nebonull): Lhůta vyřízení reklamace (zákonná, nebo dohodnutá delší).items(pole objektů)items[].id(UUID)items[].order_line_id(UUID)items[].variant_id(UUID nebonull)items[].sku(text nebonull)items[].name(text)items[].quantity_requested(celé číslo)items[].quantity_approved(celé číslo)items[].unit_price_gross_minor(celé číslo)items[].currency_code(text se vzorem^[A-Z]{3}$): Kód měny podle ISO 4217, dnes vždy CZK.items[].vat_rate(celé číslo od 0 do 100)items[].reason(jedna z hodnotchanged_mind,better_price,wrong_size,looks_different,arrived_late,no_longer_needed,defective,damaged_in_transit,wrong_item,missing_parts,not_as_described,quality_issueaother, nebonull)created_at(čas ISO 8601)updated_at(čas ISO 8601)
Chyby této cesty
- 403
insufficient_scope: Klíč je platný, ale nemá oprávnění, které cesta vyžaduje. Zpráva vypíše, co klíči chybí a co má. - 404
not_found: Záznam s tímhle identifikátorem v obchodě není.
GET /api/v1/shipments
Zásilky objednávek: dopravce, způsob dopravy, číslo a odkaz pro sledování, stav a položky v zásilce. Štítek ani chybová hlášení dopravce ven nejdou.
- Oprávnění:
orders:read, u klíče „Objednávky (čtení)“. - Odpověď: stránka výpisu, záznamy jsou v
dataa jak otevřít další stránku, říká seznam Obálka odpovědi. - Synchronizace: s
updated_sincese výpis řadí podle poleupdated_atod nejstarší změny, bez něj od nejnovějšího záznamu.
curl -s "https://muj-eshop.cz/api/v1/shipments?limit=100" \
-H "Authorization: Bearer $SHOPZI_API_KEY"Parametry dotazu
limit(celé číslo od 1 do 100, výchozí25; nepovinný): Počet řádků na stránku, výchozí 25. Vyšší hodnota se ořízne na 100, nesmysl spadne na výchozí.cursor(text; nepovinný): Hodnotanext_cursorz předchozí stránky, beze změny. Platí jen pro tentýž dotaz.updated_since(čas ISO 8601; nepovinný): ISO 8601 se zónouZnebo s číselným posunem (+02:00). Vrátí záznamy změněné od té chvíle včetně, seřazené od nejstarší změny, a stránkuje stabilně: řádek změněný během průchodu se v něm neopakuje a přijde v příštím. Hodnotanext_updated_sincejde do adresy vložit bez kódování;+z nezakódované adresy se čte jako+.status(jedna z hodnotpending,label_created,handed_over,in_transit,ready_for_pickup,delivered,returned,failedacancelled; nepovinný): Stav zásilky.
Obálka odpovědi
data(pole záznamů): Záznamy stránky, jejich pole popisuje seznam Pole záznamu.next_cursor(text nebonull): Kurzor další stránky,null= tohle je poslední stránka.next_updated_since(čas ISO 8601): Hodnotaupdated_sincepro příští průchod: začátek tohoto průchodu mínus 5 minut. Na všech stránkách jednoho průchodu je stejná a do adresy jde vložit bez kódování.
Pole záznamu
id(UUID)order_id(UUID)order_number(text)carrier(jedna z hodnotpacketa,personal,balikovna,cp,ppl,dpd,glsaprintify)service(text nebonull): Způsob dopravy, jak ho zákazník vybral v pokladně.delivery_type(jedna z hodnotshipping,pickup_pointapersonal_pickup, nebonull)status(jedna z hodnotpending,label_created,handed_over,in_transit,ready_for_pickup,delivered,returned,failedacancelled)tracking_number(text nebonull)tracking_url(text nebonull)pickup_point_id(text nebonull)parcel_count(celé číslo)weight_grams(celé číslo nebonull)currency_code(text se vzorem^[A-Z]{3}$): Kód měny podle ISO 4217, dnes vždy CZK.cod_amount_minor(celé číslo nebonull): Dobírka v haléřích,nullbez dobírky.handed_over_at(čas ISO 8601 nebonull)delivered_at(čas ISO 8601 nebonull)items(pole objektů): Položky přiřazené k zásilce. Prázdné pole = zásilka není rozepsaná po položkách.items[].order_line_id(UUID)items[].sku(text nebonull)items[].name(text)items[].quantity(celé číslo)created_at(čas ISO 8601)updated_at(čas ISO 8601)
Chyby této cesty
- 400
invalid_query: Parametr dotazu má neplatnou hodnotu: čas v updated_since bez časového posunu, nebo hodnota filtru, kterou výčet nezná. Zpráva jmenuje parametr, u filtru i povolené hodnoty. - 400
invalid_cursor: Kurzor je poškozený, nebo patří k jinému dotazu (jiná cesta, jiný filtr nebo jiné updated_since). Začněte průchod znovu bez cursor. - 403
insufficient_scope: Klíč je platný, ale nemá oprávnění, které cesta vyžaduje. Zpráva vypíše, co klíči chybí a co má.