Pereiti prie turinio
ShopentlyLearn

Nuolaidos · Atnaujinti

Nuolaidos · Atnaujinti. Kiekvienas kodas turi leisti derinimą. Nuolaidos taikomos paeiliui.

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

Tapatybės patvirtinimas
Bearer
Prieinama nuo plano
STANDARD
Būtinos teisės
discounts.coupons:update

Kodo pavyzdžiai

Užklausos pavyzdys

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-update_campaign_api_v1_discounts_coupons__identity__patch' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "code": "LEARN10",
  "expected_version": 1,
  "markets": [
    {
      "currency": "PLN",
      "market_id": "poland",
      "minor_units": 2
    }
  ],
  "name": "Autumn guide offer"
}' \
  --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 = ['Idempotency-Key: learn-update_campaign_api_v1_discounts_coupons__identity__patch', 'Content-Type: application/json'];
$headers[] = 'Authorization: Bearer ' . $credential;
$responseHeaders = [];
$handle = curl_init($baseUrl . '/api/v1/discounts/coupons/example-campaign');
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, '{
  "code": "LEARN10",
  "expected_version": 1,
  "markets": [
    {
      "currency": "PLN",
      "market_id": "poland",
      "minor_units": 2
    }
  ],
  "name": "Autumn guide offer"
}');
$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-update_campaign_api_v1_discounts_coupons__identity__patch'}
headers["Authorization"] = 'Bearer' + " " + credential
body = '{\n  "code": "LEARN10",\n  "expected_version": 1,\n  "markets": [\n    {\n      "currency": "PLN",\n      "market_id": "poland",\n      "minor_units": 2\n    }\n  ],\n  "name": "Autumn guide offer"\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', 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))

Atsakymo pavyzdys 200

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

Apžvalga

Pasirinktos prekės ir kategorijos sujungiamos. Kategorijos apima tiesiogiai priskirtas prekes.

Parametrai

Kelio parametrai

identityEilutėPrivalomas

Šio ištekliaus kelyje naudojamas identifikatorius.

Apribojimai
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
Pavyzdys: "example-campaign"

Užklausos antraštės

Idempotency-KeyEilutėPrivalomas

Vienos loginės įrašymo operacijos unikalus identifikatorius.

minLength: 1maxLength: 128
Apribojimai
pattern
"^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
Pavyzdys: "learn-update_campaign_api_v1_discounts_coupons__identity__patch"

Užklausos turinys

application/json · Privalomas

CampaignUpdate
audienceEilutėNeprivalomas

Klientai

Apribojimai
enum
["all", "guest", "customer", "selected"]
Numatytoji reikšmė: "all"
benefit_typeEilutėNeprivalomas

Duomenų struktūros atmaina, apibrėžta leidžiamomis reikšmėmis.

Apribojimai
enum
["percentage", "fixed", "none"]
Numatytoji reikšmė: "percentage"
category_idsMasyvas <Eilutė> Neprivalomas

Susijusių kategorijų identifikatoriai.

maxItems: 1000
Apribojimai · Masyvas 1
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
codeEilutė nullNeprivalomas

Stabilus kompiuterio skaitomas kodas.

Apribojimai · Eilutė 1
pattern
"^[A-Za-z0-9]{6,16}$"
Pavyzdys: "LEARN10"
combine_couponsLoginė reikšmėNeprivalomas

Derinti su kitais kodais

Numatytoji reikšmė: false
combine_promotionsLoginė reikšmėNeprivalomas

Leisti šį kodą produktams su automatinėmis akcijomis

Numatytoji reikšmė: false
customer_idsMasyvas <Eilutė> Neprivalomas

Šiam ištekliui užregistruota kliento informacija.

maxItems: 1000
Apribojimai · Masyvas 1
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
ends_atEilutė nullNeprivalomas

Galioja iki

Eilutė:format: "date-time"
expected_versionSveikasis skaičiusPrivalomas

Prieš įrašant perskaityta versija; neatitikimas atmeta pakeitimą.

minimum: 1maximum: 9223372036854775807
Pavyzdys: 1
free_shippingLoginė reikšmėNeprivalomas

Nemokamas pristatymas

Numatytoji reikšmė: false
marketsMasyvas <MarketData-Input > Privalomas

Parduotuvės kontekste prieinamos rinkos.

minItems: 1maxItems: 1000
Pavyzdys: [{"currency":"PLN","market_id":"poland","minor_units":2}]
minimum_quantitySveikasis skaičiusNeprivalomas

Mažiausias prekių skaičius krepšelyje

minimum: 1maximum: 2147483647
Numatytoji reikšmė: 1
nameEilutėPrivalomas

