不正確な在庫状況

Availability パラメータは、在庫がない商品をレスポンスから除外するのに便利です。ただし、このパラメータは絶対的に信頼できるものではありません。次のような場合でも、商品の在庫がない可能性があります。

例えば、親 バリエーション と親 コレクション などの一部の商品は実際の商品を表しているのではなく、抽象的なものであるため、在庫ありになることはありません。ただし、これらの親商品が、在庫ありとして返されることがあります。次のリクエストは、 Availability パラメータを使用している場合でも、親コレクション商品を返します。

http://ecs.amazonaws.com/onca/xml?
Service=AWSECommerceService&
AWSAccessKeyId=[AWS アクセスキー ID]&
Operation=ItemLookup&
ItemId=B0006PLAOE&
Availability=Available&
MerchantId=All&
ResponseGroup=ItemAttributes,Offers&
Condition=All

このレスポンス例では親コレクション商品が返されているので、在庫があるように見えるかもしれません。しかし、商品が出品情報に関連付けられていないため、購入の対象にはなりません。

<Item>
  <ASIN>B0006PLAOE</ASIN>
  ...
  <Offers>
    <TotalOffers>0</TotalOffers> 

在庫があっても購入できないという矛盾した状況は、 Availability パラメータが役に立つといっても、実際に購入できる商品を特定する最終的な手段にはならないことを示しています。この章の冒頭で説明したように、在庫を確認するためのより確実な方法は、商品に OfferListingId があるかどうかを調べることです。また、上の例で、TotalOffers の値を確認することで、商品に出品情報があるかどうかを判断できます。

商品の在庫状況を含めるための処理

1ItemSearchリクエストに、 Availability = Availableを指定します。
2リクエストに、 ResponseGroup = Offersを指定します。
3レスポンスでTotalOffersの値がゼロより大きいことを確認します。

たとえ Availability パラメータは絶対的に信頼できるものではないとしても、便利なパラメータです。このパラメータを使用することで、OfferListingId がない商品が返されるのを防ぐことができます。このフィルタリングにより、返された商品に OfferListingId があることを確認するためのテスト量が削減されます。