【一言解説】Shopify 2025-01 技術アップデート

みなさんこんにちは。リワイア加藤です。

Shopifyでは3ヶ月に1回新しいAPIのリリースが行われます。今回は2025年1月公開の「2025-01」バージョンで新しく公開されたアップデートを、公式のDerveloper changelogから一言解説を添えて紹介していきます。

12月30日から1月3日にかけて公開されたアップデートは「31件」でした。カテゴリごとに分類してみましたので、ぜひ気になったものを個別に確認してみてください。

商品関連

Enhanced variant query limits for single product queries

productやproductByHandleなど単一商品に対するクエリで、バリエーションの取得上限が2000件まで拡張。ただし、複数クエリの同時実行時やvariants接続以外の方法でのアクセス時には適用されない。

ACTION REQUIRED
New validation against duplicate handles in productCreate, productUpdate, and productSet mutation inputs

productCreateとproductUpdateのproductInput、およびproductSetのproductSetInputにおけるhandleフィールドで重複チェックが実施されるように。新規作成や更新時にハンドルの重複が防止される。ただし、handleを指定しない場合は影響なし。

ACTION REQUIRED
Public apps must use new GraphQL Product APIs to be accepted in the Shopify App Store

  • 2025年1月6日以降:新規アプリはGraphQL Product APIの使用が必須に。REST APIのProductリソースを使用するアプリは承認されない
  • 2025年2月1日以降:既存の公開アプリを含む全ての公開アプリがGraphQL Product APIへの移行が必須

Filter products by category or taxonomy metafield

コレクションと検索結果内の商品をCategoryFilter(カテゴリーID)とTaxonomyMetafieldFilter(分類metafieldの名前空間、キー、値)で絞り込み可能に。

ディスカウント関連

BXGY discount support for subscriptions

Buy X Get Y(BXGY)割引で、「X」がサブスクリプション、「Y」が一回限りの購入アイテム(割引価格または無料)の場合のみ、サブスクリプション商品をサポートできるように。

Minimum requirement is now optional on automatic discounts

自動割引(商品、注文、送料無料)における最小購入条件の指定が任意に変更。DiscountAutomaticBasicとDiscountAutomaticFreeShippingのminimumRequirementフィールドがnull許容に。

オンラインストア関連

Deprecation of storefrontCustomerAccessTokenCreate Mutation

storefrontCustomerAccessTokenCreateミューテーションが非推奨に。Storefront APIが顧客アカウントAPIのアクセストークンを@inContextを通じて直接サポートするようになり、カート作成や購入者情報の更新に使用可能。OAuth2仕様でアクセストークンを取得し、直接Storefront APIで使用するように移行が必要。

フルフィルメント関連

ACTION REQUIRED
Fulfillment Hold Access Update For Node Queries

アプリは適切なアクセススコープを持つ注文の保留(fulfillment holds)のみを取得可能に。保留情報を取得するには、マーチャント管理、割り当て済み、サードパーティー、またはマーケットプレイス向けの各fulfillmentオーダーの読み取りスコープが必要。十分なアクセス権がない場合、該当の保留情報はnullとして返される。

ReverseFulfillmentOrder.order field is nullable as of 2025-01

ReverseFulfillmentOrder.orderフィールドがnull許容に変更。クライアントがread_all_ordersスコープを持っていない場合で、注文が60日以上経過または存在しない場合はnullを返す。(それ以前のバージョンではGraphQLエラーが返されていた。)

Change to FulfillmentOrderSortKeys

GraphQL Admin APIのFulfillmentOrderSortKeysからRELEVANCEが有効な値として削除。

ACTION REQUIRED
Apply multiple holds to a single fulfillment order

1つの配送注文(fulfillment order)に対して複数のホールド(保留)を設定可能に。

  • 主な変更点:
    • 1つの配送注文に対して、アプリごとに最大10個のアクティブなホールドを設定可能
    • 新しいhandleフィールドで重複を防止
    • 新しいwebhookトピック(fulfillment_holds/addedとfulfillment_holds/released)が追加
    • ホールド解除時にはホールドIDの指定を推奨
    • REST APIでは複数ホールド機能をサポートしない

New delivery promise participants API

delivery promise対応業者をdeliveryPromiseParticipantsで照会可能に。また、deliveryPromiseParticipantsUpdateミューテーションで更新が可能に。

 

顧客関連

ACTION REQUIRED
New customer’s webhook and changes to existing customer’s webhooks payload

顧客関連のwebhookが変更。新規にcustomers/purchasing_summary webhookが追加され、既存のwebhookからtags、email_marketing_consent、sms_marketing_consent、および注文関連フィールド(last_order_idなど)が削除。

これらの情報は、それぞれ専用のwebhookまたは新しい購入サマリーwebhookから取得するように変更。

New customer input field for the OrderCreate mutation

customer_idフィールドが非推奨となり、新しいcustomerフィールドが追加。これにより、注文作成時に既存顧客との関連付けや顧客情報の作成/更新(upsert)が可能に。注文作成前に顧客IDを取得する手順が不要になり、より柔軟な操作が可能に。

 

