Pereiti prie turinio
ShopentlyLearn

Sąrašas — Užsakymai

Skaitykite „Užsakymai“ duomenis. Rezultatas priklauso nuo šio veiksmo parametrų.

GET/api/v1/orders

Tapatybės patvirtinimas
Bearer
Prieinama nuo plano
BASIC
Būtinos teisės
orders.order:read

Kodo pavyzdžiai

Užklausos pavyzdys

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))

Atsakymo pavyzdys 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"
  }
}

Kaip tai veikia

  • Rinkinys pateikia užsakymų santraukas ir filtrus pagal numerį, būseną, mokėjimo būseną bei sukūrimo laiką.
  • Užsakymų sąraše ir išsamioje informacijoje yra delivery.dates. YYYY-MM-DD datos yra planuojamos ir nepatvirtina išsiuntimo. Dabartinės datos turi pirmenybę; senesni užsakymai naudoja išsaugotą prognozę. Išvalytos arba nežinomos reikšmės yra null. Išsamioje informacijoje taip pat yra visos eilutės ir produktų vaizdai.
  • Galiojančius būsenų identifikatorius gaukite iš /api/v1/order-statuses.
  • Užsakymo ir mokėjimo būsenoms naudojami atskiri PATCH prieigos taškai bei teisės.
  • Pakeitus užregistruotą mokėjimo būseną, kortelė neapmokestinama ir per mokėjimų paslaugų teikėją pinigai negrąžinami.

Užsakymas · Suvestinės

Sumos ir tarifai gaunami iš išsaugoto užsakymo, įskaitant eilučių pataisas. Trūkstami istoriniai duomenys yra null ir nepakeičiami dabartiniais katalogo tarifais. Sumos lieka dešimtainėmis eilutėmis.

Sąrašas grąžina suvestines. Kiekvienam rezultatui gaukite GET /api/v1/orders/{order_id}, kad eksportuotumėte visus finansinius duomenis. GET kartojimai riboti ir paiso Retry-After. Eksportas pagal sukūrimo datą nesinchronizuoja vėlesnių pataisų.

Parametrai

Užklausos parametrai

limitSveikasis skaičiusNeprivalomas

Didžiausias įrašų skaičius šiame puslapyje.

minimum: 1maximum: 100
Numatytoji reikšmė: 50Pavyzdys: 20
cursorEilutė nullNeprivalomas

Ankstesnio puslapio grąžinta tęsimo reikšmė; jos vidinės struktūros neinterpretuokite.

Eilutė:minLength: 1maxLength: 1024
numberEilutė nullNeprivalomas

Žmogui rodomas užsakymo arba prašymo numeris.

Eilutė:minLength: 1maxLength: 48
status_idEilutė nullNeprivalomas

Iš atitinkamo būsenų žinyno gautas identifikatorius.

Apribojimai · Eilutė 1
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
payment_statusEilutė nullNeprivalomas

Užregistruota mokėjimo būsena.

Apribojimai · Eilutė 1
enum
["unpaid", "paid", "failed", "refunded"]
created_fromEilutė nullNeprivalomas

Sukūrimo laiko filtro pradžia.

Eilutė:format: "date-time"
created_toEilutė nullNeprivalomas

Sukūrimo laiko filtro pabaiga.

Eilutė:format: "date-time"

Ši operacija nepriima JSON turinio.

Atsakymai

Atsakymas 200

dataMasyvas <OrderSummaryData > Privalomas

Sėkmingo atsakymo duomenys.

Laukai · data

OrderSummaryData

created_atEilutėPrivalomas

Sukūrimo laikas.

format: "date-time"
customerCustomerData Privalomas

Šiam ištekliui užregistruota kliento informacija.

deliveryShippingData Privalomas

Pristatymo būdas ir susijusi informacija.

discount_amountMoneyData Privalomas

Dešimtainė suma, užkoduota JSON eilute; null tik ten, kur leidžiama.

idEilutėPrivalomas

