Εκπτώσεις · Κατάσταση
Εκπτώσεις · Κατάσταση. Κάθε κωδικός πρέπει να επιτρέπει συνδυασμούς. Οι εκπτώσεις εφαρμόζονται διαδοχικά.
PATCH/api/v1/discounts/coupons/{identity}/status
- Έλεγχος ταυτότητας
Bearer- Διαθέσιμο από
- STANDARD
- Απαιτούμενα δικαιώματα
discounts.coupons:change_status
Παραδείγματα κώδικα
Παράδειγμα αιτήματος
cURL
: "${SHOPENTLY_SHOP_URL:?}"
curl --disable --globoff --fail-with-body --silent --show-error \
--proto '=https' --connect-timeout 5 --max-time 30 \
--request PATCH \
--header "Authorization: Bearer ${SHOPENTLY_ACCESS_TOKEN:?}" \
--header 'Idempotency-Key: learn-campaign_status_api_v1_discounts_coupons__identity__status_patch' \
--header 'Content-Type: application/json' \
--data-raw '{
"enabled": false,
"expected_version": 1
}' \
--url "${SHOPENTLY_SHOP_URL%/}"/api/v1/discounts/coupons/example-campaign/status
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 = ['Idempotency-Key: learn-campaign_status_api_v1_discounts_coupons__identity__status_patch', 'Content-Type: application/json'];
$headers[] = 'Authorization: Bearer ' . $credential;
$responseHeaders = [];
$handle = curl_init($baseUrl . '/api/v1/discounts/coupons/example-campaign/status');
curl_setopt_array($handle, [
CURLOPT_CUSTOMREQUEST => 'PATCH',
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);
},
]);
curl_setopt($handle, CURLOPT_POSTFIELDS, '{
"enabled": false,
"expected_version": 1
}');
$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 = {'Idempotency-Key': 'learn-campaign_status_api_v1_discounts_coupons__identity__status_patch'}
headers["Authorization"] = 'Bearer' + " " + credential
body = '{\n "enabled": false,\n "expected_version": 1\n}'
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(
'PATCH', base_url + '/api/v1/discounts/coupons/example-campaign/status', 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": {
"deleted": false,
"id": "example-campaign",
"version": null
},
"meta": {
"locale": "example",
"market_code": "example",
"market_id": "poland",
"pagination": {
"has_more": false,
"limit": 1,
"next_cursor": null
},
"request_id": "learn-example-request"
}
}
Επισκόπηση
Τα επιλεγμένα προϊόντα και οι κατηγορίες συνδυάζονται. Οι κατηγορίες περιλαμβάνουν τα προϊόντα που ανήκουν άμεσα σε αυτές.
Παράμετροι
Παράμετροι διαδρομής
identityΣυμβολοσειράΥποχρεωτικόΑναγνωριστικό που χρησιμοποιείται στη διαδρομή αυτού του πόρου.
Περιορισμοί
pattern"^[a-z0-9][a-z0-9_-]{0,62}$"
Κεφαλίδες αιτήματος
Idempotency-KeyΣυμβολοσειράΥποχρεωτικόΜοναδικό αναγνωριστικό μίας λογικής πράξης εγγραφής.
minLength:1maxLength:128Περιορισμοί
pattern"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
Περιεχόμενο αιτήματος
application/json · Υποχρεωτικό
CampaignStatus
enabledΛογική τιμήΥποχρεωτικόΔείχνει αν η ρύθμιση είναι ενεργοποιημένη.
expected_versionΑκέραιοςΥποχρεωτικόΈκδοση που διαβάστηκε πριν από την εγγραφή· αν δεν συμφωνεί, η ενημέρωση απορρίπτεται.
minimum:1maximum:9223372036854775807
Αποκρίσεις
Απόκριση 200
Πλήρες μοντέλο: ApiResponse_MutationData_
dataMutationDataΥποχρεωτικόΔεδομένα επιτυχούς απόκρισης.
Πεδία ·
datadeletedΛογική τιμήΥποχρεωτικόΔείχνει αν εφαρμόστηκε η διαγραφή.
idΣυμβολοσειράΥποχρεωτικόΑναγνωριστικό πόρου· διατηρήστε το ακριβώς όπως επιστρέφεται.
versionΑκέραιος nullΥποχρεωτικόΈκδοση πόρου για έλεγχο ταυτόχρονων εγγραφών.
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