• No : 1591
  • 公開日時 : 2026/07/31 11:01
  • 印刷

APIバージョンv1.6への移行方法について

カテゴリー : 

回答

OPENLOGI API v1.6 へ移行する際の手順と、バージョン間の仕様差分・対処方法をこのページでご案内します。

APIの全体仕様や個別エンドポイントの詳細は、APIリファレンスをご参照ください。

目次

本ガイドの対象読者

  • OPENLOGI API v1.5 以下をご利用中で、v1.6 への移行作業を行う開発者

変更概要

  • APIバージョン v1.6 がリリースされました。v1.5 以下の旧バージョンは移行期間を経て廃止されます。移行期間とステータスの考え方はAPIバージョンについてをご参照ください。
  • v1.6 では、一覧系GET APIにカーソルベースのページネーションが導入されました。これ以外については、v1.5 からの仕様変更はございません。

必ず X-Api-Version ヘッダで 1.6 を明示してください

v1.6 を利用するには、すべてのAPIリクエストに X-Api-Version ヘッダを明示的に指定する必要があります。

指定方法

リクエストヘッダに以下を追加してください。

X-Api-Version: 1.6

curlの場合の例:

export TOKEN="YOUR_API_TOKEN"
curl -sG 'https://api.openlogi.com/api/shipments' \
  --variable '%TOKEN' \
  --expand-header 'Authorization: Bearer {{TOKEN}}' \
  -H 'X-Api-Version: 1.6'

推奨事項

  • HTTPクライアントの共通ヘッダ設定として X-Api-Version: 1.6 を一元的に付与することを推奨します。エンドポイントごとに付け忘れが発生しないようにしてください。
  • 既存コードに X-Api-Version を指定していない箇所が残っていないか、移行時に全リクエスト経路の棚卸しを行ってください。

旧バージョンの扱いについて

X-Api-Version ヘッダを指定しないリクエストは、旧バージョンで動作するのでご注意ください。

旧バージョンは将来 Deprecated・End of Life となります。意図しない旧バージョン利用を避けるためにも、v1.6 への移行に合わせてすべてのリクエストでバージョンを明示することを強く推奨します。

影響を受けるエンドポイント一覧

v1.6 で仕様変更があるのは、以下の一覧系GETエンドポイントのみです。

カテゴリ エンドポイント 概要
商品 GET /api/items 商品一覧
商品 GET /api/items/{account_id} code指定の商品一覧
入荷依頼 GET /api/warehousings 入荷依頼一覧
入荷実績 GET /api/warehousings/stocked 直近の入荷実績
入荷実績 GET /api/warehousings/stocked/{year}/{month}/{day} 指定年月日の入荷実績
出荷依頼 GET /api/shipments 出荷依頼一覧
出荷依頼 GET /api/shipments/{account_id} identifier指定の出荷依頼一覧
出荷実績 GET /api/shipments/shipped 直近の出荷実績
出荷実績 GET /api/shipments/shipped/{year}/{month}/{day} 指定年月日の出荷実績

ご利用中のアプリケーションが上記いずれかを呼び出している場合、以下「変更点ごとの仕様と対処方法」をご確認のうえ対応してください。

変更点ごとの仕様と対処方法

1. レスポンスへの metadata.page の追加

v1.6 では、一覧系GETのレスポンスに metadata.page プロパティが必ず含まれるようになります。

Before(v1.5 以下)

{
  "shipments": [
    { "id": "AB001-S000001", "...": "..." },
    { "id": "AB001-S000002", "...": "..." }
  ]
}

After(v1.6 以降)

{
  "shipments": [
    { "id": "AB001-S000001", "...": "..." },
    { "id": "AB001-S000002", "...": "..." }
  ],
  "metadata": {
    "page": {
      "next_cursor": "eyJrZXkiOjEwMDAwMCwic2FtcGxlTWV0YWRhdGEiOnRydWV9",
      "has_more": true
    }
  }
}

metadata.page の各プロパティ

プロパティ 説明
next_cursor string または null 次ページ取得用カーソル。最終ページでは null
has_more boolean 次ページが存在する場合 true、最終ページでは false

