9.【ハンズオンプロジェクト②】Trading APIで商品を新規登録・更新・削除する (CUD)

前回の記事はこちら

前回のハンズオンプロジェクト第一弾では、GetItemコールを使って商品の情報を「読み取る(Read)」スキルをマスターしました。APIから返ってきたXMLのレスポンスを読み解く、という重要な一歩を踏み出しましたね。

今回は、プロジェクトの第二弾です。商品管理の残りの部分、「C (Create) - 作成」「U (Update) - 更新」「D (Delete) - 削除」を一気に体験します。この三つの操作をマスターすれば、あなたはAPIを通じた商品管理の基本を完全に習得したことになります。

さあ、Postmanを開いて、一緒にプロジェクトを完成させましょう!

API Project Part 2

1. C (Create) - AddItemで商品を新規登録する

まずは、API経由でサンドボックスに新しい商品をゼロから出品してみましょう。

ステップ1:Postmanの準備

Postmanで新しいリクエストを作成し、「AddItem Project」と名付けます。メソッドは POST、URLは https://api.sandbox.ebay.com/ws/api.dll です。

ヘッダータブには、これまでのプロジェクトと同様に認証情報などを設定しますが、一番重要な X-EBAY-API-CALL-NAME には AddItem と指定してください。

ステップ2:リクエストボディの作成

AddItemは、出品する商品の詳細な情報をすべて含める必要があるため、リクエストボディが少し長くなります。Bodyタブに、以下のXMLを貼り付けてください。これは、出品に必要な最小限の項目を含んだサンプルです。

<?xml version="1.0" encoding="utf-8"?>
<AddItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
  <ErrorLanguage>en_US</ErrorLanguage>
  <WarningLevel>High</WarningLevel>
  <Item>
    <Title>【API出品】日本の素敵なテスト商品</Title>
    <Description>これはPostmanとTrading APIを使って出品されたテスト商品です。</Description>
    <PrimaryCategory>
      <CategoryID>29223</CategoryID>
    </PrimaryCategory>
    <StartPrice>1.0</StartPrice>
    <CategoryMappingAllowed>true</CategoryMappingAllowed>
    <Country>US</Country>
    <Currency>USD</Currency>
    <DispatchTimeMax>3</DispatchTimeMax>
    <ListingDuration>Days_7</ListingDuration>
    <ListingType>Chinese</ListingType>
    <PictureDetails>
      <PictureURL>https://mysamplepicture.com/14.jpg</PictureURL>
    </PictureDetails>
    <PostalCode>95125</PostalCode>
    <Quantity>1</Quantity>
    <ItemSpecifics>
      <NameValueList>
        <Name>Title</Name>
        <Value>Harry Potter and the Philosophers Stone</Value>
      </NameValueList>
      <NameValueList>
        <Name>Publisher</Name>
        <Value>Smashwords</Value>
      </NameValueList>
      <NameValueList>
        <Name>Author</Name>
        <Value>JK Rowling</Value>
      </NameValueList>
      <NameValueList>
        <Name>Language</Name>
        <Value>English</Value>
      </NameValueList>
    </ItemSpecifics>
    <ReturnPolicy>
      <ReturnsAcceptedOption>ReturnsAccepted</ReturnsAcceptedOption>
      <RefundOption>MoneyBack</RefundOption>
      <ReturnsWithinOption>Days_30</ReturnsWithinOption>
      <ShippingCostPaidByOption>Buyer</ShippingCostPaidByOption>
    </ReturnPolicy>
    <ShippingDetails>
      <ShippingType>Flat</ShippingType>
      <ShippingServiceOptions>
        <ShippingServicePriority>1</ShippingServicePriority>
        <ShippingService>USPSMedia</ShippingService>
        <ShippingServiceCost>2.50</ShippingServiceCost>
      </ShippingServiceOptions>
    </ShippingDetails>
    <Site>US</Site>
  </Item>
</AddItemRequest>
Postman Screenshot 1

ステップ3:送信とItemIDの記録

「Send」ボタンを押してリクエストを送信します。成功すると、レスポンスに <Ack>Success</Ack> と表示されるはずです。

そして、レスポンスの中にある <ItemID> というタグを探してください。これが、新しく出品されたあなたの商品固有のIDです。

重要: このItemIDを必ずコピーして、メモ帳などに保存しておいてください。 次の「更新」と「削除」のステップで必要になります。
ItemID Response

2. U (Update) - ReviseItemで商品情報を更新する

次に、先ほど出品した商品の価格を更新してみましょう。

ステップ1:Postmanの準備

新しいリクエスト「ReviseItem Project」を作成します。ヘッダーの X-EBAY-API-CALL-NAME には ReviseItem と指定します。

ステップ2:リクエストボディの作成

ReviseItemのボディは非常にシンプルです。どの商品を(ItemID)、どの項目を(例:StartPrice)、どう変更したいか、だけを記述します。

<?xml version="1.0" encoding="utf-8"?>
<ReviseItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
  <Item>
   <ItemID>ここに先ほど記録したItemIDを入力</ItemID>
   <Description>APIでReviseされました</Description>
   <StartPrice>199</StartPrice>
  </Item>
</ReviseItemRequest>
ReviseItem Postman

ステップ3:送信と更新内容の確認

リクエストを送信し、成功を確認します。では、本当に価格が変更されたか、どうやって確かめれば良いでしょうか?

