Λίστα — Παραγγελίες
Διαβάστε δεδομένα από «Παραγγελίες». Το αποτέλεσμα εξαρτάται από τις παραμέτρους της ενέργειας.
GET/api/v1/orders
- Έλεγχος ταυτότητας
Bearer- Διαθέσιμο από
- BASIC
- Απαιτούμενα δικαιώματα
orders.order:read
Παραδείγματα κώδικα
Παράδειγμα αιτήματος
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))
Παράδειγμα απόκρισης 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"
}
}
Αρχές
- Η συλλογή παρέχει συνόψεις παραγγελιών και φίλτρα για αριθμό, κατάσταση, κατάσταση πληρωμής και χρόνο δημιουργίας.
- Η λίστα και οι λεπτομέρειες παραγγελιών περιλαμβάνουν delivery.dates. Οι ημερομηνίες YYYY-MM-DD είναι προγραμματισμένες και δεν επιβεβαιώνουν αποστολή. Οι τρέχουσες ημερομηνίες υπερισχύουν· οι παλιές παραγγελίες χρησιμοποιούν την αποθηκευμένη εκτίμηση. Διαγραμμένες ή άγνωστες τιμές είναι null. Οι λεπτομέρειες περιλαμβάνουν επίσης όλες τις γραμμές και εικόνες προϊόντων.
- Λάβετε έγκυρα αναγνωριστικά κατάστασης από το /api/v1/order-statuses.
- Η κατάσταση παραγγελίας και η κατάσταση πληρωμής χρησιμοποιούν ξεχωριστά σημεία πρόσβασης PATCH και δικαιώματα.
- Η αλλαγή της καταγεγραμμένης κατάστασης πληρωμής δεν χρεώνει κάρτα ούτε εκτελεί επιστροφή μέσω παρόχου πληρωμών.
Παραγγελία · Σύνολα
Τα ποσά και οι συντελεστές προέρχονται από την αποθηκευμένη παραγγελία, μαζί με τις διορθώσεις γραμμών. Τα άγνωστα ιστορικά στοιχεία είναι null και δεν αντικαθίστανται από τρέχοντες συντελεστές καταλόγου. Τα ποσά παραμένουν δεκαδικές συμβολοσειρές.
Η λίστα επιστρέφει συνόψεις. Ανακτήστε GET /api/v1/orders/{order_id} για κάθε αποτέλεσμα για πλήρη οικονομικά στοιχεία. Οι επαναλήψεις GET είναι περιορισμένες και τηρούν το Retry-After. Η εξαγωγή βάσει ημερομηνίας δημιουργίας δεν συγχρονίζει μεταγενέστερες διορθώσεις.
Παράμετροι
Παράμετροι ερωτήματος
limitΑκέραιοςΠροαιρετικόΜέγιστο πλήθος εγγραφών σε αυτή τη σελίδα.
minimum:1maximum:100cursorΣυμβολοσειρά nullΠροαιρετικόΑδιαφανής τιμή συνέχισης που επιστρέφει η προηγούμενη σελίδα.
Συμβολοσειρά:minLength:1maxLength:1024numberΣυμβολοσειρά nullΠροαιρετικόΑριθμός παραγγελίας ή αιτήματος που εμφανίζεται στον χρήστη.
Συμβολοσειρά:minLength:1maxLength:48status_idΣυμβολοσειρά nullΠροαιρετικόΑναγνωριστικό από το αντίστοιχο λεξικό καταστάσεων.
Περιορισμοί · Συμβολοσειρά 1
pattern"^[a-z0-9][a-z0-9_-]{0,62}$"
payment_statusΣυμβολοσειρά nullΠροαιρετικόΚαταγεγραμμένη κατάσταση πληρωμής.
Περιορισμοί · Συμβολοσειρά 1
enum["unpaid", "paid", "failed", "refunded"]
created_fromΣυμβολοσειρά nullΠροαιρετικόΑρχή του φίλτρου χρόνου δημιουργίας.
Συμβολοσειρά:format:"date-time"created_toΣυμβολοσειρά nullΠροαιρετικόΤέλος του φίλτρου χρόνου δημιουργίας.
Συμβολοσειρά:format:"date-time"
Αυτή η λειτουργία δεν δέχεται περιεχόμενο JSON.
Αποκρίσεις
Απόκριση 200
Πλήρες μοντέλο: ApiResponse_list_OrderSummaryData__
dataΠίνακας <OrderSummaryData> ΥποχρεωτικόΔεδομένα επιτυχούς απόκρισης.
Πεδία ·
dataΠλήρες μοντέλο:
OrderSummaryDatacreated_atΣυμβολοσειράΥποχρεωτικόΧρόνος δημιουργίας.
format:"date-time"customerCustomerDataΥποχρεωτικόΣτοιχεία πελάτη που έχουν καταγραφεί για αυτόν τον πόρο.
deliveryShippingDataΥποχρεωτικόΜέθοδος παράδοσης και σχετικές πληροφορίες.
discount_amountMoneyDataΥποχρεωτικόΔεκαδικό ποσό ως συμβολοσειρά JSON· null μόνο όπου επιτρέπεται.
idΣυμβολοσειράΥποχρεωτικόΑναγνωριστικό πόρου· διατηρήστε το ακριβώς όπως επιστρέφεται.
lifecycle_stateOrderLifecycleStateΥποχρεωτικόΚατάσταση στον επιχειρησιακό κύκλο ζωής.
localeΣυμβολοσειράΥποχρεωτικόΓλώσσα που επιλέχθηκε για αυτό το αίτημα.
market_idΣυμβολοσειράΥποχρεωτικόΑναγνωριστικό αγοράς που επιστρέφει το endpoint πλαισίου.
numberΣυμβολοσειράΥποχρεωτικόΑριθμός παραγγελίας ή αιτήματος που εμφανίζεται στον χρήστη.
paymentPaymentDataΥποχρεωτικόΣτοιχεία πληρωμής που έχουν καταγραφεί για την παραγγελία.
prices_include_taxΛογική τιμήΥποχρεωτικόΔείχνει αν οι τιμές περιλαμβάνουν φόρο.
shipping_discount_amountMoneyDataΥποχρεωτικόΔεκαδικό ποσό ως συμβολοσειρά JSON· null μόνο όπου επιτρέπεται.
statusOrderStatusDataΥποχρεωτικόΚατάσταση αποδεκτή από τη συγκεκριμένη λειτουργία.
subtotalMoneyDataΥποχρεωτικόΠοσό πριν από τα πρόσθετα στοιχεία που εμφανίζονται στην απόκριση.
taxMoneyDataΥποχρεωτικόΠληροφορίες φόρου.
tax_country_codeΣυμβολοσειρά nullΥποχρεωτικόΦορολογική χώρα · Αποθηκευμένα στοιχεία παραγγελίας · ISO 3166-1 alpha-2; null.
totalMoneyDataΥποχρεωτικόΣυνολικό ποσό.
metaContextPageMetaContextMetaPageMetaRequestMetaΥποχρεωτικόΜεταδεδομένα απόκρισης.
Πεδία ·
metaΠλήρες μοντέλο:
ContextPageMetalocaleΣυμβολοσειράΥποχρεωτικόΓλώσσα που επιλέχθηκε για αυτό το αίτημα.
market_codeΣυμβολοσειράΥποχρεωτικόΚωδικός αγοράς που επιστρέφει το endpoint πλαισίου.
market_idΣυμβολοσειράΥποχρεωτικόΑναγνωριστικό αγοράς που επιστρέφει το endpoint πλαισίου.
paginationPaginationΥποχρεωτικόΜεταδεδομένα σελιδοποίησης με cursor.
request_idΣυμβολοσειράΥποχρεωτικόΑναγνωριστικό αιτήματος· στα μεταδεδομένα απόκρισης ταυτοποιεί το αίτημα HTTP.
minLength:1maxLength:100
localeΣυμβολοσειράΥποχρεωτικόΓλώσσα που επιλέχθηκε για αυτό το αίτημα.
market_codeΣυμβολοσειράΥποχρεωτικόΚωδικός αγοράς που επιστρέφει το endpoint πλαισίου.
market_idΣυμβολοσειράΥποχρεωτικόΑναγνωριστικό αγοράς που επιστρέφει το endpoint πλαισίου.
request_idΣυμβολοσειράΥποχρεωτικόΑναγνωριστικό αιτήματος· στα μεταδεδομένα απόκρισης ταυτοποιεί το αίτημα HTTP.
minLength:1maxLength:100
paginationPaginationΥποχρεωτικόΜεταδεδομένα σελιδοποίησης με cursor.
request_idΣυμβολοσειράΥποχρεωτικόΑναγνωριστικό αιτήματος· στα μεταδεδομένα απόκρισης ταυτοποιεί το αίτημα HTTP.
minLength:1maxLength:100
request_idΣυμβολοσειράΥποχρεωτικόΑναγνωριστικό αιτήματος· στα μεταδεδομένα απόκρισης ταυτοποιεί το αίτημα HTTP.
minLength:1maxLength:100
Κατάσταση HTTP
200- Επιτυχής απόκριση Σχήμα
400- Μη έγκυρο αίτημα
401- Απαιτείται ταυτοποίηση
403- Δεν επιτρέπεται η πρόσβαση
404- Ο πόρος δεν βρέθηκε
409- Διένεξη έκδοσης
422- Αποτυχία επικύρωσης
429- Υπέρβαση ορίου αιτημάτων
Άλλες καταστάσεις HTTP (7)
405- Η μέθοδος δεν επιτρέπεται
413- Πολύ μεγάλο αίτημα
415- Μη υποστηριζόμενος τύπος
500- Σφάλμα διακομιστή
502- Σφάλμα πύλης API
503- Μη διαθέσιμη υπηρεσία
504- Υπέρβαση χρόνου αναμονής
Κατάλογος σφαλμάτων: ErrorResponse
Κεφαλίδες
401
WWW-AuthenticateΣυμβολοσειράΠροαιρετικόΣχήμα ελέγχου ταυτότητας που απαιτεί ο διακομιστής.
405
AllowΣυμβολοσειράΠροαιρετικόΜέθοδοι HTTP που υποστηρίζει αυτός ο πόρος.
429, 503
Retry-AfterΑκέραιοςΠροαιρετικόΕλάχιστος χρόνος αναμονής πριν από νέα προσπάθεια, σε δευτερόλεπτα.
minimum:0