コンテンツにスキップ
ShopentlyLearn

割引 · 取得

割引 · 取得. すべてのコードが併用を許可している必要があります。割引は順番に適用されます。

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

認証
Bearer
利用可能な最低プラン
STANDARD
必要な権限
discounts.coupons: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/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))

レスポンス例 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"
  }
}

概要

選択した商品とカテゴリーを合わせて対象とします。カテゴリーには直接属する商品が含まれます。

パラメーター

パスパラメーター

identity文字列必須

このリソースのパスで使用する識別子。

制約
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
例: "example-campaign"

この操作は JSON 本文を受け付けません。

レスポンス

レスポンス 200

dataCampaignData 必須

成功レスポンスのデータ。

フィールド · data
audience文字列任意

顧客

制約
enum
["all", "guest", "customer", "selected"]

既定値: "all"

benefit_type文字列任意

許可された値で示されるデータ構造の種類。

制約
enum
["percentage", "fixed", "none"]

既定値: "percentage"

category_ids配列 <文字列> 任意

関連するカテゴリーの識別子。

maxItems: 1000
制約 · 配列 1
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
code文字列 null任意

安定した機械可読コード。

制約 · 文字列 1
pattern
"^[A-Za-z0-9]{6,16}$"
combine_coupons真偽値任意

他のコードと併用

既定値: false

combine_promotions真偽値任意

自動プロモーション対象の商品にこのコードを使用可能にする

既定値: false

created_at文字列必須

作成時刻。

format: "date-time"
created_byCreatorData 必須

作成者

フィールド · created_by
kind文字列必須

許可された値で示されるデータ構造の種類。

制約
enum
["admin", "api"]
label文字列必須

該当コンテキストでのリソース名。

reference文字列必須

参照先のエンティティ識別子。

customer_ids配列 <文字列> 任意

このリソースに記録された顧客情報。

maxItems: 1000
制約 · 配列 1
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
enabled真偽値必須

この設定が有効かどうか。

ends_at文字列 null任意

終了日時

文字列:format: "date-time"
free_shipping真偽値任意

送料無料

既定値: false

id文字列必須

リソース識別子。返された値をそのまま保持してください。

kind文字列必須

許可された値で示されるデータ構造の種類。

制約
enum
["coupon", "promotion"]
minimum_quantity整数任意

カート内の最低商品点数

minimum: 1maximum: 2147483647

既定値: 1

name文字列必須

該当コンテキストでのリソース名。

minLength: 1maxLength: 160
per_customer_limit整数任意

顧客ごとの利用回数の上限

minimum: -1maximum: 2147483647

既定値: -1

percentage文字列任意

パーセント

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

既定値: "10"

product_ids配列 <文字列> 任意

関連商品の識別子。

maxItems: 1000
制約 · 配列 1
pattern
"^[a-z0-9][a-z0-9_-]{0,62}$"
product_scope文字列任意

商品

制約
enum
["all", "selected"]

既定値: "all"

show_account真偽値任意

顧客アカウント内

既定値: false

show_cart真偽値任意

カート内

既定値: false

show_product真偽値任意

商品ページ

既定値: false

starts_at文字列 null任意

開始日時

文字列:format: "date-time"
updated_at文字列必須

最終更新時刻。

format: "date-time"
usage_limit整数任意

利用回数の上限

minimum: -1maximum: 2147483647

既定値: -1

used_count整数必須

利用済み回数

version整数必須

同時更新制御に使うリソースバージョン。

metaContextPageMeta ContextMeta PageMeta RequestMeta 必須

レスポンスのメタデータ。

フィールド · meta

ContextPageMeta

locale文字列必須

このリクエストで選択した言語。

market_code文字列必須

コンテキストエンドポイントが返した市場コード。

market_id文字列必須

コンテキストエンドポイントが返した市場識別子。

paginationPagination 必須

カーソルによるページ分割のメタデータ。

request_id文字列必須

申請識別子。レスポンスのメタデータでは HTTP リクエストを識別します。

minLength: 1maxLength: 100

ContextMeta

locale文字列必須

このリクエストで選択した言語。

market_code文字列必須

コンテキストエンドポイントが返した市場コード。

market_id文字列必須

コンテキストエンドポイントが返した市場識別子。

request_id文字列必須

申請識別子。レスポンスのメタデータでは HTTP リクエストを識別します。

minLength: 1maxLength: 100

PageMeta

paginationPagination 必須

カーソルによるページ分割のメタデータ。

request_id文字列必須

申請識別子。レスポンスのメタデータでは HTTP リクエストを識別します。

minLength: 1maxLength: 100

RequestMeta

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