在庫更新API

Yahoo!ショッピングの在庫データベースを更新します。

変更履歴

2023年03月08日

下記エラーコードの情報を修正しました。
・st-02000 → ed-00002

2022年10月04日

エラーコード「ed-10001」を追加しました。

サンプルコード(PHP版)をご用意しています。こちらのページをご確認ください。

存在しない商品コード(item_code)にリクエストした場合の挙動について

エラーレスポンスを返しません。
その後、商品情報が登録されると、事前にリクエストしていた在庫情報と紐づけされます。

リクエストURL

本番環境
https://circus.shopping.yahooapis.jp/ShoppingWebService/V1/setStock
テスト環境
https://test.circus.shopping.yahooapis.jp/ShoppingWebService/V1/setStock

テスト用APIを利用したい場合は、こちらから利用申請をお願いします。

リクエストパラメータ

Web APIの使い方#POSTとは」をご参照ください。

パラメータ 説明
seller_id
(必須)
string ストアアカウントを指定します。
使用できる文字は、小文字の半角英数字、ハイフン「-」、アンダーバー「_」になります。
最大文字数は128文字です。
item_code
(必須)
string 商品コードを指定します。
カンマ「,」区切りで最大1,000個まで指定できます。
個別商品コードを持たない商品については、商品コードのみを指定してください。
個別商品コードを持つ商品については、商品コードと個別商品コードをコロン「:」でつなげてください。
使用できる文字は、共に半角英数字、ハイフン「-」になります。
最大文字数は共に99文字です。
quantity
(必須)
string 在庫数を指定します。
商品コードと同じ個数をカンマ「,」区切りで指定してください。
使用できる文字は、半角数字(-999999999~999999999)、プラス記号「+」、マイナス記号「-」です。
数値にプラス記号「+」が付いている場合は加算、マイナス記号「-」が付いている場合は減算します。
※在庫更新リクエスト内に1件でも加算、減算して999999999 or -999999999を超える値が含まれる場合、全ての在庫更新に失敗します。
数値のみの場合はその値で更新します。
プラス記号「+」はURLエンコードした形式「%2B」にする必要があります。
allow_overdraft integer 在庫数を超過する購入が可能かどうかを指定します。
商品コードと同じ個数をカンマ「,」区切りで指定してください。
0 : 超過購入不可能
1 : 超過購入可能
未指定の場合は、ストア単位で設定されている在庫の超過購入設定値(0/1)を用いて更新します。
stock_close integer 在庫クローズフラグが立っている場合は、在庫切れ状態として扱っています。
商品コードと同じ個数をカンマ「,」区切りで指定してください。
0:在庫クローズ状態の解除
未指定もしくは空の場合は、在庫クローズフラグの更新を行いません。

※在庫データベースにレコードが無い場合は、新規に登録します。
※指定した商品コードに対して1つでもエラーが発生した場合は、全ての更新を取り消します。

サンプルリクエストURL

https://circus.shopping.yahooapis.jp/ShoppingWebService/V1/setStock

サンプルリクエスト

POST /ShoppingWebService/V1/setStock HTTP/1.1
Host: circus.shopping.yahooapis.jp
Authorization: Bearer <アクセストークン>

seller_id=yshop&item_code=item-01:sub-01&quantity=+1

サンプルコード(PHP)

<?php

  $header = [
      'POST /ShoppingWebService/V1/setStock HTTP/1.1',
      'Host: circus.shopping.yahooapis.jp',
      'Authorization: Bearer ' . <アクセストークン>
  ];

  $url   = 'https://circus.shopping.yahooapis.jp/ShoppingWebService/V1/setStock';
  $param = array(
              "seller_id" => '<ストアアカウント>',
              "item_code" => '<商品コード>',
              "quantity"  => '<設定在庫数>',
          );

  // 必要に応じてオプションを追加してください。
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST,  'POST');
  curl_setopt($ch, CURLOPT_HTTPHEADER,     $header);
  curl_setopt($ch, CURLOPT_URL,            $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POST,           true);
  curl_setopt($ch, CURLOPT_POSTFIELDS,     http_build_query($param));

  $response = curl_exec($ch);
  curl_close($ch);

