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
{
"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 getalOptioneelMaximaal aantal records op deze pagina.
minimum:1maximum:100cursorTekenreeks nullOptioneelOndoorzichtige vervolgwaarde die de vorige pagina heeft teruggegeven.
Tekenreeks:minLength:1maxLength:1024numberTekenreeks nullOptioneelBestel- of aanvraagnummer voor menselijk gebruik.
Tekenreeks:minLength:1maxLength:48status_idTekenreeks nullOptioneelIdentificatie uit de bijbehorende statuslijst.
Beperkingen · Tekenreeks 1
pattern"^[a-z0-9][a-z0-9_-]{0,62}$"
payment_statusTekenreeks nullOptioneelVastgelegde betaalstatus.
Beperkingen · Tekenreeks 1
enum["unpaid", "paid", "failed", "refunded"]
created_fromTekenreeks nullOptioneelBegin van het filter op aanmaaktijd.
Tekenreeks:format:"date-time"created_toTekenreeks nullOptioneelEinde van het filter op aanmaaktijd.
Tekenreeks:format:"date-time"
Deze bewerking accepteert geen JSON-inhoud.
Antwoorden
Antwoord 200
Volledig model: ApiResponse_list_OrderSummaryData__
dataArray <OrderSummaryData> VerplichtGegevens van een geslaagd antwoord.
Velden ·
dataVolledig model:
OrderSummaryDatacreated_atTekenreeksVerplichtTijdstip van aanmaak.
format:"date-time"customerCustomerDataVerplichtKlantgegevens die voor deze resource zijn vastgelegd.
deliveryShippingDataVerplichtVerzendmethode en bijbehorende informatie.
discount_amountMoneyDataVerplichtDecimaal bedrag als JSON-tekenreeks; null uitsluitend waar toegestaan.
idTekenreeksVerplichtResource-identificatie; bewaar deze zoals teruggegeven.
lifecycle_stateOrderLifecycleStateVerplichtStatus in de zakelijke levenscyclus.
localeTekenreeksVerplichtTaal die voor dit verzoek is geselecteerd.
market_idTekenreeksVerplichtMarktidentificatie die het contextendpoint teruggeeft.
numberTekenreeksVerplichtBestel- of aanvraagnummer voor menselijk gebruik.
paymentPaymentDataVerplichtBetaalgegevens die bij de bestelling zijn vastgelegd.
prices_include_taxBooleaanse waardeVerplichtOf de vermelde prijzen inclusief belasting zijn.
shipping_discount_amountMoneyDataVerplichtDecimaal bedrag als JSON-tekenreeks; null uitsluitend waar toegestaan.
statusOrderStatusDataVerplichtStatus die deze specifieke bewerking accepteert.
subtotalMoneyDataVerplichtBedrag vóór de aanvullende componenten in het antwoord.
taxMoneyDataVerplichtBelastinggegevens.
tax_country_codeTekenreeks nullVerplichtBelastingland · Opgeslagen bestelgegevens · ISO 3166-1 alpha-2; null.
totalMoneyDataVerplichtTotaalbedrag.
metaContextPageMetaContextMetaPageMetaRequestMetaVerplichtMetadata van het antwoord.
Velden ·
metaVolledig model:
ContextPageMetalocaleTekenreeksVerplichtTaal die voor dit verzoek is geselecteerd.
market_codeTekenreeksVerplichtMarktcode die het contextendpoint teruggeeft.
market_idTekenreeksVerplichtMarktidentificatie die het contextendpoint teruggeeft.
paginationPaginationVerplichtMetadata voor cursorpaginering.
request_idTekenreeksVerplichtAanvraagidentificatie; in antwoordmetadata identificeert dit het HTTP-verzoek.
minLength:1maxLength:100
localeTekenreeksVerplichtTaal die voor dit verzoek is geselecteerd.
market_codeTekenreeksVerplichtMarktcode die het contextendpoint teruggeeft.
market_idTekenreeksVerplichtMarktidentificatie die het contextendpoint teruggeeft.
request_idTekenreeksVerplichtAanvraagidentificatie; in antwoordmetadata identificeert dit het HTTP-verzoek.
minLength:1maxLength:100
paginationPaginationVerplichtMetadata voor cursorpaginering.
request_idTekenreeksVerplichtAanvraagidentificatie; in antwoordmetadata identificeert dit het HTTP-verzoek.
minLength:1maxLength:100
request_idTekenreeksVerplichtAanvraagidentificatie; in antwoordmetadata identificeert dit het HTTP-verzoek.
minLength:1maxLength:100
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-AuthenticateTekenreeksOptioneelAuthenticatieschema dat de server vereist.
405
AllowTekenreeksOptioneelHTTP-methoden die deze resource ondersteunt.
429, 503
Retry-AfterGeheel getalOptioneelMinimale wachttijd voordat u het opnieuw probeert, in seconden.
minimum:0