Ištekliaus identifikatorius; išsaugokite grąžintą išraišką.

lifecycle_stateOrderLifecycleState Privalomas

Verslo gyvavimo ciklo būsena.

localeEilutėPrivalomas

Šiai užklausai pasirinkta kalba.

market_idEilutėPrivalomas

Konteksto prieigos taško grąžintas rinkos identifikatorius.

numberEilutėPrivalomas

Žmogui rodomas užsakymo arba prašymo numeris.

paymentPaymentData Privalomas

Užsakymui užregistruoti mokėjimo duomenys.

prices_include_taxLoginė reikšmėPrivalomas

Ar nurodytos kainos apima mokesčius.

shipping_discount_amountMoneyData Privalomas

Dešimtainė suma, užkoduota JSON eilute; null tik ten, kur leidžiama.

statusOrderStatusData Privalomas

Šios konkrečios operacijos priimama būsena.

subtotalMoneyData Privalomas

Suma prieš papildomus atsakyme parodytus komponentus.

taxMoneyData Privalomas

Mokesčių informacija.

tax_country_codeEilutė nullPrivalomas

Apmokestinimo šalis · Išsaugoti užsakymo duomenys · ISO 3166-1 alpha-2; null.

totalMoneyData Privalomas

Bendra suma.

metaContextPageMeta ContextMeta PageMeta RequestMeta Privalomas

Atsakymo metaduomenys.

Laukai · meta

ContextPageMeta

localeEilutėPrivalomas

Šiai užklausai pasirinkta kalba.

market_codeEilutėPrivalomas

Konteksto prieigos taško grąžintas rinkos kodas.

market_idEilutėPrivalomas

Konteksto prieigos taško grąžintas rinkos identifikatorius.

paginationPagination Privalomas

Skaidymo į puslapius pagal žymeklį metaduomenys.

request_idEilutėPrivalomas

Prašymo identifikatorius; atsakymo metaduomenyse nurodo HTTP užklausą.

minLength: 1maxLength: 100

ContextMeta

localeEilutėPrivalomas

Šiai užklausai pasirinkta kalba.

market_codeEilutėPrivalomas

Konteksto prieigos taško grąžintas rinkos kodas.

market_idEilutėPrivalomas

Konteksto prieigos taško grąžintas rinkos identifikatorius.

request_idEilutėPrivalomas

Prašymo identifikatorius; atsakymo metaduomenyse nurodo HTTP užklausą.

minLength: 1maxLength: 100

PageMeta

paginationPagination Privalomas

Skaidymo į puslapius pagal žymeklį metaduomenys.

request_idEilutėPrivalomas

Prašymo identifikatorius; atsakymo metaduomenyse nurodo HTTP užklausą.

minLength: 1maxLength: 100

RequestMeta

request_idEilutėPrivalomas

Prašymo identifikatorius; atsakymo metaduomenyse nurodo HTTP užklausą.

minLength: 1maxLength: 100
Atsakymo pavyzdys

HTTP būsena

200
Sėkmingas atsakymas Schema
400
Netinkama užklausa
401
Būtinas tapatybės patvirtinimas
403
Prieiga uždrausta
404
Išteklius nerastas
409
Versijų konfliktas
422
Tikrinimo klaida
429
Viršytas užklausų limitas
Kitos HTTP būsenos (7)
405
Metodas neleidžiamas
413
Užklausa per didelė
415
Nepalaikomas formatas
500
Serverio klaida
502
API tinklų sietuvo klaida
503
Paslauga nepasiekiama
504
Baigėsi laukimo laikas

Klaidų katalogas: ErrorResponse

Antraštės

401

WWW-AuthenticateEilutėNeprivalomas

Serverio reikalaujama tapatybės patvirtinimo schema.

405

AllowEilutėNeprivalomas

Šio ištekliaus palaikomi HTTP metodai.

429, 503

Retry-AfterSveikasis skaičiusNeprivalomas

Mažiausias laukimo laikas prieš kartojant, sekundėmis.

minimum: 0