Gå til innhold
ShopentlyLearn

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

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

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

limitHeltallValgfritt

Maksimalt antall oppføringer på denne siden.

minimum: 1maximum: 100
Standard: 50Eksempel: 20
cursorStreng nullValgfritt

Ugjennomsiktig fortsettelsesverdi returnert av forrige side.

Streng:minLength: 1maxLength: 1024
numberStreng nullValgfritt

Ordre- eller saksnummer beregnet på mennesker.

Streng:minLength: 1maxLength: 48
status_idStreng nullValgfritt

Identifikator hentet fra den relevante statuslisten.

Begrensninger · Streng 1
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
payment_statusStreng nullValgfritt

Registrert betalingsstatus.

Begrensninger · Streng 1
enum
["unpaid", "paid", "failed", "refunded"]
created_fromStreng nullValgfritt

Start på filteret for opprettelsestidspunkt.

Streng:format: "date-time"
created_toStreng nullValgfritt

Slutt på filteret for opprettelsestidspunkt.

Streng:format: "date-time"

Denne operasjonen godtar ikke JSON-innhold.

Svar

Svar 200

dataArray <OrderSummaryData > Obligatorisk

Innholdet i et vellykket svar.

Felter · data

OrderSummaryData

created_atStrengObligatorisk

Opprettelsestidspunkt.

format: "date-time"
customerCustomerData Obligatorisk

Kundeinformasjon registrert for denne ressursen.

deliveryShippingData Obligatorisk

Leveringsmetode og tilhørende informasjon.

discount_amountMoneyData Obligatorisk

Desimalbeløp kodet som en JSON-streng; null bare der det er tillatt.

idStrengObligatorisk

Ressursidentifikator; behold den slik den returneres.

lifecycle_stateOrderLifecycleState Obligatorisk

Tilstand i forretningslivssyklusen.

localeStrengObligatorisk

Språk valgt for denne forespørselen.

market_idStrengObligatorisk

Markedsidentifikator returnert av kontekstendepunktet.

numberStrengObligatorisk

Ordre- eller saksnummer beregnet på mennesker.

paymentPaymentData Obligatorisk

Betalingsopplysninger registrert for ordren.

prices_include_taxBoolsk verdiObligatorisk

Om oppgitte priser inkluderer avgifter.

shipping_discount_amountMoneyData Obligatorisk

Desimalbeløp kodet som en JSON-streng; null bare der det er tillatt.

statusOrderStatusData Obligatorisk

Status som godtas av denne bestemte operasjonen.

subtotalMoneyData Obligatorisk

Beløp før de ytterligere bestanddelene vist i svaret.

taxMoneyData Obligatorisk

Avgiftsinformasjon.

tax_country_codeStreng nullObligatorisk

Avgiftsland · Lagrede ordredata · ISO 3166-1 alpha-2; null.

totalMoneyData Obligatorisk

Samlet beløp.

metaContextPageMeta ContextMeta PageMeta RequestMeta Obligatorisk

Svarmetadata.

Felter · meta

ContextPageMeta

localeStrengObligatorisk

Språk valgt for denne forespørselen.

market_codeStrengObligatorisk

Markedskode returnert av kontekstendepunktet.

market_idStrengObligatorisk

Markedsidentifikator returnert av kontekstendepunktet.

paginationPagination Obligatorisk

Metadata for markørbasert sideinndeling.

request_idStrengObligatorisk

Saksidentifikator; i svarmetadata identifiserer den HTTP-forespørselen.

minLength: 1maxLength: 100

ContextMeta

localeStrengObligatorisk

Språk valgt for denne forespørselen.

market_codeStrengObligatorisk

Markedskode returnert av kontekstendepunktet.

market_idStrengObligatorisk

Markedsidentifikator returnert av kontekstendepunktet.

request_idStrengObligatorisk

Saksidentifikator; i svarmetadata identifiserer den HTTP-forespørselen.

minLength: 1maxLength: 100

PageMeta

paginationPagination Obligatorisk

Metadata for markørbasert sideinndeling.

request_idStrengObligatorisk

Saksidentifikator; i svarmetadata identifiserer den HTTP-forespørselen.

minLength: 1maxLength: 100

RequestMeta

request_idStrengObligatorisk

Saksidentifikator; i svarmetadata identifiserer den HTTP-forespørselen.

minLength: 1maxLength: 100
Eksempel på svar

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

Autentiseringsmetode serveren krever.

405

AllowStrengValgfritt

HTTP-metoder denne ressursen støtter.

429, 503

Retry-AfterHeltallValgfritt

Minste ventetid før neste forsøk, i sekunder.

minimum: 0