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

前回の記事はこちら

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

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

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


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>



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


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

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

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


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>


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


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

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


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>


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


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



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

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

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



まとめと次回予告

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

さて、私たちの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

上記以外の出品に関するエラー。

通常、既存の入札はキャンセルされます。


トップに戻る