Preskočiť na obsah
ShopentlyLearn

Zľavy · Načítať

Zľavy · Načítať. Každý kód musí povoľovať kombinovanie. Zľavy sa počítajú postupne.

GET/api/v1/discounts/coupons/{identity}

Overovanie
Bearer
Dostupné od plánu
STANDARD
Požadované oprávnenia
discounts.coupons:read

Príklady kódu

Príklad požiadavky

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/discounts/coupons/example-campaign

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/discounts/coupons/example-campaign');
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/discounts/coupons/example-campaign', 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))

Príklad odpovede 200

JSON
{
  "data": {
    "created_at": "2026-10-07T10:00:00Z",
    "created_by": {
      "kind": "admin",
      "label": "Editorial integration",
      "reference": "learn-api-key"
    },
    "enabled": false,
    "id": "example-campaign",
    "kind": "coupon",
    "markets": [
      {
        "currency": "PLN",
        "market_id": "poland",
        "minor_units": 0
      }
    ],
    "name": "Autumn guide offer",
    "updated_at": "2026-10-07T10:00:00Z",
    "used_count": 0,
    "version": 1
  },
  "meta": {
    "locale": "example",
    "market_code": "example",
    "market_id": "poland",
    "pagination": {
      "has_more": false,
      "limit": 1,
      "next_cursor": null
    },
    "request_id": "learn-example-request"
  }
}

Prehľad

Vybrané produkty a kategórie sa spájajú. Kategórie zahŕňajú priamo priradené produkty.

Parametre

Parametre cesty

identityReťazecPovinné

Identifikátor použitý v ceste tohto zdroja.

Obmedzenia
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
Príklad: "example-campaign"

Táto operácia neprijíma telo JSON.

Odpovede

Odpoveď 200

dataCampaignData Povinné

Obsah úspešnej odpovede.

Polia · data
audienceReťazecVoliteľné

Zákazníci

Obmedzenia
enum
["all", "guest", "customer", "selected"]

Predvolená hodnota: "all"

benefit_typeReťazecVoliteľné

Variant dátovej štruktúry opísaný povolenými hodnotami.

Obmedzenia
enum
["percentage", "fixed", "none"]

Predvolená hodnota: "percentage"

category_idsPole <Reťazec> Voliteľné

Identifikátory súvisiacich kategórií.

maxItems: 1000
Obmedzenia · Pole 1
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
codeReťazec nullVoliteľné

Stabilný strojovo čitateľný kód.

Obmedzenia · Reťazec 1
pattern
"^[A-Za-z0-9]{6,16}$"
combine_couponsLogická hodnotaVoliteľné

Kombinovať s ďalšími kódmi

Predvolená hodnota: false

combine_promotionsLogická hodnotaVoliteľné

Povoliť tento kód pre produkty s automatickými akciami

Predvolená hodnota: false

created_atReťazecPovinné

Čas vytvorenia.

format: "date-time"
created_byCreatorData Povinné

Vytvoril

Polia · created_by
kindReťazecPovinné

Variant dátovej štruktúry opísaný povolenými hodnotami.

Obmedzenia
enum
["admin", "api"]
labelReťazecPovinné

Názov zdroja v príslušnom kontexte.

referenceReťazecPovinné

Identifikátor odkazovanej entity.

customer_idsPole <Reťazec> Voliteľné

Údaje zákazníka zaznamenané pri tomto zdroji.

maxItems: 1000
Obmedzenia · Pole 1
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
enabledLogická hodnotaPovinné

Či je nastavenie zapnuté.

ends_atReťazec nullVoliteľné

Aktívny do

Reťazec:format: "date-time"
free_shippingLogická hodnotaVoliteľné

Doprava zadarmo

Predvolená hodnota: false

idReťazecPovinné

Identifikátor zdroja; zachovajte ho v podobe, v akej bol vrátený.

kindReťazecPovinné

Variant dátovej štruktúry opísaný povolenými hodnotami.

Obmedzenia
enum
["coupon", "promotion"]
minimum_quantityCelé čísloVoliteľné

Minimálny počet kusov v košíku

minimum: 1maximum: 2147483647

