GraphQL Admin API 2026-10 / 正式公開

Purchase Order Read API
発注書が「プレビューなし」でアプリから読めるようになった

inventoryPurchaseOrder / inventoryPurchaseOrders クエリで、発注書の詳細・明細・仕入先名・紐づく在庫移動を取得可能に。ショップをフィーチャープレビューに登録しなくても使える読み取り専用のリリース。

このページの構成
  1. そもそも何が変わるのか(30秒で理解)
  2. 仕組み図解 : スコープとデータのつながり
  3. 取得できるもの/できないもの
  4. 影響を受けるアプリ別の対応
  5. 対応手順(4ステップ)
  6. 設定・クエリのサンプル
  7. 技術者が押さえるべき5つのポイント
  8. 業務に活かせる3つのユースケース
  9. 提案で使える1行サマリ

1そもそも何が変わるのか

これまで公開アプリが発注書(Purchase Order)を読む方法は unstable のプレビューだけだった。
GraphQL Admin API 2026-10 以降で、発注書の読み取りクエリが正式に公開された。必要なのは専用スコープ read_inventory_purchase_orders だけ。

従来 : プレビュー限定

unstable のプレビュー経由でしか読めず、ショップを physical inventory のフィーチャープレビューに登録する必要があった。権限は read_inventory で扱っていた。

2026-10 : 正式公開

API ベータ申請もショップのプレビュー登録も不要。read_inventory_purchase_orders スコープで発注書を読める。読み取り専用。

2仕組み図解 : スコープとデータのつながり

アプリ 付与済みスコープ +ユーザー権限 accessScopes で確認 GraphQL Admin API 2026-10 以降 inventoryPurchaseOrder inventoryPurchaseOrders ID 指定 / ページング一覧 InventoryPurchaseOrder id / name / status origin.supplierName lineItems(明細) transfers(接続) 要 read_inventory_purchase_orders InventoryTransfer 紐づく在庫移動 追加で要 read_inventory_transfers
発注書本体は read_inventory_purchase_orders で読める。ただし transfers 接続の先にある InventoryTransfer を読むには read_inventory_transfers も必要。transfers が不要ならその選択とスコープは省いてよい。

3取得できるもの/できないもの

取得できる(2026-10 公開 API)

発注書の詳細
ID 指定/一覧(ページング)
明細(lineItems)
ページング接続
仕入先スナップショット
origin.supplierName
紐づく在庫移動
transfers 接続

含まれない・使えない

対象外

発注書のミューテーション

今回は読み取り専用のリリース。作成・更新などのミューテーションは含まれない。

削除

referenceName フィールド

InventoryPurchaseOrder.referenceName は公開 2026-10 API に存在しない。プレビューのクエリで選択しているなら、移行前に外す。

対象外

2026-07 以前のバージョン

2026-07 以前の API バージョンには、これらの公開クエリは追加されない。

既存のユーザー権限は引き続き適用される。スコープが揃っていても、操作するユーザーに権限がなければアクセスは拒否されうる。

4影響を受けるアプリ別の対応

アプリの状況必要な対応ポイント
これから発注書を読みたい スコープ追加 read_inventory_purchase_orders をリクエスト API ベータ申請もショップのプレビュー登録も不要
既存のプレビュー連携
read_inventory で読んでいた
要対応 read_inventory_purchase_orders を取得 unstable を含め、read_inventory だけでは発注書を読めなくなった。他の在庫リソースに使うなら read_inventory は残す
発注書スコープを付与済み スコープ追加不要 read_inventory_purchase_orders か write_inventory_purchase_orders(読み取りを含む)があれば OK。クエリは公開版のフィールド名・型と照合する
発注書を読まないアプリ 対応不要 —

5対応手順(4ステップ)

1

リクエストするスコープを更新

read_inventory_purchase_orders を追加。transfers が必要なら read_inventory_transfers も追加。他の必要なスコープは残す。

2

新しい権限を実際に付与してもらう

設定変更をデプロイし、既存インストールでスコープ承認フローを完了。リクエストを変えただけでは付与されない。currentAppInstallation.accessScopes で確認。

3

クエリを更新してテスト

/admin/api/2026-10/graphql.json を叩く。2026年10月1日より前に組み込む場合、2026-10 はリリース候補なのでテスト用途に限る。

4

開発ストアで結果を確認

発注書と紐づく在庫移動があるストアで、スキーマ検証エラーや ACCESS_DENIED が出ないことを確認する。

