Vis liste — Ordrer
Les data fra «Ordrer». Resultatet avhenger av parameterne for operasjonen.
GET/api/v1/orders
- Autentisering
Bearer- Tilgjengelig fra
- BASIC
- Nødvendige tilganger
orders.order:read
Kodeeksempler
Eksempel på forespørsel
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))
Eksempel på svar 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"
}
}
Prinsipper
- Samlingen gir ordreoversikter og filtre for nummer, status, betalingsstatus og opprettelsestidspunkt.
- Ordrelisten og detaljene inneholder delivery.dates. Datoer i YYYY-MM-DD er planlagte og bekrefter ikke forsendelse. Gjeldende datoer har forrang; eldre ordrer bruker det lagrede estimatet. Slettede eller ukjente verdier er null. Detaljene inneholder også alle ordrelinjer og produktbilder.
- Hent gyldige statusidentifikatorer fra /api/v1/order-statuses.
- Ordrestatus og betalingsstatus bruker separate PATCH-endepunkter og tilganger.
- Endring av registrert betalingsstatus belaster ikke et kort og utløser ikke refusjon gjennom en betalingsleverandør.
Ordre · Totalsummer
Beløp og satser kommer fra den lagrede ordren, inkludert linjerettelser. Manglende historiske opplysninger er null og erstattes ikke med katalogens gjeldende satser. Beløp forblir desimalstrenger.
Listen returnerer sammendrag. Hent GET /api/v1/orders/{order_id} for hvert resultat for å eksportere fullstendige økonomiske opplysninger. GET-forsøk er begrenset og følger Retry-After. Eksport etter opprettelsesdato synkroniserer ikke senere rettelser.
Parametere
Spørringsparametere
limitHeltallValgfrittMaksimalt antall oppføringer på denne siden.
minimum:1maximum:100cursorStreng nullValgfrittUgjennomsiktig fortsettelsesverdi returnert av forrige side.
Streng:minLength:1maxLength:1024numberStreng nullValgfrittOrdre- eller saksnummer beregnet på mennesker.
Streng:minLength:1maxLength:48status_idStreng nullValgfrittIdentifikator hentet fra den relevante statuslisten.
Begrensninger · Streng 1
pattern"^[a-z0-9][a-z0-9_-]{0,62}$"
payment_statusStreng nullValgfrittRegistrert betalingsstatus.
Begrensninger · Streng 1
enum["unpaid", "paid", "failed", "refunded"]
created_fromStreng nullValgfrittStart på filteret for opprettelsestidspunkt.
Streng:format:"date-time"created_toStreng nullValgfrittSlutt på filteret for opprettelsestidspunkt.
Streng:format:"date-time"
Denne operasjonen godtar ikke JSON-innhold.
Svar
Svar 200
Fullstendig modell: ApiResponse_list_OrderSummaryData__
dataArray <OrderSummaryData> ObligatoriskInnholdet i et vellykket svar.
Felter ·
dataFullstendig modell:
OrderSummaryDatacreated_atStrengObligatoriskOpprettelsestidspunkt.
format:"date-time"customerCustomerDataObligatoriskKundeinformasjon registrert for denne ressursen.
deliveryShippingDataObligatoriskLeveringsmetode og tilhørende informasjon.
discount_amountMoneyDataObligatoriskDesimalbeløp kodet som en JSON-streng; null bare der det er tillatt.
idStrengObligatoriskRessursidentifikator; behold den slik den returneres.
lifecycle_stateOrderLifecycleStateObligatoriskTilstand i forretningslivssyklusen.
localeStrengObligatoriskSpråk valgt for denne forespørselen.
market_idStrengObligatoriskMarkedsidentifikator returnert av kontekstendepunktet.
numberStrengObligatoriskOrdre- eller saksnummer beregnet på mennesker.
paymentPaymentDataObligatoriskBetalingsopplysninger registrert for ordren.
prices_include_taxBoolsk verdiObligatoriskOm oppgitte priser inkluderer avgifter.
shipping_discount_amountMoneyDataObligatoriskDesimalbeløp kodet som en JSON-streng; null bare der det er tillatt.
statusOrderStatusDataObligatoriskStatus som godtas av denne bestemte operasjonen.
subtotalMoneyDataObligatoriskBeløp før de ytterligere bestanddelene vist i svaret.
taxMoneyDataObligatoriskAvgiftsinformasjon.
tax_country_codeStreng nullObligatoriskAvgiftsland · Lagrede ordredata · ISO 3166-1 alpha-2; null.
totalMoneyDataObligatoriskSamlet beløp.
metaContextPageMetaContextMetaPageMetaRequestMetaObligatoriskSvarmetadata.
Felter ·
metaFullstendig modell:
ContextPageMetalocaleStrengObligatoriskSpråk valgt for denne forespørselen.
market_codeStrengObligatoriskMarkedskode returnert av kontekstendepunktet.
market_idStrengObligatoriskMarkedsidentifikator returnert av kontekstendepunktet.
paginationPaginationObligatoriskMetadata for markørbasert sideinndeling.
request_idStrengObligatoriskSaksidentifikator; i svarmetadata identifiserer den HTTP-forespørselen.
minLength:1maxLength:100
Fullstendig modell:
ContextMetalocaleStrengObligatoriskSpråk valgt for denne forespørselen.
market_codeStrengObligatoriskMarkedskode returnert av kontekstendepunktet.
market_idStrengObligatoriskMarkedsidentifikator returnert av kontekstendepunktet.
request_idStrengObligatoriskSaksidentifikator; i svarmetadata identifiserer den HTTP-forespørselen.
minLength:1maxLength:100
paginationPaginationObligatoriskMetadata for markørbasert sideinndeling.
request_idStrengObligatoriskSaksidentifikator; i svarmetadata identifiserer den HTTP-forespørselen.
minLength:1maxLength:100
Fullstendig modell:
RequestMetarequest_idStrengObligatoriskSaksidentifikator; i svarmetadata identifiserer den HTTP-forespørselen.
minLength:1maxLength:100
HTTP-status
200- Vellykket svar Skjema
400- Ugyldig forespørsel
401- Autentisering kreves
403- Tilgang nektet
404- Ressursen ble ikke funnet
409- Versjonskonflikt
422- Validering mislyktes
429- Forespørselsgrensen er overskredet
Andre HTTP-statuser (7)
405- Metoden er ikke tillatt
413- Forespørselen er for stor
415- Formatet støttes ikke
500- Serverfeil
502- Feil i API-gateway
503- Tjenesten er utilgjengelig
504- Tidsavbrudd
Feilkatalog: ErrorResponse
Headere
401
WWW-AuthenticateStrengValgfrittAutentiseringsmetode serveren krever.
405
AllowStrengValgfrittHTTP-metoder denne ressursen støtter.
429, 503
Retry-AfterHeltallValgfrittMinste ventetid før neste forsøk, i sekunder.
minimum:0