Predvolená hodnota: 1

nameReťazecPovinné

Názov zdroja v príslušnom kontexte.

minLength: 1maxLength: 160
per_customer_limitCelé čísloVoliteľné

Limit použití na zákazníka

minimum: -1maximum: 2147483647

Predvolená hodnota: -1

percentageReťazecVoliteľné

Percentuálna

maxLength: 19
Obmedzenia
pattern
"^(0|[1-9][0-9]{0,13})(\\.[0-9]{1,4})?$"

Predvolená hodnota: "10"

product_idsPole <Reťazec> Voliteľné

Identifikátory súvisiacich produktov.

maxItems: 1000
Obmedzenia · Pole 1
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
product_scopeReťazecVoliteľné

Produkty

Obmedzenia
enum
["all", "selected"]

Predvolená hodnota: "all"

show_accountLogická hodnotaVoliteľné

V zákazníckom účte

Predvolená hodnota: false

show_cartLogická hodnotaVoliteľné

V košíku

Predvolená hodnota: false

show_productLogická hodnotaVoliteľné

Na stránkach produktov

Predvolená hodnota: false

starts_atReťazec nullVoliteľné

Aktívny od

Reťazec:format: "date-time"
updated_atReťazecPovinné

Čas poslednej aktualizácie.

format: "date-time"
usage_limitCelé čísloVoliteľné

Limit použití

minimum: -1maximum: 2147483647

Predvolená hodnota: -1

used_countCelé čísloPovinné

Počet použití

versionCelé čísloPovinné

Verzia zdroja používaná na riadenie súbežných zmien.

metaContextPageMeta ContextMeta PageMeta RequestMeta Povinné

Metaúdaje odpovede.

Polia · meta

ContextPageMeta

localeReťazecPovinné

Jazyk vybraný pre túto požiadavku.

market_codeReťazecPovinné

Kód trhu vrátený koncovým bodom kontextu.

market_idReťazecPovinné

Identifikátor trhu vrátený koncovým bodom kontextu.

paginationPagination Povinné

Metaúdaje stránkovania pomocou kurzora.

request_idReťazecPovinné

Identifikátor požiadavky; v metaúdajoch odpovede označuje požiadavku HTTP.

minLength: 1maxLength: 100

ContextMeta

localeReťazecPovinné

Jazyk vybraný pre túto požiadavku.

market_codeReťazecPovinné

Kód trhu vrátený koncovým bodom kontextu.

market_idReťazecPovinné

Identifikátor trhu vrátený koncovým bodom kontextu.

request_idReťazecPovinné

Identifikátor požiadavky; v metaúdajoch odpovede označuje požiadavku HTTP.

minLength: 1maxLength: 100

PageMeta

paginationPagination Povinné

Metaúdaje stránkovania pomocou kurzora.

request_idReťazecPovinné

Identifikátor požiadavky; v metaúdajoch odpovede označuje požiadavku HTTP.

minLength: 1maxLength: 100

RequestMeta

request_idReťazecPovinné

Identifikátor požiadavky; v metaúdajoch odpovede označuje požiadavku HTTP.

minLength: 1maxLength: 100
Príklad odpovede

Stav HTTP

200
Úspešná odpoveď Schéma
400
Neplatná požiadavka
401
Vyžaduje sa overenie
403
Prístup zamietnutý
404
Zdroj sa nenašiel
409
Konflikt verzií
422
Chyba validácie
429
Prekročený limit požiadaviek
Ďalšie stavy HTTP (7)
405
Metóda nie je povolená
413
Príliš veľká požiadavka
415
Nepodporovaný formát
500
Chyba servera
502
Chyba brány API
503
Služba nedostupná
504
Vypršal časový limit

Katalóg chýb: ErrorResponse

Hlavičky

401

WWW-AuthenticateReťazecVoliteľné

Spôsob overenia požadovaný serverom.

405

AllowReťazecVoliteľné

Metódy HTTP podporované týmto zdrojom.

429, 503

Retry-AfterCelé čísloVoliteľné

Minimálne oneskorenie pred opakovaním v sekundách.

minimum: 0