Ga naar de inhoud
ShopentlyLearn

Lijst ophalen — Bestellingen

Lees gegevens uit ‘Bestellingen’. Het resultaat hangt af van de parameters van deze bewerking.

GET/api/v1/orders

Authenticatie
Bearer
Beschikbaar vanaf
BASIC
Vereiste rechten
orders.order:read

Codevoorbeelden

Voorbeeldverzoek

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

Voorbeeldantwoord 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"
  }
}

Werking

  • De verzameling biedt besteloverzichten en filters voor nummer, status, betaalstatus en aanmaaktijd.
  • De bestellijst en details bevatten delivery.dates. Datums in YYYY-MM-DD zijn gepland en bevestigen geen verzending. Actuele datums gaan voor; oudere bestellingen gebruiken de opgeslagen schatting. Gewiste of onbekende waarden zijn null. Details bevatten ook alle bestelregels en productafbeeldingen.
  • Haal geldige statusidentificaties op via /api/v1/order-statuses.
  • Bestelstatus en betaalstatus hebben afzonderlijke PATCH-endpoints en rechten.
  • Een wijziging van de geregistreerde betaalstatus schrijft geen bedrag van een kaart af en voert geen terugbetaling via een betaalprovider uit.

Bestelling · Totalen

Bedragen en belastingtarieven komen uit de opgeslagen bestelling, inclusief regelcorrecties. Ontbrekende historische gegevens zijn null en worden niet vervangen door actuele catalogustarieven. Bedragen blijven decimale tekenreeksen.

De lijst geeft samenvattingen. Haal voor elk resultaat GET /api/v1/orders/{order_id} op voor volledige financiële details. GET-pogingen zijn begrensd en respecteren Retry-After. Export op aanmaakdatum synchroniseert latere correcties niet.

Parameters

Queryparameters

limitGeheel getalOptioneel

Maximaal aantal records op deze pagina.

minimum: 1maximum: 100
Standaard: 50Voorbeeld: 20
cursorTekenreeks nullOptioneel

Ondoorzichtige vervolgwaarde die de vorige pagina heeft teruggegeven.

Tekenreeks:minLength: 1maxLength: 1024
numberTekenreeks nullOptioneel

Bestel- of aanvraagnummer voor menselijk gebruik.

Tekenreeks:minLength: 1maxLength: 48
status_idTekenreeks nullOptioneel

Identificatie uit de bijbehorende statuslijst.

Beperkingen · Tekenreeks 1
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
payment_statusTekenreeks nullOptioneel

Vastgelegde betaalstatus.

Beperkingen · Tekenreeks 1
enum
["unpaid", "paid", "failed", "refunded"]
created_fromTekenreeks nullOptioneel

Begin van het filter op aanmaaktijd.

Tekenreeks:format: "date-time"
created_toTekenreeks nullOptioneel

Einde van het filter op aanmaaktijd.

Tekenreeks:format: "date-time"

Deze bewerking accepteert geen JSON-inhoud.

Antwoorden

Antwoord 200

dataArray <OrderSummaryData > Verplicht

Gegevens van een geslaagd antwoord.

Velden · data

OrderSummaryData

created_atTekenreeksVerplicht

Tijdstip van aanmaak.

format: "date-time"
customerCustomerData Verplicht

Klantgegevens die voor deze resource zijn vastgelegd.

deliveryShippingData Verplicht

Verzendmethode en bijbehorende informatie.

discount_amountMoneyData Verplicht

Decimaal bedrag als JSON-tekenreeks; null uitsluitend waar toegestaan.

idTekenreeksVerplicht

Resource-identificatie; bewaar deze zoals teruggegeven.

lifecycle_stateOrderLifecycleState Verplicht

Status in de zakelijke levenscyclus.

localeTekenreeksVerplicht

Taal die voor dit verzoek is geselecteerd.

market_idTekenreeksVerplicht

Marktidentificatie die het contextendpoint teruggeeft.

numberTekenreeksVerplicht

Bestel- of aanvraagnummer voor menselijk gebruik.

paymentPaymentData Verplicht

Betaalgegevens die bij de bestelling zijn vastgelegd.

prices_include_taxBooleaanse waardeVerplicht

Of de vermelde prijzen inclusief belasting zijn.

shipping_discount_amountMoneyData Verplicht

Decimaal bedrag als JSON-tekenreeks; null uitsluitend waar toegestaan.

statusOrderStatusData Verplicht

Status die deze specifieke bewerking accepteert.

subtotalMoneyData Verplicht

Bedrag vóór de aanvullende componenten in het antwoord.

taxMoneyData Verplicht

Belastinggegevens.

tax_country_codeTekenreeks nullVerplicht

Belastingland · Opgeslagen bestelgegevens · ISO 3166-1 alpha-2; null.

totalMoneyData Verplicht

Totaalbedrag.

metaContextPageMeta ContextMeta PageMeta RequestMeta Verplicht

Metadata van het antwoord.

Velden · meta

ContextPageMeta

localeTekenreeksVerplicht

Taal die voor dit verzoek is geselecteerd.

market_codeTekenreeksVerplicht

Marktcode die het contextendpoint teruggeeft.

market_idTekenreeksVerplicht

Marktidentificatie die het contextendpoint teruggeeft.

paginationPagination Verplicht

Metadata voor cursorpaginering.

request_idTekenreeksVerplicht

Aanvraagidentificatie; in antwoordmetadata identificeert dit het HTTP-verzoek.

minLength: 1maxLength: 100

ContextMeta

localeTekenreeksVerplicht

Taal die voor dit verzoek is geselecteerd.

market_codeTekenreeksVerplicht

Marktcode die het contextendpoint teruggeeft.

market_idTekenreeksVerplicht

Marktidentificatie die het contextendpoint teruggeeft.

request_idTekenreeksVerplicht

Aanvraagidentificatie; in antwoordmetadata identificeert dit het HTTP-verzoek.

minLength: 1maxLength: 100

PageMeta

paginationPagination Verplicht

Metadata voor cursorpaginering.

request_idTekenreeksVerplicht

Aanvraagidentificatie; in antwoordmetadata identificeert dit het HTTP-verzoek.

minLength: 1maxLength: 100

RequestMeta

request_idTekenreeksVerplicht

Aanvraagidentificatie; in antwoordmetadata identificeert dit het HTTP-verzoek.

minLength: 1maxLength: 100
Voorbeeldantwoord

HTTP-status

200
Geslaagd antwoord Schema
400
Ongeldig verzoek
401
Authenticatie vereist
403
Toegang geweigerd
404
Resource niet gevonden
409
Versieconflict
422
Validatie mislukt
429
Verzoeklimiet overschreden
Overige HTTP-statussen (7)
405
Methode niet toegestaan
413
Verzoek te groot
415
Niet-ondersteund formaat
500
Serverfout
502
API-gatewayfout
503
Service niet beschikbaar
504
Gatewaytime-out

Foutencatalogus: ErrorResponse

Headers

401

WWW-AuthenticateTekenreeksOptioneel

Authenticatieschema dat de server vereist.

405

AllowTekenreeksOptioneel

HTTP-methoden die deze resource ondersteunt.

429, 503

Retry-AfterGeheel getalOptioneel

Minimale wachttijd voordat u het opnieuw probeert, in seconden.

minimum: 0