?>

レスポンスフィールド

フィールド 説明
/ResultSet クエリーレスポンスのすべてを含み、次の属性を持ちます。

  • totalResultsAvailable : 指定した条件に該当した在庫情報の総件数です。
  • totalResultsReturned : 返却した在庫情報の総件数です。(=totalResultsAvailable)
  • firstResultPosition : 返却した在庫情報の開始位置です。(1固定)

/ResultSet/Result 各個別レスポンスを含みます。
/ResultSet/Result/ItemCode 商品コード
/ResultSet/Result/SubCode 個別商品コード

個別商品コードを持たない商品の場合は空になります。
/ResultSet/Result/Quantity 更新後の在庫数

空の場合は在庫数が無限大であることを意味します。
ステータスコード207の場合は返却されません。
/ResultSet/Result/ErrorCode ステータスコード207の場合のみ返却されます。
エラーの内容は4.エラーの内容となります。

サンプルレスポンス(更新成功時)

ステータスコード200 OKの場合

HTTP/1.1 200 OK
Content-Type: application/xml;charset=UTF-8

<ResultSet totalResultsAvailable="1" totalResultsReturned="1" firstResultPosition="1">
  <Result>
      <ItemCode>item_01</ItemCode>
      <SubCode>sub_01</SubCode>
      <Quantity>11</Quantity>
  </Result>
</ResultSet>

ステータスコード207 OKの場合

HTTP/1.1 207 OK
Content-Type: application/xml;charset=UTF-8

<ResultSet totalResultsAvailable="1" totalResultsReturned="1" firstResultPosition="1">
  <Result>
      <ItemCode>item_01</ItemCode>
      <SubCode>sub_01</SubCode>
      <Quantity>11</Quantity>
  </Result>
  <Result>
      <ItemCode>item_02</ItemCode>
      <SubCode>sub_02</SubCode>
      <Quantity></Quantity>
      <ErrorCode>st-02104</ErrorCode>
  </Result>
  <Result>
      <ItemCode>item_02</ItemCode>
      <SubCode>あ</SubCode>
      <Quantity></Quantity>
      <ErrorCode>st-02101,st-02104</ErrorCode>
  </Result>
</ResultSet>

エラー

Yahoo!ショッピングで提供している全てのAPIには、共通で利用するエラーコードがあります。エラーの際には、まず始めに以下をご確認ください。

在庫更新APIで固有に返すエラーコードは以下をご覧ください。

エラーコード

コード HTTPステータスコード 説明
st-02999 500 システムエラーが発生しました。
st-02100 400 パラメータ「seller_id」が不正です。
st-02101 400 パラメータ「item_code」が不正です。
st-02102 400 パラメータ「item_code」に指定した商品コードの数が上限値を超えています。
st-02103 400 パラメータ「item_code」に重複する商品コードが含まれています。
st-02104 400 パラメータ「quantity」が不正です。
st-02105 400 パラメータ「quantity」に指定した在庫数の数が商品コードの数と一致しません。
st-02106 400 パラメータ「allow_overdraft」が不正です。
st-02107 400 パラメータ「allow_overdraft」に指定した超過購入設定値の数が商品コードの数と一致しません。
ed-00002 503 メンテナンス中です。
ed-00003 400 ストアアカウントが指定されていません。
ed-00005 400 ストアアカウントの指定が不正です。
ed-00004 400 ストアアカウントが存在しません。
ed-00001 500 システムエラーが発生しました。
ed-10001 207 在庫更新に失敗しました。
リクエストされたいずれかの在庫の更新には成功しているため、207応答になります。
ed-10002 207 在庫更新に成功しているが、更新後の在庫情報の取得に失敗した場合リクエストされたいずれかの在庫の更新には成功しているため、207応答になります。

利用制限

※短い時間の間に同一URLに大量にアクセスを行った場合、一定時間利用できなくなることもございます。(1クエリー/秒)

利用約款

このAPIに関する利用約款はこちら

アプリケーションの管理

目次

利用のルール

開発のヒント