İçeriğe atla
ShopentlyLearn

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

JSON
{
  "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: 100
Varsayılan: 50Örnek: 20
cursorDize nullİsteğe bağlı

Önceki sayfanın döndürdüğü, iç yapısı yorumlanmaması gereken devam değeri.

Dize:minLength: 1maxLength: 1024
numberDize nullİsteğe bağlı

Kullanıcıya gösterilen sipariş veya talep numarası.

Dize:minLength: 1maxLength: 48
status_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

dataDizi <OrderSummaryData > Zorunlu

Başarılı yanıtın verileri.

Alanlar · data

OrderSummaryData

created_atDizeZorunlu

Oluşturulma zamanı.

format: "date-time"
customerCustomerData Zorunlu

Bu kaynak için kaydedilen müşteri bilgileri.

deliveryShippingData Zorunlu

Teslimat yöntemi ve ilgili bilgiler.

discount_amountMoneyData Zorunlu

JSON dizesi olarak kodlanan ondalık tutar; yalnızca izin verilen yerlerde null olabilir.

idDizeZorunlu

Kaynak tanımlayıcısı; döndürüldüğü biçimi koruyun.

lifecycle_stateOrderLifecycleState Zorunlu

İş yaşam döngüsü durumu.

localeDizeZorunlu

Bu istek için seçilen dil.

market_idDizeZorunlu

Bağlam uç noktasının döndürdüğü pazar tanımlayıcısı.

numberDizeZorunlu

Kullanıcıya gösterilen sipariş veya talep numarası.

paymentPaymentData Zorunlu

Sipariş için kaydedilen ödeme ayrıntıları.

prices_include_taxMantıksal değerZorunlu

Listelenen fiyatların vergi içerip içermediği.

shipping_discount_amountMoneyData Zorunlu

JSON dizesi olarak kodlanan ondalık tutar; yalnızca izin verilen yerlerde null olabilir.

statusOrderStatusData Zorunlu

Bu işlemin kabul ettiği durum.

subtotalMoneyData Zorunlu

Yanıtta gösterilen ek bileşenlerden önceki tutar.

taxMoneyData Zorunlu

Vergi bilgileri.

tax_country_codeDize nullZorunlu

Vergi ülkesi · Kayıtlı sipariş verileri · ISO 3166-1 alpha-2; null.

totalMoneyData Zorunlu

Toplam tutar.

metaContextPageMeta ContextMeta PageMeta RequestMeta Zorunlu

Yanıt üst verileri.

Alanlar · meta

ContextPageMeta

localeDizeZorunlu

Bu istek için seçilen dil.

market_codeDizeZorunlu

Bağlam uç noktasının döndürdüğü pazar kodu.

market_idDizeZorunlu

Bağlam uç noktasının döndürdüğü pazar tanımlayıcısı.

paginationPagination Zorunlu

İmleç tabanlı sayfalamanın üst verileri.

request_idDizeZorunlu

Talep tanımlayıcısı; yanıt üst verilerinde HTTP isteğini tanımlar.

minLength: 1maxLength: 100

ContextMeta

localeDizeZorunlu

Bu istek için seçilen dil.

market_codeDizeZorunlu

Bağlam uç noktasının döndürdüğü pazar kodu.

market_idDizeZorunlu

Bağlam uç noktasının döndürdüğü pazar tanımlayıcısı.

request_idDizeZorunlu

Talep tanımlayıcısı; yanıt üst verilerinde HTTP isteğini tanımlar.

minLength: 1maxLength: 100

PageMeta

paginationPagination Zorunlu

İmleç tabanlı sayfalamanın üst verileri.

request_idDizeZorunlu

Talep tanımlayıcısı; yanıt üst verilerinde HTTP isteğini tanımlar.

minLength: 1maxLength: 100

RequestMeta

request_idDizeZorunlu

Talep tanımlayıcısı; yanıt üst verilerinde HTTP isteğini tanımlar.

minLength: 1maxLength: 100
Yanıt örneği

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