APIで数量割引価格を更新/編集する
公開APIで既存の数量割引価格ルールを更新する方法です。リクエストボディの全項目リファレンスも掲載しています。
このドキュメントでは、公開APIを使って既存の数量割引価格ルールを更新する方法を説明します。
1. エンドポイント
Section titled “1. エンドポイント”既存の数量割引価格レコードを更新するには、次のエンドポイントを使用します。
PUT https://wholesale.samita.io/api/v1/volume-pricings/{id}{id}は数量割引価格レコードのIDです- IDはアプリの画面で確認できます(「#」記号は含めません)
- 参考例:

PUT https://wholesale.samita.io/api/v1/volume-pricings/12. リクエストヘッダー
Section titled “2. リクエストヘッダー”すべてのAPIリクエストに、次の必須ヘッダーを含める必要があります。
| ヘッダー | 説明 | 必須 |
|---|---|---|
X-SAMITA-API-KEY |
Wholesaleアプリで発行されたAPIキー | はい |
X-SAMITA-SHOP-URL |
xxx.myshopify.com形式のShopifyストアドメイン | はい |
CONTENT-TYPE |
application/jsonを指定する必要があります |
はい |
必須ヘッダーが1つでも欠けている場合、リクエストは拒否されます。
3. リクエストボディ
Section titled “3. リクエストボディ”_ 数量割引価格の更新に使用するデータは、JSON形式で送信する必要があります。サンプルのJSON構造は、このドキュメントの末尾に掲載しています。
_ リクエストには、更新が必要なフィールドのみを含めます。作成APIメソッドのように、すべてのフィールドを送信する必要はありません。
_ 指定しなかったフィールドは変更されません
リクエストJSONのサンプル:
{ "title": "New Volume Pricing", "status": true, "type": "quantity", "apply_customer": { "type": "all", "tags": [] }, "exclude_customer": { "type": "none", "tags": [] }, "apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false }, "exclude_product": { "type": "none", "product_ids": [], "collection_ids": [] }, "discount_for_variants": [ { "id": 8516448190631, "duplicated": false, "variant_pricing": true, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ], "variants": [ { "id": 46747346763943, "duplicated": false, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ] } ] } ], "apply_market": { "type": "all", "handle": [] }, "discount_method": "variant", "discount_groups": [ { "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "type": "percent", "value": "10" } ], "active_date": { "types": ["start date", "end date"], "start_at": "2026-01-15T10:00:00", "end_at": "2026-01-15T10:00:00" }}b. title
Section titled “b. title”- 数量割引価格レコードを識別するための名前です
- 文字列である必要があります
- 最大長:255文字
c. status
Section titled “c. status”- レコードが有効かどうかを指定します
- 次の値のみ使用できます。
| 値 | 説明 |
|---|---|
true |
価格ルールが有効です |
false |
価格ルールが無効です |
d. type
Section titled “d. type”数量割引価格を、数量で計算するか金額で計算するかを指定します。
使用できる値:
quantityamount
e. apply_customer
Section titled “e. apply_customer”この価格ルールの対象となるお客様を指定します。
構造:
"apply_customer": { "type": "all", "tags": []}type
使用できる値(次のいずれか1つのみ):
all– すべてのお客様に適用しますlogged– ログイン中のお客様にのみ適用しますnon-logged– ゲストのお客様にのみ適用しますcustomer-tags– 特定のタグを持つお客様にのみ適用します
tags
type == customer-tagsの場合のみ必須です- カンマ区切りの配列である必要があります
- 例:
["wholesale","b2b"]
typeがcustomer-tagsでない場合、このフィールドは無視できます。
f. exclude_customer
Section titled “f. exclude_customer”価格ルールから特定のお客様を除外します。
構造:
"exclude_customer": { "type": "none", "tags": []}type
- デフォルト値:
none - 使用できる値:
| 値 | 説明 |
|---|---|
none |
お客様を除外しません |
customer-tags |
タグでお客様を除外します |
tags
type == customer-tagsの場合のみ必須です- カンマ区切りの配列
- 例:
["vip","internal"]
g. apply_product
Section titled “g. apply_product”価格ルールを適用する商品を指定します。
構造:
"apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false },type
使用できる値:
allproductscollectionsproduct-tags
product_ids
type == productsの場合のみ必須です- 商品IDのカンマ区切りリスト
- 例:
[1,2,3]
product_tags
type == product-tagsの場合のみ必須です- 例:
["tag1","tag2"]
collection_ids
type == collectionsの場合のみ必須です- 例:
[1,2,3]
apply_for_variants
- 割引をバリエーションごとに設定できるかどうかを指定します
- 使用できる値:
trueまたはfalse - デフォルト値:
false
h. exclude_product
Section titled “h. exclude_product”ルールから除外する商品を指定します。
構造:
"exclude_product": { "type": "none", "product_ids": [], "collection_ids": [] },type
- デフォルト:
none - 使用できる値:
| 値 | 説明 |
|---|---|
none |
商品を除外しません |
products |
特定の商品を除外します |
collections |
特定のコレクションを除外します |
その他のフィールドは、選択したtypeに応じてのみ必須になります。
i. discount_for_variants
Section titled “i. discount_for_variants”**商品レベルまたはバリエーションレベル(あるいはその両方)**の割引設定を指定します。
apply_product.apply_for_variants == falseの場合、このフィールドは空のままにします。apply_product.apply_for_variants == trueの場合、このフィールドは必須です。- 構造は商品設定の配列である必要があります。
構造:
"discount_for_variants": [ { "id": 8516448190631, "duplicated": false, "variant_pricing": true, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ], "variants": [ { "id": 46747346763943, "duplicated": false, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ] } ] } ],i.1. id(必須)
- 商品IDです。
- 既存の商品と一致している必要があります。
i.2. duplicated
商品に複数の数量/金額の範囲があるかどうかを示します。
使用できる値:
truefalse
ルール:
trueの場合:商品に複数の数量/金額の範囲があります。falseの場合:商品の数量/金額の範囲は1つのみです。
i.3. from_qty / from_amount
範囲の開始数量または開始金額です。
ルール:
- 最初の項目は空にできます(デフォルトは1)。
- 2番目以降の項目はすべて必須です。
i.4. to_qty / to_amount
範囲の終了数量または終了金額です。
ルール:
- 空にできます(次の項目の
fromの値から1を引いた値として自動的に計算されます)。 - 指定する場合は、次の項目の
fromの値より小さい必要があります。
例:
- 項目1:0–10 → 項目2:11–20
- 項目1:0–空欄 → 項目2:10–空欄
- 項目1:空欄–10 → 項目2:11–空欄
i.5. discount_groups(商品レベル)
商品レベルで、数量/金額の範囲ごとの割引設定を指定します。
variant_pricing == falseの場合は必須です。variant_pricing == trueの場合は空のままにします。- 設定した
apply_customer.typeに対応する割引オブジェクトの配列である必要があります。
構造:
{ "name": "all", "type": "percent", "value": "10"}+ name
使用できる値:
all(apply_customer.type == allの場合)logged(apply_customer.type == loggedの場合)non-logged(apply_customer.type == non-loggedの場合)
それ以外の値を指定した場合は顧客タグとして扱われ、apply_customer.tagsで定義されたタグのいずれかと一致している必要があります。
+ type
割引の種類を指定します。
使用できる値:
percent– パーセント割引amount– 価格から差し引く固定金額fixed-amount– 最終的な固定価格
+ value
- 数値である必要があります
- 0より大きい必要があります
type == percentの場合、valueは100未満である必要があります
i.6. variant_pricing
割引をバリエーションレベルで適用するかどうかを示します。
使用できる値:
truefalse
i.7. variants
バリエーションレベルの割引設定を指定します。
variant_pricing == trueの場合は必須ですvariant_pricing == falseの場合は空のままにします- バリエーション設定の配列である必要があります
構造:
{ "id": 46747346763943, "duplicated": false, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ]}+ id(必須)
- バリエーションIDです。
+ duplicate
バリエーションに複数の数量/金額の範囲があるかどうかを示します。
使用できる値:
truefalse
ルール:
trueの場合:バリエーションに複数の範囲があります。falseの場合:バリエーションの範囲は1つのみです。
+ from_qty / from_amount
開始数量または開始金額です。
ルール:
- 最初の項目は空にできます(デフォルトは1)。
- 2番目以降の項目はすべて必須です。
+ to_qty / to_amount
終了数量または終了金額です。
ルール:
- 空にできます(次の項目の
fromから1を引いた値として自動計算されます)。 - 指定する場合は、次の項目の
fromの値より小さい必要があります。
例:
- 項目1:0–10 → 項目2:11–20
- 項目1:0–空欄 → 項目2:10–空欄
- 項目1:空欄–10 → 項目2:11–空欄
+ discount_groups(バリエーションレベル)
バリエーションレベルで、数量/金額の範囲ごとの割引設定を指定します。
ルール:
apply_customer.typeが次の場合:allloggednon-logged
→ 配列には1つの項目のみを含める必要があります。
apply_customer.type == customer-tagsの場合
→ 配列には複数の項目(顧客タグごとに1つ)を含める必要があります。
name
使用できる値:
allloggednon-logged
それ以外の値を指定した場合は顧客タグとして扱われ、apply_customer.tagsで定義されたタグと一致している必要があります。
type
使用できる値:
percentamountfixed-amount
value
- 数値である必要があります
- 0より大きい必要があります
type == percentの場合、valueは100未満である必要があります
j. apply_market
Section titled “j. apply_market”ルールを適用するShopifyのマーケットを指定します。
構造:
"apply_market": { "type": "all", "handle": []}type
使用できる値:
allspecific-market
handle
type == specific-marketの場合のみ必須です- マーケットハンドルのカンマ区切りリスト
- 例:
["japan","us"]
k. discount_methods
Section titled “k. discount_methods”使用できる値:
variant→ 同じバリエーションacross_group→ バリエーションを混在within_each_group→ 商品を混在
これらは、アプリで選択できるオプションに対応しています。
例:
"discount_method": "variant",l. discount_group
Section titled “l. discount_group”数量/金額の範囲と割引の値を指定します。
from_qty / from_amount
to_qty / to_amount
検証ルールは上記と同じです。
使用できる「type」の値:
percentamountfixed-amount
value:
- 0より大きい必要があります
- percentの場合 → 100未満である必要があります
構造:
"discount_groups": [ { "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "type": "percent", "value": "10" } ],割引の種類と値に関するルールは、上記と同じです。
m. active_date
Section titled “m. active_date”価格ルールの開始日時と終了日時を設定します。
構造:
"active_date": { "types": ["start_date", "end_date"], "start_at": "2026-01-15 10:00:00", "end_at": "2026-01-15 10:00:00"}types
- 任意
- 使用できる値:
start_date、end_date - 一方または両方を、カンマ区切りで指定できます
- 例:
["start_date","end_date"]
start_at
typesにstart_dateが含まれる場合は必須です- 形式:
YYYY-MM-DD HH:MM:SS
end_at
typesにend_dateが含まれる場合は必須です- 形式:
YYYY-MM-DD HH:MM:SS
4. APIレスポンス
Section titled “4. APIレスポンス”a. エラーレスポンス
Section titled “a. エラーレスポンス”401 – Unauthorized(認証エラー)
考えられる原因:
- ストアURLが指定されていない
- APIキーが指定されていない
- ストアURLが無効
- APIキーが無効
- APIキーがストアと一致しない
403 – This action is unauthorized(この操作は許可されていません)
- APIキーにUpdate権限がない
- 各APIキーには、View、Create、Update、Deleteの権限を設定できる
- このAPIにはUpdate権限が必要
- 指定されたIDが存在しない場合にも返される
429 – Too Many Requests(リクエストが多すぎます)
レート制限を超過した場合:
- 最大5分あたり1リクエスト
- 最大1日あたり50リクエスト
b. 成功レスポンス
Section titled “b. 成功レスポンス”200 – API Success(成功)
- 数量割引価格レコードが正常に更新される
- レスポンスはJSON形式で返される
レスポンスJSONのサンプル:
{ "id": 1, "title": "New Volume Pricing", "status": true, "type": "quantity", "apply_customer": { "type": "all", "tags": [] }, "exclude_customer": { "type": "none", "tags": [] }, "apply_product": { "type": "all", "product_ids": [], "product_tags": [], "collection_ids": [], "apply_for_variants": false }, "exclude_product": { "type": "none", "product_ids": [], "collection_ids": [] }, "discount_for_variants": [ { "id": 8516448190631, "duplicated": false, "variant_pricing": true, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ], "variants": [ { "id": 46747346763943, "duplicated": false, "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "discount_groups": [ { "name": "all", "type": "percent", "value": "10" } ] } ] } ], "apply_market": { "type": "all", "handle": [] }, "discount_method": "variant", "discount_groups": [ { "from_qty": "0", "from_amount": "0", "to_qty": "10", "to_amount": "0", "type": "percent", "value": "10" } ], "active_date": { "types": [], "start_at": "", "end_at": "" }, "created_at": "2026-01-15T10:00:00", "updated_at": "2026-01-15T10:00:00"}