注文APIのListOrders オペレーションを利用して定期的に注文情報を取り込むアプリケーションにおいて、
注文の未抽出期間を発生させないためのリクエスト期間の指定方法のベストプラクティスをご紹介します。
ListOrdersオペレーションでは、以下のリクエストパラメーターを使い注文を取得する期間を指定します。
リクエストパラメーター | 期間指定の対象 |
---|---|
CreatedAfter CreatedBefore |
これらのパラメーターで指定された期間に作成された注文をリクエストします。 |
LastUpdatedAfter LastUpdatedBefore |
これらのパラメーターで指定された期間に更新された注文をリクエストします。 |
期間を指定する各パラメーターにはリクエスト送信の2分以上前の時刻が指定可能ですが、
指定した終了日時までの注文が必ず返却されることは保証されません。
そのため、以下ように前回のリクエスト期間の『終了時刻』を次のリクエストの『開始時刻』に自動的に設定した場合、
未抽出の期間が発生する危険性があります。
このように実際に注文が抽出された期間がリクエストした期間よりも短かい場合、
返却データの『抽出期間の終了日時』が以下のレスポンス要素で返却されます。
レスポンス要素 | 抽出された期間 |
---|---|
CreatedBefore |
この終了日時までの期間に作成された注文が返却されたことを表します。 (開始日時:リクエストパラメーターCreatedAfterの日時) |
LastUpdatedBefore |
この終了日時までの期間に更新された注文が返却されたことを表します。 (開始日時:リクエストパラメーターLastUpdatedAfterの日時) |
*** 未抽出期間の発生防止のため、この日時を必ず記録します。 ***
■ ListOrdersオペレーションのレスポンス例
[ 注文の更新日時(リクエストパラメーターのLastUpdatedAfterおよびLastUpdatedBefore)でフィルターした場合 ]
<?xml version="1.0"?>
<ListOrdersResponse xmlns="https://mws.amazonservices.com/Orders/2013-09-01">
<ListOrdersResult>
<LastUpdatedBefore>2018-08-10T00%3A18%3A00.123Z</LastUpdatedBefore>
<Orders>
<Order> <AmazonOrderId>xxx-xxxxxxx-xxxxxxx</AmazonOrderId> : </Order>
</ListOrdersResult>
<ResponseMetadata>
<RequestId>********-****-****-****-************</RequestId>
</ResponseMetadata>
</ListOrdersResponse>
この例では、リクエストパラメーターのLastUpdatedAfterで指定した日時から
「2018-08-10T00:18:00.123Z」までの間に更新された注文が返却されたことを表します。
この返却された『抽出期間の終了日時』を以下のように次回のリクエスト期間の開始日時として
リクエストパラメーターのLastUpdatedAfterに指定することで、未抽出の期間の発生を防止できます。
開発されているアプリケーションでListOrdersオペレーションを利用して定期的に注文情報を取得している場合には、
注文データ更新の遅延等により指定した終了時刻より前に作成・更新された注文が返却されない状況に備え、
レスポンスに含まれるCreatedBefore要素やLastUpdatedBefore要素のご利用をお願いいたします。