商品共通規格更新
PATCH
/products/{product_id}/variants
const url = 'https://api.smaregi.dev/TARGET-CONTRACT-ID/ec-oms/products/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/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)をリクエスト内の追加対象の先頭から昇順に割り当てます。すべて使用済みの場合は規格軸上限エラーになります。
※規格・規格値を追加または更新した場合、商品SKU紐づけ・規格別価格情報などが初期化されることがあります。
※商品規格コードは、商品の共通商品コードと各規格値の枝番から自動生成され、商品詳細更新APIで直接更新した値が初期化される場合があります。
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”product_id
required
string
商品ID
Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
ProductVariantPatchRequest
object
class
required
規格配列
Array<object>
新規追加時は name と classcategory が必須です。
classId を指定する更新時は name / classcategory のうち1つ以上を指定してください。
object
classId
規格ID
指定しない場合は、新規の規格追加として処理します
integer
name
規格名
※新規作成時は必須。更新時も指定する場合は空文字不可
string
classcategory
規格値配列 ※新規作成時は必須。更新時は省略でき、省略した場合は既存の規格値を変更しません
Array<object>
新規追加時は name が必須です。
classcategoryId を指定する更新時は name / subcode のうち1つ以上を指定してください。
object
classcategoryId
規格値ID
指定しない場合は、新規の規格値追加として処理します
integer
name
規格値名
※新規作成時は必須。更新時も指定する場合は空文字不可
string
subcode
枝番
string
Examples
Exampledefault
{ "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”更新成功
Media typeapplication/json
ProductVariantPatchResponse
object
productId
商品ID
string
class
規格配列
Array<object>
object
classId
規格ID
string
productId
商品ID
string
name
規格名
string
classType
システムによって自動設定される規格軸
1: 横軸(規格1)2: 縦軸(規格2)
string
classcategory
Array<object>
object
classcategoryId
規格値ID
string
classId
規格ID
string
productId
商品ID
string
name
規格値名
string
rakutenCode
商品コード
string
subcode
枝番
string
productsClass
規格値の組み合わせに応じた商品規格配列
Array<object>
object
productClassId
商品クラスID
string
productId
商品ID
string
classcategoryId1
商品規格ID(横軸)
string
classcategoryId2
商品規格ID(縦軸)
string
productCode
商品番号
string
price02
販売価格
string
productTypeId
商品種別
string
stockUpdateFlg
在庫連携指定
string
stockUpdateValue
在庫指定値
string
rcatalogId
JANコード
string
delvdateChk
在庫納期情報個別設定
string
restoreInventoryFlag
在庫戻し設定
string
backorderFlag
在庫切れ時の注文
string
normalDelvdateId
在庫あり時の納期管理番号
string
normalDelvdateIdJa
在庫あり時の納期管理番号(和名)
string
backorderDelvdateId
在庫切れ時の納期管理番号
string
backorderDelvdateIdJa
在庫切れ時の納期管理番号(和名)
string
Examples
Exampledefault
{ "productId": "1001", "class": [ { "classId": "11", "productId": "1001", "name": "サイズ", "classType": "1", "classcategory": [ { "classcategoryId": "201", "classId": "11", "productId": "1001", "name": "S", "rakutenCode": "ABC001", "subcode": "01" }, { "classcategoryId": "202", "classId": "11", "productId": "1001", "name": "M", "rakutenCode": "ABC001", "subcode": "02" } ] }, { "classId": "10", "productId": "1001", "name": "カラー", "classType": "2", "classcategory": [ { "classcategoryId": "101", "classId": "10", "productId": "1001", "name": "赤", "rakutenCode": "ABC001", "subcode": null }, { "classcategoryId": "102", "classId": "10", "productId": "1001", "name": "青", "rakutenCode": "ABC001", "subcode": "03" } ] } ], "productsClass": [ { "productClassId": "501", "productId": "1001", "classcategoryId1": "201", "classcategoryId2": "101", "productCode": "ABC0010101", "price02": "2980", "productTypeId": "1", "stockUpdateFlg": "1", "stockUpdateValue": "10", "rcatalogId": "4900000000012", "delvdateChk": "1", "restoreInventoryFlag": "1", "backorderFlag": "0", "normalDelvdateId": "2", "normalDelvdateIdJa": "3営業日以内", "backorderDelvdateId": "4", "backorderDelvdateIdJa": "入荷次第発送" }, { "productClassId": "502", "productId": "1001", "classcategoryId1": "202", "classcategoryId2": "102", "productCode": "ABC0010203", "price02": "2980", "productTypeId": "1", "stockUpdateFlg": "1", "stockUpdateValue": "10", "rcatalogId": "4900000000012", "delvdateChk": "1", "restoreInventoryFlag": "1", "backorderFlag": "0", "normalDelvdateId": "2", "normalDelvdateIdJa": "3営業日以内", "backorderDelvdateId": "4", "backorderDelvdateIdJa": "入荷次第発送" } ]}- 在庫タイプが2:項目選択肢別在庫ではない商品に新規規格を追加する場合
- 指定された項目が不正な場合
- 更新項目が指定されていない場合
- 規格軸数が上限を超える場合
- 規格値が上限を超える場合
- バリエーション数が上限を超える場合
Media typeapplication/json
object
type
required
string
title
required
string
detail
One of:
string
Array<string>
status
integer
Examples
{ "type": "about:blank", "title": "BadRequest", "detail": "在庫タイプが項目選択肢別在庫ではないため、規格の追加はできません"}{ "type": "about:blank", "title": "BadRequest", "detail": [ "指定された項目が不正です: invalidKey" ], "status": 400}{ "type": "about:blank", "title": "BadRequest", "detail": [ "更新項目を1つ以上指定してください" ], "status": 400}{ "type": "about:blank", "title": "BadRequest", "detail": [ "規格軸数は合計2件までです" ], "status": 400}{ "type": "about:blank", "title": "BadRequest", "detail": "規格値は20件までです", "status": 400}{ "type": "about:blank", "title": "BadRequest", "detail": [ "バリエーション数は合計400件までです" ], "status": 400}- 指定された商品が存在しない場合
- 指定された規格が存在しない場合
- 指定された規格値が存在しない場合
Media typeapplication/json
object
type
required
string
title
required
string
detail
One of:
string
Array<string>
status
integer
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}- 指定された規格名が重複している場合
- 指定された規格値名が重複している場合
- 指定された枝番が重複している場合
Media typeapplication/json
object
type
required
string
title
required
string
detail
One of:
string
Array<string>
status
integer
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}サーバー内部エラー
Media typeapplication/json
object
type
required
string
title
required
string
detail
One of:
string
Array<string>
status
integer
Examples
Exampledefault
{ "type": "about:blank", "title": "InternalServerError", "status": 500}