ここで、前回のプロジェクトでマスターした GetItem の出番です。先ほど作ったGetItemリクエストのタブに戻り、同じItemIDで再度リクエストを送信してみてください。レスポンスの中の <StartPrice> が「1」から「199」に変わっていれば、更新成功です!

Check Update

3. D (Delete) - EndItemで出品を終了する

最後に、この商品の出品を取り下げて、プロジェクトを締めくくりましょう。

ステップ1:Postmanの準備

新しいリクエスト「EndItem Project」を作成し、ヘッダーの X-EBAY-API-CALL-NAME には EndItem と指定します。

ステップ2:リクエストボディの作成

EndItemに必要なのは、どの商品を(ItemID)、どういう理由で(EndingReason)終了させるか、です。EndingReasonは必須項目です。

<?xml version="1.0" encoding="utf-8"?>
<EndItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
   <ItemID>ここに先ほど記録したItemIDを入力</ItemID>
   <EndingReason>NotAvailable</EndingReason>
</EndItemRequest>
EndItem Postman

ステップ3:送信と最終確認

リクエストを送信し、成功を確認します。

EndItem Response

そして、最後の最後に、もう一度だけGetItemでこのItemIDを問い合わせてみてください。

今度は <Ack>Success</Ack> というレスポンスが返ってくるはずですが、<ListingStatus> では Ended が見つけられます。ここに注意すべきなのは、厳密に言えばEndItemは出品のデータを削除することではなく、出品を終了(無効)にするAPI呼び出しです。実際の商品のデータの削除は、eBayのシステムが自動的に実行(数ヶ月後)します。

Ended Status

サイトでの効果は、下の画像のように見えます。

Ended Listing on Site

まとめと次回予告

素晴らしい!これで、あなたの商品はAPIによって生まれ(Create)、変更され(Update)、そしてその役目を終えました(Delete)。このCUDサイクルを自らの手で完遂したことで、あなたはAPIによる商品管理の、最も重要で基本的なスキルを完全に手にしたことになります。

Completion Image

さて、私たちのAPI入門講座も、いよいよ次が最終回です。

最終回では、これまでの学びを振り返り、エラーへの対処法やAPIの利用上限といった、より実践的な知識をご紹介します。 さらに、Trading API以外の便利なAPIの世界も覗いてみましょう。この旅の締めくくりと、次なるステップへの展望をお届けします。

APIは難しくない!あなたのビジネスを加速させる魔法の杖です。

リファレンス1:AddItem主要必須フィールドと設定例

フィールド名 設定例 簡単な説明
Item/Title 「テスト商品:日本の素敵な品」 商品のタイトルです。
Item/PrimaryCategory/CategoryID 155174 (アニメフィギュアの例) 商品が属するeBayのメインカテゴリIDです。適切なIDはeBayサイトやGetCategoriesAPIで確認できます。
Item/StartPrice (と currencyID) 19.99 (USD) 商品の開始価格と通貨単位です。
Item/Country JP (日本) 商品の所在地(国)です。
Item/Currency USD (米ドル) 価格表示に使用する通貨です。
Item/PaymentMethods PayPal 受け付ける支払い方法です。国際取引ではPayPalが一般的です。
Item/ListingDuration GTC (Good 'Til Cancelled) 出品期間です。「GTC」はキャンセルされるまで出品が継続されます。
Item/Quantity 10 販売可能な在庫数です。
Item/PictureDetails/PictureURL https://example.com/image.jpg 商品画像のURLです。複数指定可能です。
Item/ShippingDetails/... (各種送料設定) 国内・国際配送のサービス、費用などを設定します。
Item/ReturnPolicy/... (各種返品ポリシー設定) 返品の可否、期間、返金方法、送料負担者などを設定します。

リファレンス2:ReviseItem更新可能フィールドと注意点

更新対象 XML要素 更新時の注意点
商品タイトル Item/Title 通常、いつでも更新可能です。
価格 Item/StartPrice オークション形式で入札がない場合、または固定価格形式では通常更新可能です。特定の条件下では制限がある場合があります。
在庫数 Item/Quantity 固定価格形式で更新可能です。在庫を0にすると出品が終了する(または非表示になる)場合があります。
商品説明 Item/Description 通常更新可能です。<DescriptionReviseMode>要素で、既存の説明に追加(Append)、前置(Prepend)、または完全置換(Replace)するかを指定できます。
画像 Item/PictureDetails/PictureURL 画像の追加、削除、順序変更が可能です。
Item Specifics Item/ItemSpecifics/NameValueList 商品属性の追加、変更、削除が可能です。

リファレンス3:EndItem主なEndingReasonとその意味

EndingReasonコード 意味 影響
NotAvailable 商品が販売できなくなった(例:在庫切れ、販売中止)。 通常、既存の入札はキャンセルされます。最も使われています。
Incorrect 出品情報に誤りがあった(例:価格、説明の間違い)。 通常、既存の入札はキャンセルされます。
LostOrBroken 商品が紛失した、または破損した。 通常、既存の入札はキャンセルされます。
SellToHighBidder (オークション形式で有効な入札がある場合のみ) 最高額入札者に商品を販売する。 取引が成立し、オークションが終了します。この理由を選択するには、通常、特定の条件(例:最低落札価格到達)を満たす必要があります。
OtherListingError 上記以外の出品に関するエラー。 通常、既存の入札はキャンセルされます。

次の記事はこちら

トップに戻る