Purchase Order Read API 発注書が「プレビューなし」でアプリから読めるようになった
原題: Purchase Order Read API
- Inventory
- Admin API
- GraphQL
- Purchase Orders
- Access Scopes
- Inventory Transfers
- 一般提供
- 2026-10
図解 : Purchase Order Read API(発注書の読み取り API が正式公開) GraphQL Admin API 2026-10 / 正式公開 Purchase Order Read API 発注書が「プレビューなし」でアプリから読めるようになった inventoryPurchaseOrder / inventoryPurchaseOrders クエリで、発注書の詳細・明細・仕入先名・紐づく在庫移動を取得可能に。ショップをフィーチャープレビューに登録しなくても使える読み取り専用のリリース。 このページの構成 そもそも何が変わるのか(30秒で理解) 仕組み図解 : スコープとデータのつながり 取得できるもの/できないもの 影響を受けるアプリ別の対応 対応手順(4ステップ) 設定・クエリのサンプル 技術者が押さえるべき5つのポイント 業務に活かせる3つのユースケース 提案で使える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 仕組み図解 : スコープとデータのつながり 発注書本体は 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 で付与状況を必ず確認する。 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 は不要。 USE CASE 2 発注データを社内システムへ連携する 課題 Shopify で作った発注書の内容を、社内の在庫・会計システムに手入力で写している。 打ち手 連携アプリで発注書の詳細と lineItems を定期的に読み取り、社内システムに転記する。 効果 転記作業と入力ミスを減らせる。公開 API なので unstable に依存しない連携にできる。 技術メモ 読み取り専用なので、社内システム → Shopify の書き戻しはこの API ではできない。2026-10 を指定し、明細はページングで取り切る。 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 だけでは読めなくなるので、スコープの再取得が必須。」 source : shopify.dev / changelog / purchase-order-read-api 公開日 : 2026-09-17(Shopify Developer Changelog)