Listele — Siparişler
“Siparişler” verilerini okuyun. Sonuç, bu işlemin parametrelerine bağlıdır.
GET/api/v1/orders
- Kimlik doğrulama
Bearer- En düşük plan
- BASIC
- Gerekli izinler
orders.order:read
Kod örnekleri
İstek örneği
cURL
: "${SHOPENTLY_SHOP_URL:?}"
curl --disable --globoff --fail-with-body --silent --show-error \
--proto '=https' --connect-timeout 5 --max-time 30 \
--request GET \
--header "Authorization: Bearer ${SHOPENTLY_ACCESS_TOKEN:?}" \
--url "${SHOPENTLY_SHOP_URL%/}"'/api/v1/orders?limit=20'
PHP
<?php
declare(strict_types=1);
$baseUrl = rtrim(getenv('SHOPENTLY_SHOP_URL') ?: '', '/');
$origin = parse_url($baseUrl);
if (!$origin || ($origin['scheme'] ?? '') !== 'https' || empty($origin['host']) ||
isset($origin['user'], $origin['pass']) || isset($origin['user']) || isset($origin['path']) ||
isset($origin['query']) || isset($origin['fragment'])) {
throw new RuntimeException('SHOPENTLY_SHOP_URL must be an HTTPS origin');
}
$credential = getenv('SHOPENTLY_ACCESS_TOKEN') ?: '';
if ($credential === '' || strpbrk($credential, "\r\n") !== false) {
throw new RuntimeException('Invalid credential');
}
$headers = [];
$headers[] = 'Authorization: Bearer ' . $credential;
$responseHeaders = [];
$handle = curl_init($baseUrl . '/api/v1/orders?limit=20');
curl_setopt_array($handle, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_PROTOCOLS => CURLPROTO_HTTPS,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 30,
CURLOPT_HEADERFUNCTION => static function ($handle, string $line) use (&$responseHeaders): int {
if (str_contains($line, ':')) {
[$name, $value] = explode(':', $line, 2);
$responseHeaders[strtolower(trim($name))] = trim($value);
}
return strlen($line);
},
]);
$raw = curl_exec($handle);
$status = curl_getinfo($handle, CURLINFO_RESPONSE_CODE);
$error = curl_error($handle);
curl_close($handle);
if ($raw === false) {
throw new RuntimeException('Transport error: ' . $error);
}
if ($status < 200 || $status >= 300) {
throw new RuntimeException('HTTP ' . $status . '; request_id=' .
($responseHeaders['x-request-id'] ?? '') . '; retry_after=' . ($responseHeaders['retry-after'] ?? ''));
}
$result = $raw === '' ? null : json_decode($raw, true, 512, JSON_THROW_ON_ERROR | JSON_BIGINT_AS_STRING);
echo json_encode($result, JSON_THROW_ON_ERROR | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE), PHP_EOL;
Python
from contextlib import ExitStack
import json
import os
from urllib.parse import urlsplit
import requests # python -m pip install requests
base_url = os.environ["SHOPENTLY_SHOP_URL"].rstrip("/")
origin = urlsplit(base_url)
if origin.scheme != "https" or not origin.hostname or origin.username or origin.password or origin.path or origin.query or origin.fragment:
raise ValueError("SHOPENTLY_SHOP_URL must be an HTTPS origin")
credential = os.environ['SHOPENTLY_ACCESS_TOKEN']
if not credential or "\r" in credential or "\n" in credential:
raise ValueError("Invalid credential")
headers = {}
headers["Authorization"] = 'Bearer' + " " + credential
body = None
if body is not None:
headers["Content-Type"] = "application/json"
with ExitStack() as stack:
session = stack.enter_context(requests.Session())
files = None
if False:
image = stack.enter_context(open(os.environ["SHOPENTLY_IMAGE_FILE"], "rb"))
if os.fstat(image.fileno()).st_size > 5242880:
raise ValueError("Image exceeds 5 MiB")
files = {"file": ("article.png", image, "image/png")}
response = session.request(
'GET', base_url + '/api/v1/orders?limit=20', headers=headers,
data=body.encode("utf-8") if body is not None else None, files=files,
timeout=(5, 30), allow_redirects=False,
)
if not 200 <= response.status_code < 300:
raise RuntimeError(f"HTTP {response.status_code}; request_id={response.headers.get('X-Request-ID', '')}; retry_after={response.headers.get('Retry-After', '')}")
if False:
if response.headers.get("Content-Type") != "image/webp" or len(response.content) > 5242880:
raise ValueError("Unexpected image response")
with open(os.environ["SHOPENTLY_OUTPUT_FILE"], "xb") as output:
output.write(response.content)
else:
result = response.json() if response.content else None
print(json.dumps(result, ensure_ascii=False, indent=2))
Yanıt örneği 200
{
"data": [
{
"created_at": "2026-10-19T10:00:00Z",
"customer": {
"email": "customer@example.invalid",
"first_name": "Example",
"last_name": "Example",
"phone": null
},
"delivery": {
"amount": {
"amount": "0.00",
"currency": "PLN",
"minor_units": 2
},
"dates": {
"dispatch_timezone": "Europe/Warsaw",
"estimated_delivery_from": "2026-10-20",
"estimated_delivery_to": "2026-10-21",
"planned_dispatch_on": "2026-10-19"
},
"method_code": "shipping-old",
"method_name": "Historic carrier",
"pickup_point": null,
"recipient_mode": "full_address"
},
"discount_amount": {
"amount": "24.60",
"currency": "PLN",
"minor_units": 2
},
"id": "order-0000",
"lifecycle_state": "placed",
"locale": "pl",
"market_id": "market-pl",
"number": "0001",
"payment": {
"amount": {
"amount": "329.40",
"currency": "PLN",
"minor_units": 2
},
"environment": "live",
"method_code": "payment-old",
"method_name": "Historic method",
"paid_at": null,
"status": "unpaid",
"updated_at": "2026-10-19T10:00:00Z",
"version": 0
},
"prices_include_tax": true,
"shipping_discount_amount": {
"amount": "24.60",
"currency": "PLN",
"minor_units": 2
},
"status": {
"id": "status-0",
"name": "Status 0",
"updated_at": "2026-10-19T10:00:00Z",
"version": 1
},
"subtotal": {
"amount": "329.40",
"currency": "PLN",
"minor_units": 2
},
"tax": {
"amount": "49.40",
"currency": "PLN",
"minor_units": 2
},
"tax_country_code": "PL",
"total": {
"amount": "329.40",
"currency": "PLN",
"minor_units": 2
}
}
],
"meta": {
"pagination": {
"has_more": false,
"limit": 20,
"next_cursor": null
},
"request_id": "example"
}
}
Nasıl çalışır
- Koleksiyon; sipariş özetlerini ve numara, durum, ödeme durumu ve oluşturulma zamanına göre filtreleri sağlar.
- Sipariş listesi ve ayrıntıları delivery.dates içerir. YYYY-MM-DD tarihleri planlanmıştır ve gönderimi doğrulamaz. Güncel tarihler önceliklidir; eski siparişler kayıtlı tahmini kullanır. Silinen veya bilinmeyen değerler null olur. Ayrıntılar tüm sipariş kalemlerini ve ürün görsellerini de içerir.
- Geçerli durum tanımlayıcılarını /api/v1/order-statuses üzerinden alın.
- Sipariş durumu ve ödeme durumu ayrı PATCH uç noktaları ve izinleri kullanır.
- Kayıtlı ödeme durumunu değiştirmek karttan ücret çekmez veya ödeme sağlayıcısı üzerinden para iadesi yapmaz.
Sipariş · Toplamlar
Tutarlar ve vergi oranları, satır düzeltmeleri dahil kayıtlı siparişten gelir. Eksik geçmiş veriler null olur ve güncel katalog oranlarıyla değiştirilmez. Tutarlar ondalık metin olarak kalır.
Liste özetleri döndürür. Tam mali ayrıntıları dışa aktarmak için her sonuçta GET /api/v1/orders/{order_id} çağrısı yapın. GET tekrarları sınırlıdır ve Retry-After değerine uyar. Oluşturulma tarihine göre dışa aktarım sonraki düzeltmeleri eşitlemez.
Parametreler
Sorgu parametreleri
limitTam sayıİsteğe bağlıBu sayfadaki en yüksek kayıt sayısı.
minimum:1maximum:100cursorDize nullİsteğe bağlıÖnceki sayfanın döndürdüğü, iç yapısı yorumlanmaması gereken devam değeri.
Dize:minLength:1maxLength:1024numberDize nullİsteğe bağlıKullanıcıya gösterilen sipariş veya talep numarası.
Dize:minLength:1maxLength:48status_idDize nullİsteğe bağlıİlgili durum sözlüğünden alınan tanımlayıcı.
Kısıtlamalar · Dize 1
pattern"^[a-z0-9][a-z0-9_-]{0,62}$"
payment_statusDize nullİsteğe bağlıKaydedilen ödeme durumu.
Kısıtlamalar · Dize 1
enum["unpaid", "paid", "failed", "refunded"]
created_fromDize nullİsteğe bağlıOluşturulma zamanı filtresinin başlangıcı.
Dize:format:"date-time"created_toDize nullİsteğe bağlıOluşturulma zamanı filtresinin sonu.
Dize:format:"date-time"
Bu işlem JSON gövdesi kabul etmez.
Yanıtlar
Yanıt 200
Tam model: ApiResponse_list_OrderSummaryData__
dataDizi <OrderSummaryData> ZorunluBaşarılı yanıtın verileri.
Alanlar ·
datacreated_atDizeZorunluOluşturulma zamanı.
format:"date-time"customerCustomerDataZorunluBu kaynak için kaydedilen müşteri bilgileri.
deliveryShippingDataZorunluTeslimat yöntemi ve ilgili bilgiler.
discount_amountMoneyDataZorunluJSON dizesi olarak kodlanan ondalık tutar; yalnızca izin verilen yerlerde null olabilir.
idDizeZorunluKaynak tanımlayıcısı; döndürüldüğü biçimi koruyun.
lifecycle_stateOrderLifecycleStateZorunluİş yaşam döngüsü durumu.
localeDizeZorunluBu istek için seçilen dil.
market_idDizeZorunluBağlam uç noktasının döndürdüğü pazar tanımlayıcısı.
numberDizeZorunluKullanıcıya gösterilen sipariş veya talep numarası.
paymentPaymentDataZorunluSipariş için kaydedilen ödeme ayrıntıları.
prices_include_taxMantıksal değerZorunluListelenen fiyatların vergi içerip içermediği.
shipping_discount_amountMoneyDataZorunluJSON dizesi olarak kodlanan ondalık tutar; yalnızca izin verilen yerlerde null olabilir.
statusOrderStatusDataZorunluBu işlemin kabul ettiği durum.
subtotalMoneyDataZorunluYanıtta gösterilen ek bileşenlerden önceki tutar.
taxMoneyDataZorunluVergi bilgileri.
tax_country_codeDize nullZorunluVergi ülkesi · Kayıtlı sipariş verileri · ISO 3166-1 alpha-2; null.
totalMoneyDataZorunluToplam tutar.
metaContextPageMetaContextMetaPageMetaRequestMetaZorunluYanıt üst verileri.
Alanlar ·
metalocaleDizeZorunluBu istek için seçilen dil.
market_codeDizeZorunluBağlam uç noktasının döndürdüğü pazar kodu.
market_idDizeZorunluBağlam uç noktasının döndürdüğü pazar tanımlayıcısı.
paginationPaginationZorunluİmleç tabanlı sayfalamanın üst verileri.
request_idDizeZorunluTalep tanımlayıcısı; yanıt üst verilerinde HTTP isteğini tanımlar.
minLength:1maxLength:100
localeDizeZorunluBu istek için seçilen dil.
market_codeDizeZorunluBağlam uç noktasının döndürdüğü pazar kodu.
market_idDizeZorunluBağlam uç noktasının döndürdüğü pazar tanımlayıcısı.
request_idDizeZorunluTalep tanımlayıcısı; yanıt üst verilerinde HTTP isteğini tanımlar.
minLength:1maxLength:100
paginationPaginationZorunluİmleç tabanlı sayfalamanın üst verileri.
request_idDizeZorunluTalep tanımlayıcısı; yanıt üst verilerinde HTTP isteğini tanımlar.
minLength:1maxLength:100
request_idDizeZorunluTalep tanımlayıcısı; yanıt üst verilerinde HTTP isteğini tanımlar.
minLength:1maxLength:100
HTTP durumu
200- Başarılı yanıt Şema
400- Geçersiz istek
401- Kimlik doğrulaması gerekli
403- İzin reddedildi
404- Kaynak bulunamadı
409- Sürüm çakışması
422- Doğrulama başarısız
429- İstek sınırı aşıldı
Diğer HTTP durumları (7)
405- Yönteme izin verilmiyor
413- İstek çok büyük
415- Desteklenmeyen biçim
500- Sunucu hatası
502- API ağ geçidi hatası
503- Hizmet kullanılamıyor
504- Zaman aşımı
Hata kataloğu: ErrorResponse
Başlıklar
401
WWW-AuthenticateDizeİsteğe bağlıSunucunun gerektirdiği kimlik doğrulama şeması.
405
AllowDizeİsteğe bağlıBu kaynağın desteklediği HTTP yöntemleri.
429, 503
Retry-AfterTam sayıİsteğe bağlıYeniden denemeden önce saniye cinsinden en kısa bekleme süresi.
minimum:0