対処方法

  • レスポンスをパースしている箇所で、shipments / items / warehousings 等の配列だけでなく metadata.page を読み取れるようにしてください。
  • JSONスキーマで厳密にレスポンスを検証している場合は、metadata プロパティを許容するようにスキーマを更新してください。

2. リクエストパラメータ cursor / limit の追加

v1.6 から、影響を受ける一覧系GETエンドポイントに以下のクエリパラメータが追加されました。

パラメータ 必須 デフォルト 上限 説明
cursor string 任意 なし 次ページ取得用カーソル。前回レスポンスの metadata.page.next_cursor の値をそのまま指定
limit integer 任意 10 1,000 1ページあたりの取得件数

対処方法

  • 1リクエストあたりの取得件数を増やしたい場合は、limit を明示してください(上限1,000件)。
  • 次のページを取得する際は、レスポンスの metadata.page.next_cursor の値を cursor パラメータにそのまま渡してください。

1ページ目のリクエスト(limit=100 を明示):

export TOKEN="YOUR_API_TOKEN"
curl -sG 'https://api.openlogi.com/api/shipments' \
  --variable '%TOKEN' \
  --expand-header 'Authorization: Bearer {{TOKEN}}' \
  -H 'X-Api-Version: 1.6' \
  --data-urlencode 'limit=100'

レスポンス例:

{
  "shipments": [
    { "id": "AB001-S000001", "...": "..." },
    { "id": "AB001-S000002", "...": "..." },
    ...
  ],
  "metadata": {
    "page": {
      "next_cursor": "eyJrZXkiOjEwMDAwMCwic2FtcGxlTWV0YWRhdGEiOnRydWV9",
      "has_more": true
    }
  }
}

shipments 配列には、指定した limit の件数(この例では100件)が入ります。

2ページ目のリクエスト(前回レスポンスの next_cursor を cursor パラメータに指定):

export TOKEN="YOUR_API_TOKEN"
curl -sG 'https://api.openlogi.com/api/shipments' \
  --variable '%TOKEN' \
  --expand-header 'Authorization: Bearer {{TOKEN}}' \
  -H 'X-Api-Version: 1.6' \
  --data-urlencode 'limit=100' \
  --data-urlencode 'cursor=eyJrZXkiOjEwMDAwMCwic2FtcGxlTWV0YWRhdGEiOnRydWV9'

3. デフォルト limit=10 による件数切り詰め

v1.5 以下で呼び出していた一覧系GETは、v1.6 ではデフォルトで先頭10件しか返却されません。全件取得を前提とした実装は、移行後にエラーにならずに件数が欠落するため、必ず対応が必要です。

影響例

  • v1.5: GET /api/shipments → その時点の未出荷の出荷依頼を全件取得していた
  • v1.6: GET /api/shipments → デフォルト limit=10 が効き、先頭10件のみ返却。has_more: true となっていても、追加で cursor を指定するリクエストを発行しない限り続きは取得できない

対処方法(実装パターン)

全件取得が必要な処理は、has_more が false になるまで next_cursor で追従する実装に書き換えてください。limit は実用的には100〜1,000の範囲を推奨します。

curl と jq を使った bash 例:

#!/bin/bash
set -e

export TOKEN="YOUR_API_TOKEN"
ENDPOINT="https://api.openlogi.com/api/shipments"
OUTPUT="shipments.jsonl"
: > "$OUTPUT"

cursor=""
while :; do
  if [ -z "$cursor" ]; then
    response=$(curl -sG "$ENDPOINT" \
      --variable '%TOKEN' \
      --expand-header 'Authorization: Bearer {{TOKEN}}' \
      -H "X-Api-Version: 1.6" \
      --data-urlencode "limit=100")
  else
    response=$(curl -sG "$ENDPOINT" \
      --variable '%TOKEN' \
      --expand-header 'Authorization: Bearer {{TOKEN}}' \
      -H "X-Api-Version: 1.6" \
      --data-urlencode "limit=100" \
      --data-urlencode "cursor=${cursor}")
  fi

  echo "$response" | jq -c '.shipments[]' >> "$OUTPUT"

  # 次ページ有無の確認
  has_more=$(echo "$response" | jq -r '.metadata.page.has_more')
  if [ "$has_more" != "true" ]; then
    break
  fi

  # 次ページカーソルの取得
  cursor=$(echo "$response" | jq -r '.metadata.page.next_cursor')
