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です。
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 | 上記以外の出品に関するエラー。 | 通常、既存の入札はキャンセルされます。 |
次の記事はこちら