アクセスが拒否されたら、アクセススコープと操作しているユーザーの権限の両方を確認する。

6設定・クエリのサンプル

shopify.app.toml

発注書と紐づく在庫移動の両方が必要な Shopify CLI アプリの例。

[access_scopes]
scopes = "read_inventory_purchase_orders,read_inventory_transfers"
既存のスコープ一覧を置き換えずにマージする。対応する write スコープを持っているなら、重複する read スコープはリクエスト不要。
GraphQL

先頭 5 件の発注書を、明細と紐づく移動を最大 5 件ずつ付けて取得する例。

query PurchaseOrders {
  inventoryPurchaseOrders(first: 5) {
    nodes {
      id
      name
      status
      origin {
        supplierName
      }
      lineItems(first: 5) {
        nodes {
          id
          title
        }
      }
      transfers(first: 5) {
        nodes {
          id
          name
        }
      }
    }
  }
}

残りのレコードは各接続をページングして取得する。transfers が不要なら、その選択と追加スコープは省く。

7技術者が押さえるべき5つのポイント

1. read_inventory だけでは読めなくなった

プレビュー連携は unstable も含め、read_inventory だけでは発注書を読めない。既存連携を放置すると ACCESS_DENIED になりうるので、read_inventory_purchase_orders を先に取得する。

2. referenceName を消してから移行

InventoryPurchaseOrder.referenceName は公開 API に無い。プレビューのクエリに残っているとスキーマ検証で落ちるので、2026-10 へ切り替える前に外す。

3. transfers は別スコープ

発注書から辿れる InventoryTransfer を読むには read_inventory_transfers も必要。不要なら選択ごと省いて、スコープを最小に保てる。

4. スコープを「リクエスト」しても「付与」されない

設定をデプロイした後、既存インストールでスコープ承認フローを完了させて初めて付与される。currentAppInstallation.accessScopes で付与状況を必ず確認する。

10/1

5. バージョンと読み取り専用の前提

使えるのは 2026-10 以降だけ(2026-07 以前には追加されない)。2026年10月1日より前は 2026-10 がリリース候補なので本番では使わない。今回のリリースは読み取り専用でミューテーションは含まれないため、発注書の作成・更新を伴う設計はこの API だけでは組めない。

8業務に活かせる3つのユースケース

USE CASE 1

仕入先別の発注状況ダッシュボード

課題
発注書の状況を管理画面で 1 件ずつ見るしかなく、仕入先ごとの発注一覧をまとめて把握しにくい。
打ち手
カスタムアプリで inventoryPurchaseOrders をページング取得し、status と origin.supplierName で集計して一覧表示する。
効果
プレビュー登録なしで、仕入先・ステータス別の発注状況を一画面で確認できる。
技術メモ
必要なのは read_inventory_purchase_orders だけ。transfers を表示しないなら read_inventory_transfers は不要。
Shopify ERP 会計
USE CASE 2

発注データを社内システムへ連携する

課題
Shopify で作った発注書の内容を、社内の在庫・会計システムに手入力で写している。
打ち手
連携アプリで発注書の詳細と lineItems を定期的に読み取り、社内システムに転記する。
効果
転記作業と入力ミスを減らせる。公開 API なので unstable に依存しない連携にできる。
技術メモ
読み取り専用なので、社内システム → Shopify の書き戻しはこの API ではできない。2026-10 を指定し、明細はページングで取り切る。
PO
USE CASE 3

発注書と在庫移動をひも付けて追跡する

課題
どの発注書に対してどの在庫移動が作られているかを、別々の画面で突き合わせている。
打ち手
発注書クエリで transfers 接続を選択し、発注書と紐づく InventoryTransfer を 1 回のクエリでまとめて取得する。
効果
発注書ごとに紐づく移動を一覧でき、突き合わせの手間が減る。
技術メモ
read_inventory_purchase_orders に加えて read_inventory_transfers が必要。開発ストアで発注書と紐づく移動を用意して、ACCESS_DENIED が出ないか確認する。

9提案で使える1行サマリ

「GraphQL Admin API 2026-10 から、発注書の詳細・明細・仕入先名・紐づく在庫移動を
プレビュー登録なし・専用スコープ(read_inventory_purchase_orders)だけで読み取れる。
既存のプレビュー連携は read_inventory だけでは読めなくなるので、スコープの再取得が必須。」