カート/チェックアウト関連

New fields to represent product bundles in a grouped view

親製品の下にコンポーネント製品を適切にグループ化して表示するための2つの新フィールドが追加:

  • Admin GraphQL APIのAbandonedCheckoutLineItemにcomponentsフィールドを追加
  • Customer Account APIのLineItemにgroupフィールドを追加

これらにより、放棄されたカートのメールや注文詳細ページ、取引関連メールでバンドル商品をグループ化して表示可能に。

定期購入関連

Introduce concatenatedOriginContract to subscriptionLine

subscriptionLineにconcatenatedOriginContractが追加され、Subscription Billing Cycle APIで複数の契約を結合した場合に、各ラインの元の契約情報を照会可能に。

決済関連

ACTION REQUIRED
Introduce 3DS support for verifications

支払い周りを拡張できるpayment extensionsでカード保管(vaulting)をサポートする場合、3DS認証チャレンジの処理が可能に。新しい VerificationSessionRedirect ミューテーションと、既存のResolve/Rejectミューテーションの引数が追加。3DS認証が必要な場合は新しいミューテーションを使用する必要あり。

Addition of ‘paymentDetails’ field in verificationSessionResolve mutation

verificationSessionResolveミューテーションにpaymentDetailsフィールドが追加され、決済プロバイダーがカード情報などの支払い詳細を引数として送信可能に。

在庫関連

ACTION REQUIRED
Inventory set on hand quantities mutation removal

inventorySetOnHandQuantitiesミューテーションが削除され、代わりにinventorySetQuantitiesミューテーションを使用して在庫の利用可能数量と手持ち数量を設定できるように。

注文関連

Update in orders webhook to view bundles and their components

注文(orders)webhookにsales_line_item_group_idフィールドが追加され、特定のline_itemがバンドル(セット商品)の一部かどうかを判断可能に。バンドルに属するline_itemには、関連するsales_line_item_group_idが設定される。

配送

ACTION REQUIRED
Cart Delivery Address Management

CartBuyerIdentityオブジェクトのdeliveryAddressPreferencesフィールドが廃止され、新しい CartDelivery オブジェクトで住所を管理するように変更。配送先住所の追加・更新・削除用の新しいミューテーションが追加され、特定の住所を「選択済み」として設定可能に。これにより、あらかじめ選択された住所での配送料の計算が行われるため、パフォーマンスが向上。

Support Delayed Fulfillment Status in GraphQL API

新しい配送状態としてdelayed(遅延)ステータスが追加。

ストアフロント

ACTION REQUIRED
Tax and Duties are deprecated in Storefront Cart API

Storefront APIのCartから税金と関税のフィールドが非推奨に。購入者の情報が完全に揃うチェックアウト時に計算されるように変更し、より正確な計算を実現。

その他

Admin access input is now optional when setting metafield definition access

メタフィールド定義のアクセスを作成または更新するときに、adminフィールドが省略可能に。明示的に設定しない場合は、デフォルト値が適用される。

Link any product metafields of type list.metaobject to product options

オプションをカテゴリメタフィールドにリンクすることでオプション値を使える機能が拡張され、任意のメタオブジェクトへの参照リストもリンク可能に。

Introduce a tax_exempt field associated to a CompanyLocation

企業の所在地(CompanyLocation)の税金関連設定が整理され、tax_exemptionsとtax_registration_idがCompanyLocationTaxSettingsに移動。また、これらの情報を更新するための新しいミューテーションCompanyLocationTaxSettingsUpdateが追加され、既存の関連ミューテーションは非推奨に。

Update to percentage_adjustment field on SellingPlanPercentagePriceAdjustment

SellingPlanPercentagePriceAdjustmentオブジェクトのadjustmentPercentageフィールドのデータ型がIntからFloatに変更。

ACTION REQUIRED
Unused PriceListUserErrorCode values removed

APIから実際には返されない8つのPriceListErrorCodeの値(国や通貨の制限に関連するエラーコード)が非表示に。

ACTION REQUIRED
New Markets APIs

Marketsの主な変更点:

  • 「プライマリーマーケット」の概念を廃止し、代わりにbackupRegionUpdate mutationで店舗全体のバックアップ地域を設定可能に
  • マーケットのcurrencySettingsがnull許容に。nullの場合は親マーケットの設定を継承
  • MarketWebPresenceがWebPresenceに置き換えられ、複数のマーケットに割り当て可能に

Add tax validation with localizedFields in Checkout UI Extensions & Functions

2025年1月6日より、新しいlocalizedFieldsをCheckout UI Extension APIとFunction APIで使用可能に。Admin GraphQL APIのlocalizationExtensionsフィールドもlocalizedFieldsに名称変更。チェックアウトでの税金関連フィールドのカスタムバリデーションとエラーメッセージ表示が可能に。

New validations on function input query variables metafields

Function APIのメタフィールド入力クエリ変数に対する追加の検証が実施されるように。不正なフォーマットのデータを空として扱っていた従来の仕様から、InvalidVariableValueErrorを返すように変更。