Ištekliaus pavadinimas atitinkamame kontekste.

minLength: 1maxLength: 160
Pavyzdys: "Autumn guide offer"
per_customer_limitSveikasis skaičiusNeprivalomas

Naudojimų limitas vienam klientui

minimum: -1maximum: 2147483647
Numatytoji reikšmė: -1
percentageEilutėNeprivalomas

Procentinė

maxLength: 19
Apribojimai
pattern
"^(0|[1-9][0-9]{0,13})(\\.[0-9]{1,4})?$"
Numatytoji reikšmė: "10"
product_idsMasyvas <Eilutė> Neprivalomas

Susijusių produktų identifikatoriai.

maxItems: 1000
Apribojimai · Masyvas 1
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
product_scopeEilutėNeprivalomas

Produktai

Apribojimai
enum
["all", "selected"]
Numatytoji reikšmė: "all"
show_accountLoginė reikšmėNeprivalomas

Kliento paskyroje

Numatytoji reikšmė: false
show_cartLoginė reikšmėNeprivalomas

Krepšelyje

Numatytoji reikšmė: false
show_productLoginė reikšmėNeprivalomas

Produktų puslapiuose

Numatytoji reikšmė: false
starts_atEilutė nullNeprivalomas

Galioja nuo

Eilutė:format: "date-time"
usage_limitSveikasis skaičiusNeprivalomas

Naudojimų limitas

minimum: -1maximum: 2147483647
Numatytoji reikšmė: -1

Atsakymai

Atsakymas 200

dataMutationData Privalomas

Sėkmingo atsakymo duomenys.

Laukai · data
deletedLoginė reikšmėPrivalomas

Ar šalinimas buvo atliktas.

idEilutėPrivalomas

Ištekliaus identifikatorius; išsaugokite grąžintą išraišką.

versionSveikasis skaičius nullPrivalomas

Ištekliaus versija lygiagrečių pakeitimų kontrolei.

metaContextPageMeta ContextMeta PageMeta RequestMeta Privalomas

Atsakymo metaduomenys.

Laukai · meta

ContextPageMeta

localeEilutėPrivalomas

Šiai užklausai pasirinkta kalba.

market_codeEilutėPrivalomas

Konteksto prieigos taško grąžintas rinkos kodas.

market_idEilutėPrivalomas

Konteksto prieigos taško grąžintas rinkos identifikatorius.

paginationPagination Privalomas

Skaidymo į puslapius pagal žymeklį metaduomenys.

request_idEilutėPrivalomas

Prašymo identifikatorius; atsakymo metaduomenyse nurodo HTTP užklausą.

minLength: 1maxLength: 100

ContextMeta

localeEilutėPrivalomas

Šiai užklausai pasirinkta kalba.

market_codeEilutėPrivalomas

Konteksto prieigos taško grąžintas rinkos kodas.

market_idEilutėPrivalomas

Konteksto prieigos taško grąžintas rinkos identifikatorius.

request_idEilutėPrivalomas

Prašymo identifikatorius; atsakymo metaduomenyse nurodo HTTP užklausą.

minLength: 1maxLength: 100

PageMeta

paginationPagination Privalomas

Skaidymo į puslapius pagal žymeklį metaduomenys.

request_idEilutėPrivalomas

Prašymo identifikatorius; atsakymo metaduomenyse nurodo HTTP užklausą.

minLength: 1maxLength: 100

RequestMeta

request_idEilutėPrivalomas

Prašymo identifikatorius; atsakymo metaduomenyse nurodo HTTP užklausą.

minLength: 1maxLength: 100
Atsakymo pavyzdys

HTTP būsena

200
Sėkmingas atsakymas Schema
400
Netinkama užklausa
401
Būtinas tapatybės patvirtinimas
403
Prieiga uždrausta
404
Išteklius nerastas
409
Versijų konfliktas
422
Tikrinimo klaida
429
Viršytas užklausų limitas
Kitos HTTP būsenos (7)
405
Metodas neleidžiamas
413
Užklausa per didelė
415
Nepalaikomas formatas
500
Serverio klaida
502
API tinklų sietuvo klaida
503
Paslauga nepasiekiama
504
Baigėsi laukimo laikas

Klaidų katalogas: ErrorResponse

Antraštės

401

WWW-AuthenticateEilutėNeprivalomas

Serverio reikalaujama tapatybės patvirtinimo schema.

405

AllowEilutėNeprivalomas

Šio ištekliaus palaikomi HTTP metodai.

429, 503

Retry-AfterSveikasis skaičiusNeprivalomas

Mažiausias laukimo laikas prieš kartojant, sekundėmis.

minimum: 0