コンテンツにスキップ

商品店舗別規格更新

PATCH
/products/{product_id}/shops/{shop_id}/variants
curl --request PATCH \
--url https://api.smaregi.dev/TARGET-CONTRACT-ID/ec-oms/products/example/shops/example/variants \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "class": [ { "name": "サイズ", "classcategory": [ { "name": "S", "subcode": "01" }, { "name": "M", "subcode": "02" } ] }, { "classId": 10, "name": "カラー", "classcategory": [ { "classcategoryId": 101, "name": "赤" }, { "name": "青", "subcode": "03" } ] } ] }'

商品店舗別規格を追加・更新します。

  • classId / classcategoryId を指定しない要素は新規追加し、指定した要素は既存データを更新します。
  • 既存の店舗別規格の更新では name / classcategory のうち1つ以上、既存の店舗別規格値の更新では name / subcode のうち1つ以上を指定してください。
  • class / classcategory 配列に含めなかった既存の店舗別規格・店舗別規格値は更新・削除されません。
  • IDを指定した更新では、name / subcode などリクエストに含めなかったプロパティは現在の値を保持します。
  • リクエスト内のいずれかの追加・更新に失敗した場合は、リクエスト全体を更新せず、部分的な更新は行いません。
  • 更新後に存在する各店舗別規格軸の店舗別規格値数の積をバリエーション数とし、合計400件まで登録できます。
  • classType はシステムが自動設定します。リクエストに含めても使用されず、設定値には反映されません。
  • 既存の店舗別規格の classType は、リクエスト内の配列順にかかわらず現在の値を維持します。
  • 新規の店舗別規格には、未使用の classType(通常店舗は12、楽天店舗は16)をリクエスト内の追加対象の先頭から昇順に割り当てます。すべて使用済みの場合は店舗別規格軸上限エラーになります。

※店舗別規格・店舗別規格値を追加または更新した場合、商品SKU紐づけ・規格別価格情報などが初期化されることがあります。
※店舗別商品コードは自動生成され、商品店舗別詳細更新APIで直接更新した値が初期化される場合があります。

product_id
required
string
>= 1 characters

商品ID

shop_id
required
string
>= 1 characters

店舗ID

Media typeapplication/json
ShopProductVariantPatchRequest
object
class
required

店舗別規格配列 通常店舗は最大2軸、楽天店舗は最大6軸まで指定できます。

Array<object>
>= 1 items <= 6 items

新規追加時は nameclasscategory が必須です。 classId を指定する更新時は name / classcategory のうち1つ以上を指定してください。

object
classId

店舗別規格ID
指定しない場合は、新規の規格追加として処理します

integer
>= 1 <= 999999999
name

店舗別規格名
※新規作成時は必須。更新時も指定する場合は空文字不可

string
>= 1 characters <= 50 characters
classcategory

店舗別規格値配列 ※新規作成時は必須。更新時は省略でき、省略した場合は既存の店舗別規格値を変更しません

Array<object>
>= 1 items <= 20 items

新規追加時は name が必須です。 classcategoryId を指定する更新時は name / subcode のうち1つ以上を指定してください。

object
classcategoryId

店舗別規格値ID
指定しない場合は、新規の規格値追加として処理します

integer
>= 1 <= 999999999
name

店舗別規格値名
※新規作成時は必須。更新時も指定する場合は空文字不可

string
>= 1 characters <= 50 characters
subcode

店舗別枝番

string
0 <= 32 characters
Examples
Exampledefault
{
"class": [
{
"name": "サイズ",
"classcategory": [
{
"name": "S",
"subcode": "01"
},
{
"name": "M",
"subcode": "02"
}
]
},
{
"classId": 10,
"name": "カラー",
"classcategory": [
{
"classcategoryId": 101,
"name": ""
},
{
"name": "",
"subcode": "03"
}
]
}
]
}

更新成功

Media typeapplication/json
ShopProductVariantPatchResponse
object
productId

商品ID

string
>= 1 characters <= 9 characters
shopId

店舗ID

string
>= 1 characters <= 9 characters
class

店舗別規格配列

Array<object>
object
classId

店舗別規格ID

string
>= 1 characters <= 9 characters
shopId

店舗ID

string
>= 1 characters <= 9 characters
productId

商品ID

string
>= 1 characters <= 9 characters
name

店舗別規格名

string
>= 1 characters <= 50 characters
classType

システムによって自動設定される店舗別規格軸 通常店舗は12、楽天店舗は16の値を返します。

string
>= 1 characters <= 1 characters
Allowed values: 1 2 3 4 5 6
classcategory
Array<object>
object
classcategoryId

店舗別規格値ID

string
>= 1 characters <= 9 characters
shopId

店舗ID

string
>= 1 characters <= 9 characters
classId

店舗別規格ID

string
>= 1 characters <= 9 characters
productId

商品ID

string
>= 1 characters <= 9 characters
name

店舗別規格値名

string
>= 1 characters <= 50 characters
rakutenCode

商品コード

string
nullable 0 <= 200 characters
subcode

