Pređi na sadržaj
ShopentlyLearn

Prikaži listu — Porudžbine

Pročitajte podatke iz „Porudžbine“. Rezultat zavisi od parametara ove radnje.

GET/api/v1/orders

Autentifikacija
Bearer
Dostupno od
BASIC
Potrebna ovlašćenja
orders.order:read

Primeri koda

Primer zahteva

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

Primer odgovora 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"
  }
}

Kako funkcioniše

  • Kolekcija pruža sažetke porudžbina i filtere za broj, status, status plaćanja i vreme kreiranja.
  • Lista i detalji porudžbine sadrže delivery.dates. Planirani datumi YYYY-MM-DD ne potvrđuju otpremu. Trenutni datumi imaju prednost; starije porudžbine koriste sačuvanu procenu. Obrisane ili nepoznate vrednosti su null. Detalji sadrže i sve stavke i slike proizvoda.
  • Valjane identifikatore statusa dohvatite s /api/v1/order-statuses.
  • Status porudžbine i status plaćanja koriste posebne PATCH krajnje tačke i ovlašćenja.
  • Promena evidentiranog statusa plaćanja ne tereti karticu niti izvršava povrat preko pružaoca platnih usluga.

Porudžbina · Ukupni iznosi

Iznosi i stope potiču iz sačuvane porudžbine, uključujući ispravke stavki. Nedostajući istorijski podaci su null i ne zamenjuju se trenutnim stopama iz kataloga. Iznosi ostaju decimalni nizovi.

Lista vraća sažetke. Za svaki rezultat preuzmite GET /api/v1/orders/{order_id} za potpune finansijske podatke. Ponavljanja GET su ograničena i poštuju Retry-After. Izvoz po datumu kreiranja ne sinhronizuje kasnije ispravke.

Parametri

Parametri upita

limitCeli brojOpciono

Najveći broj zapisa na ovoj stranici.

minimum: 1maximum: 100
Podrazumevano: 50Primer: 20
cursorNiz znakova nullOpciono

Neprozirna vrednost za nastavak koju je vratila prethodna stranica.

Niz znakova:minLength: 1maxLength: 1024
numberNiz znakova nullOpciono

Broj porudžbine ili zahteva namenjen korisniku.

Niz znakova:minLength: 1maxLength: 48
status_idNiz znakova nullOpciono

Identifikator dobijen iz odgovarajućeg šifrarnika statusa.

Ograničenja · Niz znakova 1
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
payment_statusNiz znakova nullOpciono

Zabeleženi status plaćanja.

Ograničenja · Niz znakova 1
enum
["unpaid", "paid", "failed", "refunded"]
created_fromNiz znakova nullOpciono

Početak filtera vremena kreiranja.

Niz znakova:format: "date-time"
created_toNiz znakova nullOpciono

Kraj filtera vremena kreiranja.

Niz znakova:format: "date-time"

Ova operacija ne prihvata JSON telo.

Odgovori

Odgovor 200

dataNiz vrednosti <OrderSummaryData > Obavezno

Podaci uspešnog odgovora.

Polja · data

OrderSummaryData

created_atNiz znakovaObavezno

Vreme kreiranja.

format: "date-time"
customerCustomerData Obavezno

Podaci kupca zabeleženi za ovaj resurs.

deliveryShippingData Obavezno

Način dostave i povezani podaci.

discount_amountMoneyData Obavezno

Decimalni iznos kodiran kao JSON niz znakova; null samo gde je dozvoljen.

idNiz znakovaObavezno

Identifikator resursa; sačuvajte ga u vraćenom obliku.

lifecycle_stateOrderLifecycleState Obavezno

Stanje poslovnog životnog ciklusa.

localeNiz znakovaObavezno

Jezik odabran za ovaj zahtev.

market_idNiz znakovaObavezno

Identifikator tržišta vraćen s krajnje tačke konteksta.

numberNiz znakovaObavezno

Broj porudžbine ili zahteva namenjen korisniku.

paymentPaymentData Obavezno

Podaci o plaćanju zabeleženi za porudžbinu.

prices_include_taxLogička vrednostObavezno

Da li uključuju navedene cene porez.

shipping_discount_amountMoneyData Obavezno

Decimalni iznos kodiran kao JSON niz znakova; null samo gde je dozvoljen.

statusOrderStatusData Obavezno

Status prihvaćen za ovu određenu operaciju.

subtotalMoneyData Obavezno

Iznos pre dodatnih sastavnica prikazanih u odgovoru.

taxMoneyData Obavezno

Poreski podaci.

tax_country_codeNiz znakova nullObavezno

Poreska država · Sačuvani podaci porudžbine · ISO 3166-1 alpha-2; null.

totalMoneyData Obavezno

Ukupan iznos.

metaContextPageMeta ContextMeta PageMeta RequestMeta Obavezno

Metapodaci odgovora.

Polja · meta

ContextPageMeta

localeNiz znakovaObavezno

Jezik odabran za ovaj zahtev.

market_codeNiz znakovaObavezno

Kod tržišta vraćen s krajnje tačke konteksta.

market_idNiz znakovaObavezno

Identifikator tržišta vraćen s krajnje tačke konteksta.

paginationPagination Obavezno

Metapodaci paginacije pomoću kursora.

request_idNiz znakovaObavezno

Identifikator zahteva; u metapodacima odgovora označava HTTP zahtev.

minLength: 1maxLength: 100

ContextMeta

localeNiz znakovaObavezno

Jezik odabran za ovaj zahtev.

market_codeNiz znakovaObavezno

Kod tržišta vraćen s krajnje tačke konteksta.

market_idNiz znakovaObavezno

Identifikator tržišta vraćen s krajnje tačke konteksta.

request_idNiz znakovaObavezno

Identifikator zahteva; u metapodacima odgovora označava HTTP zahtev.

minLength: 1maxLength: 100

PageMeta

paginationPagination Obavezno

Metapodaci paginacije pomoću kursora.

request_idNiz znakovaObavezno

Identifikator zahteva; u metapodacima odgovora označava HTTP zahtev.

minLength: 1maxLength: 100

RequestMeta

request_idNiz znakovaObavezno

Identifikator zahteva; u metapodacima odgovora označava HTTP zahtev.

minLength: 1maxLength: 100
Primer odgovora

HTTP status

200
Uspešan odgovor Šema
400
Nevažeći zahtev
401
Potrebna je autentifikacija
403
Pristup odbijen
404
Resurs nije pronađen
409
Sukob verzija
422
Provera nije uspela
429
Prekoračeno ograničenje zahteva
Ostali HTTP statusi (7)
405
Metoda nije dozvoljena
413
Zahtev je prevelik
415
Nepodržan format
500
Greška servera
502
Greška API mrežnog prolaza
503
Usluga nije dostupna
504
Istek vremena

Katalog grešaka: ErrorResponse

Zaglavlja

401

WWW-AuthenticateNiz znakovaOpciono

Šema autentifikacije koju zahteva server.

405

AllowNiz znakovaOpciono

HTTP metode koje ovaj resurs podržava.

429, 503

Retry-AfterCeli brojOpciono

Najkraće čekanje pre ponavljanja, u sekundama.

minimum: 0