Preskoči na sadržaj
ShopentlyLearn

Popis — Narudžbe

Pročitajte podatke iz „Narudžbe“. Rezultat ovisi o parametrima ove radnje.

GET/api/v1/orders

Autentifikacija
Bearer
Dostupno od
BASIC
Potrebne ovlasti
orders.order:read

Primjeri koda

Primjer zahtjeva

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

Primjer 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 funkcionira

  • Zbirka pruža sažetke narudžbi i filtre za broj, status, status plaćanja i vrijeme izrade.
  • Popis i pojedinosti narudžbe sadrže delivery.dates. Planirani datumi YYYY-MM-DD ne potvrđuju otpremu. Trenutačni datumi imaju prednost; starije narudžbe koriste spremljenu procjenu. Izbrisane ili nepoznate vrijednosti su null. Pojedinosti sadrže i sve stavke i slike proizvoda.
  • Valjane identifikatore statusa dohvatite s /api/v1/order-statuses.
  • Status narudžbe i status plaćanja koriste zasebne PATCH krajnje točke i ovlasti.
  • Promjena evidentiranog statusa plaćanja ne tereti karticu niti izvršava povrat preko pružatelja platnih usluga.

Narudžba · Ukupni iznosi

Iznosi i stope dolaze iz spremljene narudžbe, uključujući ispravke stavki. Nepoznati povijesni podaci su null i ne zamjenjuju se trenutačnim stopama iz kataloga. Iznosi ostaju decimalni nizovi.

Popis vraća sažetke. Za svaki rezultat dohvatite GET /api/v1/orders/{order_id} za potpune financijske podatke. Ponavljanja GET ograničena su i poštuju Retry-After. Izvoz po datumu izrade ne sinkronizira kasnije ispravke.

Parametri

Parametri upita

limitCijeli brojNeobavezno

Najveći broj zapisa na ovoj stranici.

minimum: 1maximum: 100
Zadano: 50Primjer: 20
cursorNiz znakova nullNeobavezno

Neprozirna vrijednost za nastavak koju je vratila prethodna stranica.

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

Broj narudžbe ili zahtjeva namijenjen korisniku.

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

Identifikator dobiven iz odgovarajućeg šifrarnika statusa.

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

Zabilježeni status plaćanja.

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

Početak filtra vremena izrade.

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

Kraj filtra vremena izrade.

Niz znakova:format: "date-time"

Ova operacija ne prihvaća JSON tijelo.

Odgovori

Odgovor 200

dataPolje vrijednosti <OrderSummaryData > Obvezno

Podaci uspješnog odgovora.

Polja · data

OrderSummaryData

created_atNiz znakovaObvezno

Vrijeme izrade.

format: "date-time"
customerCustomerData Obvezno

Podaci kupca zabilježeni za ovaj resurs.

deliveryShippingData Obvezno

Način dostave i povezani podaci.

discount_amountMoneyData Obvezno

Decimalni iznos kodiran kao JSON niz znakova; null samo gdje je dopušten.

idNiz znakovaObvezno

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

lifecycle_stateOrderLifecycleState Obvezno

Stanje poslovnog životnog ciklusa.

localeNiz znakovaObvezno

Jezik odabran za ovaj zahtjev.

market_idNiz znakovaObvezno

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

numberNiz znakovaObvezno

Broj narudžbe ili zahtjeva namijenjen korisniku.

paymentPaymentData Obvezno

Podaci o plaćanju zabilježeni za narudžbu.

prices_include_taxLogička vrijednostObvezno

Uključuju li navedene cijene porez.

shipping_discount_amountMoneyData Obvezno

Decimalni iznos kodiran kao JSON niz znakova; null samo gdje je dopušten.

statusOrderStatusData Obvezno

Status prihvaćen za ovu određenu operaciju.

subtotalMoneyData Obvezno

Iznos prije dodatnih sastavnica prikazanih u odgovoru.

taxMoneyData Obvezno

Porezni podaci.

tax_country_codeNiz znakova nullObvezno

Porezna država · Spremljeni podaci narudžbe · ISO 3166-1 alpha-2; null.

totalMoneyData Obvezno

Ukupan iznos.

metaContextPageMeta ContextMeta PageMeta RequestMeta Obvezno

Metapodaci odgovora.

Polja · meta

ContextPageMeta

localeNiz znakovaObvezno

Jezik odabran za ovaj zahtjev.

market_codeNiz znakovaObvezno

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

market_idNiz znakovaObvezno

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

paginationPagination Obvezno

Metapodaci straničenja pomoću kursora.

request_idNiz znakovaObvezno

Identifikator zahtjeva; u metapodacima odgovora označava HTTP zahtjev.

minLength: 1maxLength: 100

ContextMeta

localeNiz znakovaObvezno

Jezik odabran za ovaj zahtjev.

market_codeNiz znakovaObvezno

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

market_idNiz znakovaObvezno

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

request_idNiz znakovaObvezno

Identifikator zahtjeva; u metapodacima odgovora označava HTTP zahtjev.

minLength: 1maxLength: 100

PageMeta

paginationPagination Obvezno

Metapodaci straničenja pomoću kursora.

request_idNiz znakovaObvezno

Identifikator zahtjeva; u metapodacima odgovora označava HTTP zahtjev.

minLength: 1maxLength: 100

RequestMeta

request_idNiz znakovaObvezno

Identifikator zahtjeva; u metapodacima odgovora označava HTTP zahtjev.

minLength: 1maxLength: 100
Primjer odgovora

HTTP status

200
Uspješan odgovor Shema
400
Nevaljan zahtjev
401
Potrebna je autentikacija
403
Pristup odbijen
404
Resurs nije pronađen
409
Sukob verzija
422
Provjera nije uspjela
429
Prekoračeno ograničenje zahtjeva
Ostali HTTP statusi (7)
405
Metoda nije dopuštena
413
Zahtjev je prevelik
415
Nepodržan format
500
Pogreška poslužitelja
502
Pogreška API pristupnika
503
Usluga nije dostupna
504
Istek vremena

Katalog pogrešaka: ErrorResponse

Zaglavlja

401

WWW-AuthenticateNiz znakovaNeobavezno

Shema autentifikacije koju zahtijeva poslužitelj.

405

AllowNiz znakovaNeobavezno

HTTP metode koje ovaj resurs podržava.

429, 503

Retry-AfterCijeli brojNeobavezno

Najkraće čekanje prije ponavljanja, u sekundama.

minimum: 0