商品店舗別規格更新
const url = 'https://api.smaregi.dev/TARGET-CONTRACT-ID/ec-oms/products/example/shops/example/variants';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"class":[{"name":"サイズ","classcategory":[{"name":"S","subcode":"01"},{"name":"M","subcode":"02"}]},{"classId":10,"name":"カラー","classcategory":[{"classcategoryId":101,"name":"赤"},{"name":"青","subcode":"03"}]}]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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(通常店舗は1~2、楽天店舗は1~6)をリクエスト内の追加対象の先頭から昇順に割り当てます。すべて使用済みの場合は店舗別規格軸上限エラーになります。
※店舗別規格・店舗別規格値を追加または更新した場合、商品SKU紐づけ・規格別価格情報などが初期化されることがあります。
※店舗別商品コードは自動生成され、商品店舗別詳細更新APIで直接更新した値が初期化される場合があります。
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”商品ID
店舗ID
Request Bodyrequired
Section titled “Request Bodyrequired”object
店舗別規格配列 通常店舗は最大2軸、楽天店舗は最大6軸まで指定できます。
新規追加時は name と classcategory が必須です。
classId を指定する更新時は name / classcategory のうち1つ以上を指定してください。
object
店舗別規格ID
指定しない場合は、新規の規格追加として処理します
店舗別規格名
※新規作成時は必須。更新時も指定する場合は空文字不可
店舗別規格値配列 ※新規作成時は必須。更新時は省略でき、省略した場合は既存の店舗別規格値を変更しません
新規追加時は name が必須です。
classcategoryId を指定する更新時は name / subcode のうち1つ以上を指定してください。
object
店舗別規格値ID
指定しない場合は、新規の規格値追加として処理します
店舗別規格値名
※新規作成時は必須。更新時も指定する場合は空文字不可
店舗別枝番
Examples
{ "class": [ { "name": "サイズ", "classcategory": [ { "name": "S", "subcode": "01" }, { "name": "M", "subcode": "02" } ] }, { "classId": 10, "name": "カラー", "classcategory": [ { "classcategoryId": 101, "name": "赤" }, { "name": "青", "subcode": "03" } ] } ]}Responses
Section titled “Responses”更新成功
object
商品ID
店舗ID
店舗別規格配列
object
店舗別規格ID
店舗ID
商品ID
店舗別規格名
システムによって自動設定される店舗別規格軸
通常店舗は1~2、楽天店舗は1~6の値を返します。
object
店舗別規格値ID
店舗ID
店舗別規格ID
商品ID
店舗別規格値名
商品コード
店舗別枝番
規格値の組み合わせに応じた店舗別商品規格配列
店舗別商品規格です。各 classcategoryId1~classcategoryId6 には、その行が使用する店舗別規格値IDを返し、使用していない規格軸は 0 を返します。
通常在庫商品の基準行では6項目すべてが 0 です。
商品一覧取得・商品取得では有効な行だけを返すため、項目選択肢別在庫の削除扱いの基準行は含みません。
object
商品クラスID
店舗ID
商品ID
店舗別規格値ID1。未使用時は 0
店舗別規格値ID2。未使用時は 0
店舗別規格値ID3。未使用時は 0
店舗別規格値ID4。未使用時は 0
店舗別規格値ID5。未使用時は 0
店舗別規格値ID6。未使用時は 0
店舗別商品コード
商品種別
JANコード
Examples
{ "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:項目選択肢別在庫ではない商品に新規店舗別規格を追加する場合
- 店舗別規格軸数が上限を超える場合
- 店舗別規格値が上限を超える場合
- バリエーション数が上限を超える場合
object
Examples
{ "type": "about:blank", "title": "BadRequest", "detail": [ "指定された項目が不正です: invalidKey" ], "status": 400}{ "type": "about:blank", "title": "BadRequest", "detail": [ "更新項目を1つ以上指定してください" ], "status": 400}{ "type": "about:blank", "title": "BadRequest", "detail": [ "指定された店舗IDは、この商品の取扱店舗ではありません" ], "status": 400}{ "type": "about:blank", "title": "BadRequest", "detail": "在庫タイプが項目選択肢別在庫ではないため、店舗別規格の追加はできません", "status": 400}{ "type": "about:blank", "title": "BadRequest", "detail": [ "店舗別規格軸数は合計6件までです" ], "status": 400}{ "type": "about:blank", "title": "BadRequest", "detail": "店舗別規格値は20件までです", "status": 400}{ "type": "about:blank", "title": "BadRequest", "detail": [ "バリエーション数は合計400件までです" ], "status": 400}- 指定された商品が存在しない場合
- 指定された店舗が存在しない場合
- 指定された店舗別規格IDが存在しない場合
- 指定された店舗別規格値IDが存在しない場合
object
Examples
{ "type": "about:blank", "title": "NotFound", "detail": [ "該当する商品IDが見つかりませんでした" ], "status": 404}{ "type": "about:blank", "title": "NotFound", "detail": [ "該当する店舗IDが見つかりませんでした" ], "status": 404}{ "type": "about:blank", "title": "NotFound", "detail": [ "該当する店舗別規格IDが見つかりませんでした" ], "status": 404}{ "type": "about:blank", "title": "NotFound", "detail": [ "該当する店舗別規格値IDが見つかりませんでした" ], "status": 404}- 指定された店舗別規格名が重複している場合
- 指定された店舗別規格値名が重複している場合
- 指定された枝番が重複している場合
object
Examples
{ "type": "about:blank", "title": "Conflict", "detail": "[店舗別規格名]が重複しています", "status": 409}{ "type": "about:blank", "title": "Conflict", "detail": "[店舗別規格値名]が重複しています", "status": 409}{ "type": "about:blank", "title": "Conflict", "detail": "[店舗別枝番]が重複しています", "status": 409}サーバー内部エラー
object
Examples
{ "type": "about:blank", "title": "InternalServerError", "status": 500}