done

注意事項

  • has_more: true のときは必ず next_cursor が文字列として返却されます。
  • 同じ cursor を使ったリクエストを繰り返すと同じ結果が返ってきます。
  • cursor の値はクライアント側で生成・加工しないでください。常にレスポンスで受け取った値をそのまま使ってください。

4. id / code / identifier 指定で複数件取得する場合の注意

id や code、identifier などのクエリパラメータで複数件を指定して取得するケース(例: GET /api/items?id=A,B,C)も、v1.6 ではデフォルト limit=10 の影響を受けます。

影響例

  • v1.5: GET /api/items?id=A,B,C,...,Z(26件指定)→ 26件すべて返却
  • v1.6: 同じリクエスト → 先頭10件のみ返却。指定した残り16件は欠落

対処方法

  • 指定する件数に合わせて limit を明示してください。例えば100件単位でチャンク化して呼び出している場合は、limit=100 を明示します。
  • cursor による追従にも対応すると、より堅牢になります。

export TOKEN="YOUR_API_TOKEN"
curl -sG 'https://api.openlogi.com/api/items' \
  --variable '%TOKEN' \
  --expand-header 'Authorization: Bearer {{TOKEN}}' \
  -H 'X-Api-Version: 1.6' \
  --data-urlencode 'id=AB001-I000001,AB001-I000002,...' \
  --data-urlencode 'limit=100'

5. レスポンス並び順の明示

v1.6 で各エンドポイントの並び順がリファレンス上で明文化されました。v1.5 と比較して並び順そのものに変更はありませんが、cursor による追従の前提となるため改めてご確認ください。

エンドポイント 並び順
GET /api/items 商品ID 昇順
GET /api/items/{account_id} 商品ID 昇順
GET /api/warehousings 入荷ID 降順
GET /api/warehousings/stocked 初回入荷日時と入荷ID 昇順
GET /api/warehousings/stocked/{year}/{month}/{day} 初回入荷日時と入荷ID 昇順
GET /api/shipments 出荷ID 昇順
GET /api/shipments/{account_id} 出荷ID 昇順
GET /api/shipments/shipped 出荷完了日時と出荷ID 昇順
GET /api/shipments/shipped/{year}/{month}/{day} 出荷完了日時と出荷ID 昇順

トラブルシューティング

取得件数が10件で止まる

途中で取得が止まる

  • has_more: true のときに next_cursor を cursor パラメータに指定して再リクエストしているかご確認ください。
  • ループの終了条件を has_more == false ではなく、レスポンス件数が limit 未満かどうかで判定していないかご確認ください。limit 未満の件数が返っても has_more: true となる場合があるため、この判定では取得が途中で止まります。

カーソルが進まない

  • 同一の cursor を使い回していないかご確認ください。
  • cursor の値をクライアント側で加工していないかご確認ください(受け取った文字列をそのまま指定してください)。

v1.6 を指定しているのにレスポンスに metadata プロパティが含まれない

  • そのエンドポイントは「影響を受けるエンドポイント一覧」に含まれていない可能性があります。一覧表に含まれないエンドポイント(POST/PUT/DELETE 系、単一リソース GET、その他の GET)は v1.6 でも metadata を返しません。
  • 影響を受けるエンドポイント一覧」をご確認ください。
  • バージョン番号が数字文字列となっていることをご確認ください。X-Api-Version: v1.6 ではなく X-Api-Version: 1.6 が正しい指定です。

metadata プロパティでJSONスキーマ検証が失敗する

  • v1.5 用に書かれたJSONスキーマが metadata プロパティを許容していない可能性があります。クライアントアプリケーション側のスキーマ定義を更新してください。

バージョンを上げたつもりが旧バージョンで動いている

  • すべてのリクエストに X-Api-Version: 1.6 が付与されているかご確認ください。
  • バージョン番号が数字文字列となっていることをご確認ください。X-Api-Version: v1.6 ではなく X-Api-Version: 1.6 が正しい指定です。
  • 必ず X-Api-Version ヘッダで 1.6 を明示してください」をご確認ください。