店舗別枝番

string
nullable 0 <= 32 characters
productsClassShop

規格値の組み合わせに応じた店舗別商品規格配列

Array<object>

店舗別商品規格です。各 classcategoryId1classcategoryId6 には、その行が使用する店舗別規格値IDを返し、使用していない規格軸は 0 を返します。
通常在庫商品の基準行では6項目すべてが 0 です。
商品一覧取得・商品取得では有効な行だけを返すため、項目選択肢別在庫の削除扱いの基準行は含みません。

object
productClassId

商品クラスID

string
>= 1 characters <= 9 characters
shopId

店舗ID

string
>= 1 characters <= 9 characters
productId

商品ID

string
>= 1 characters <= 9 characters
classcategoryId1

店舗別規格値ID1。未使用時は 0

string
>= 1 characters <= 9 characters
classcategoryId2

店舗別規格値ID2。未使用時は 0

string
>= 1 characters <= 9 characters
classcategoryId3

店舗別規格値ID3。未使用時は 0

string
>= 1 characters <= 9 characters
classcategoryId4

店舗別規格値ID4。未使用時は 0

string
>= 1 characters <= 9 characters
classcategoryId5

店舗別規格値ID5。未使用時は 0

string
>= 1 characters <= 9 characters
classcategoryId6

店舗別規格値ID6。未使用時は 0

string
>= 1 characters <= 9 characters
productCode

店舗別商品コード

string
nullable 0 <= 200 characters
productTypeId

商品種別

string
>= 1 characters <= 1 characters
rcatalogId

JANコード

string
nullable 0 <= 50 characters
Examples
Exampledefault
{
"productId": "1001",
"shopId": "20",
"class": [
{
"classId": "31",
"shopId": "20",
"productId": "1001",
"name": "カラー",
"classType": "1",
"classcategory": [
{
"classcategoryId": "401",
"shopId": "20",
"classId": "31",
"productId": "1001",
"name": "",
"rakutenCode": "SHOP001",
"subcode": "A1"
}
]
},
{
"classId": "30",
"shopId": "20",
"productId": "1001",
"name": "サイズ",
"classType": "2",
"classcategory": [
{
"classcategoryId": "301",
"shopId": "20",
"classId": "30",
"productId": "1001",
"name": "S",
"rakutenCode": "SHOP001",
"subcode": null
},
{
"classcategoryId": "302",
"shopId": "20",
"classId": "30",
"productId": "1001",
"name": "M",
"rakutenCode": "SHOP001",
"subcode": "A2"
}
]
}
],
"productsClassShop": [
{
"productClassId": "901",
"shopId": "20",
"productId": "1001",
"classcategoryId1": "401",
"classcategoryId2": "301",
"classcategoryId3": "0",
"classcategoryId4": "0",
"classcategoryId5": "0",
"classcategoryId6": "0",
"productCode": "SHOP001-01",
"productTypeId": "1",
"rcatalogId": "4900000000012"
},
{
"productClassId": "902",
"shopId": "20",
"productId": "1001",
"classcategoryId1": "401",
"classcategoryId2": "302",
"classcategoryId3": "0",
"classcategoryId4": "0",
"classcategoryId5": "0",
"classcategoryId6": "0",
"productCode": "SHOP001-02",
"productTypeId": "1",
"rcatalogId": "4900000000013"
}
]
}
  • 指定された項目が不正な場合
  • 更新項目が指定されていない場合
  • 指定された店舗IDが取扱店舗でない場合
  • 在庫タイプが2:項目選択肢別在庫ではない商品に新規店舗別規格を追加する場合
  • 店舗別規格軸数が上限を超える場合
  • 店舗別規格値が上限を超える場合
  • バリエーション数が上限を超える場合
Media typeapplication/json
object
type
required
string
title
required
string
detail
One of:
string
status
integer
Examples
{
"type": "about:blank",
"title": "BadRequest",
"detail": [
"指定された項目が不正です: invalidKey"
],
"status": 400
}
  • 指定された商品が存在しない場合
  • 指定された店舗が存在しない場合
  • 指定された店舗別規格IDが存在しない場合
  • 指定された店舗別規格値IDが存在しない場合
Media typeapplication/json
object
type
required
string
title
required
string
detail
One of:
string
status
integer
Examples
{
"type": "about:blank",
"title": "NotFound",
"detail": [
"該当する商品IDが見つかりませんでした"
],
"status": 404
}
  • 指定された店舗別規格名が重複している場合
  • 指定された店舗別規格値名が重複している場合
  • 指定された枝番が重複している場合
Media typeapplication/json
object
type
required
string
title
required
string
detail
One of:
string
status
integer
Examples
{
"type": "about:blank",
"title": "Conflict",
"detail": "[店舗別規格名]が重複しています",
"status": 409
}

サーバー内部エラー

Media typeapplication/json
object
type
required
string
title
required
string
detail
One of:
string
status
integer
Examples
Exampledefault
{
"type": "about:blank",
"title": "InternalServerError",
"status": 500
}