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

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

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

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

商品関連

ProductInput split into ProductCreateInput and ProductUpdateInput in 2024-10

  • GraphQL Admin APIでProductInputオブジェクトが作成用と更新用に分割。既存のinputフィールドは非推奨となり、新しいproductCreateInputとproductUpdateInputを使用するように。

New has_variants_that_requires_components field on Product Webhooks

  • 商品の作成・更新時のウェブフックペイロードに商品バンドルのバリエーションの有無を示すhas_variants_that_requires_componentsフィールド(真偽値)が追加。GraphQL APIの商品レスポンスと同様の情報を提供。このフィールドを受け取るには、ウェブフックAPIバージョンを2024-10以上に設定する必要あり。

ACTION REQUIRED
Removal of deprecated product image mutations from the GraphQL Admin API

  • 非推奨の画像関連ミューテーション(追加、削除、更新、並び替え)が削除。代わりにメディア関連のミューテーションを使用するように変更。

Storefront API support for Combined Listings

  • Shopify Plusプラン利用者向けに、Combined Listings機能が利用可能に。これにより、色、素材、長さなど複数のバリエーションを持つ商品を1つの商品リストにまとめて表示可能に。ストアフロントAPIでこの機能を利用できる。

New CollectionsCount query in the GraphQL Admin API

  • GraphQL Admin APIで、CollectionsCountクエリが追加され、コレクション数を取得可能に。

Added variant_strategy for productOptionsCreate

  • GraphQL Admin APIで、productOptionsCreateミューテーションにvariantStrategy(バリエーション戦略)パラメータが追加。これにより、商品バリエーションの設定と在庫管理をより詳細に制御可能に。詳細は以下。
    • LEAVE_AS_IS:既存のバリエーションを維持し、新しいオプション値で更新
    • CREATE:すべての可能なオプション値の組み合わせで新規バリエーションを生成

ディスカウント関連

Admin API includes discountNodesCount

  • GraphQL Admin APIで、QueryRoot.discountNodesCountフィールドが追加され、店舗の割引の総数を取得可能に。

ACTION REQUIRED
Removal of the priceRule resource from GraphQL Admin API

  • priceRuleリソースが削除。クエリとミューテーションは2023年3月から非推奨だったため、代わりにdiscountリソースを使用するように。

Added new field recurring_cycle_limit and applies_on_subscription to DiscountAutomaticApp and DiscountAutomaticAppInput

  • DiscountAutomaticAppオブジェクトにrecurring_cycle_limitとapplies_on_subscriptionフィールドが追加され、サブスクリプションで指定回数の関数ベース割引を使用可能に。

テーマ関連

Introducing theme and theme file management in the Admin GraphQL API

  • Admin GraphQL APIで、テーマの照会・作成・削除・公開・更新、およびテーマファイルのコピー・削除・更新が可能に。

Add new theme-related fields to TranslatableResourceType enum

  • オンラインストアのテーマに関連する新しいTranslatableResourceTypeフィールドを追加。
    • テンプレート、セクショングループ、アプリ埋め込み
    • ロケールコンテンツ、設定カテゴリー、設定データセクション
  • これらは既存のONLINESTORETHEME列挙型の内容をより細分化して提供。将来的には不要なテーマコンテンツの一括取得を減らすことを目的としている。
  • また、TranslatableResourceオブジェクトにnestedTranslatableResources接続を追加し、特定テーマのリソースにアクセス可能に。

オンラインストア関連

Admin GraphQL API: new APIs for Pages, Articles, Blogs, and Comments now available in 2024-10

  • GraphQL Admin APIでページ、記事、ブログ、コメントの読み取りと修正が可能に。各コンテンツタイプで作成・更新・削除・照会機能を実装。コメントは承認や迷惑判定の設定も可能に。

ACTION REQUIRED
Querying events through the events connection and CommentEvent.subject becomes nullable

  • イベントの照会機能(件数、個別、一覧)が追加。記事、ブログ、コレクション、コメント、ページ、商品バリエーション、商品で関連イベントの照会が可能に。CommentEventのsubjectフィールドがnull許容となり、削除イベントは通常のEventとして扱われるように変更。

New customer account pages now available in menus via Admin API

  • ナビゲーションメニューに注文、プロフィール、設定ページへのリンクを追加可能に。

Translatable content that is specific to a market context is now exposed

  • marketId引数を使用して特定の市場向けの翻訳可能コンテンツを取得可能に。これにより、テーマテンプレートやセクショングループ内の追加セクションやブロックの市場別コンテンツを取得できるように。

フルフィルメント関連

New created_fulfillment_hold field on fulfillment_orders/placed_on_hold webhook

  • GraphQL Admin APIでfulfillment_orders/placed_on_holdウェブフックにcreated_fulfillment_holdフィールドが追加。これにより、保留が解除された後でも、作成された保留の情報を確認可能に。(以前は保留解除時にデータが削除され、ウェブフック受信時に情報を取得できない問題があった)

New parameter on fulfillmentServiceDelete to control inventory behaviour on location removal

  • GraphQL Admin APIでフルフィルメントサービス削除時の在庫処理方法を指定する新しい列挙型フィールドが追加。選択肢は以下の3つ。
    • KEEP:在庫を店舗管理に移行
    • DELETE:未処理の出荷がない場合、在庫と場所を削除
    • TRANSFER:既存の動作で、指定した場所へ在庫を移動

      ※ KEEPを選択する場合、店舗の場所ごとの数量に余裕が必要。

fulfillmentOrderHold mutation updated to return a fulfillment hold resource

  • GraphQL Admin APIでfulfillmentOrderHoldミューテーションが新しいfulfillmentHold戻り値フィールドで作成された保留情報を返すように。

ACTION REQUIRED
New field and permission update to fulfillment hold resource

  • GraphQL Admin APIでFulfillmentHoldリソースにheldByRequestingAppフィールドが追加。heldByフィールドの読み取りにはread_apps権限が必要に。自社アプリが作成した保留かどうかは新しいheldByRequestingAppフィールド(真偽値)で確認可能に

Localized fulfillment hold reason on FulfillmentHold

  • FulfillmentHoldにdisplayReasonフィールドが追加され、フルフィルメントが保留になっている理由を人が読みやすい形式で取得可能に。

ACTION REQUIRED
Breaking changes to returns API: Deprecate reverseDeliveryDispose mutation

  • GraphQL Admin APIで、reverseDeliveryDisposeミューテーションが非推奨となり、代わりにreverseFulfillmentOrderDisposeミューテーションを使用するように変更。

Admin API update on fulfillmentOrder.destination and FulfillmentOrderDestination object

  • Admin APIで以下の変更
    • 重大な変更: fulfillmentOrder.destinationが配送先住所がない場合もnullではなくFulfillmentOrderDestinationオブジェクトを返すように(住所関連フィールドはnull)
    • 重大ではない変更: fulfillmentOrder.destination.locationで受け取り場所の情報を取得可能に

Fulfillment Constraints now support Local Pickup

  • GraphQL Admin APIで、フルフィルメント制約機能を店頭受け取り(Local Pickup)配送方法に対しても設定可能に。FulfillmentConstraintRuleCreateで新規登録、またはFulfillmentConstraintRuleUpdateで既存の登録を更新して、PICK_UP配送方法を追加できるように。

ACTION REQUIRED
Fulfillment Constraints can now be associated with one or multiple delivery methods

  • GraphQL Admin APIで、フルフィルメント制約機能を複数の配送方法に関連付け可能に
    • FulfillmentConstraintRuleCreateで新規登録時に必須フィールドdelivery_method_typesを使用
    • FulfillmentConstraintRuleUpdateで既存の登録済み機能の配送方法を更新可能 既存の制約機能は配送、地域、受取場所で引き続き実行可能

ACTION REQUIRED
Removal fulfillment service shipping method

  • fulfillmentServiceクエリのshippingMethodsフィールドとfulfillmentOrderSubmitFulfillmentRequestミューテーションでの使用が廃止。Amazonフルフィルメントサービス向けの配送方法に関連していたが、2023年3月30日でAmazonフルフィルメント機能のサポートが終了。Amazonフルフィルメントを継続する場合はマルチチャネルフルフィルメントソリューションの利用が必要。

 

顧客関連

ACTION REQUIRED
Adding pagination arguments to Customer addresses API

  • GraphQL Admin APIで顧客オブジェクトにaddressesV2フィールドが追加。顧客の住所をページング処理できるように。

GraphQL support to send customer account invite

  • GraphQL Admin APIでcustomerSendAccountInviteEmailミューテーションが追加。従来の顧客アカウント作成の招待メールを送信可能に。

New CompanyLocationStaffMemberAssignments API endpoints for managing staff member assignments on a Company Location

  • CompanyLocationオブジェクトにCompanyLocationStaffMemberAssignmentが追加され、会社の所在地に割り当てられたスタッフメンバーの確認が可能に。
  • また、CompanyLocationAssignStaffMembersとCompanyLocationRemoveStaffMembersミューテーションでスタッフの割り当てと削除が可能に。

 

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

New abandoned checkouts listing endpoint on the admin GraphQL API

  • 放置されたチェックアウトの一覧を取得するためのabandonedCheckoutsエンドポイントが利用可能に。現在のRESTエンドポイントから置き換えられる予定。

定期購入関連

Add subscription status updates to bulkOperationRunMutation

  • サブスクリプションの状態更新(有効化、キャンセル、期限切れ、失敗、一時停止)がbulkOperationRunMutationで一括処理可能に。

Subscription Contract fields now fully available on the Customer API

  • GraphQL Customer APIでサブスクリプション契約の新しい照会フィールドが追加:
    • 基本情報(商品数、請求ポリシー、配送ポリシー、配送方法、配送料金、更新日時、通貨コード)
    • 関連情報(商品ライン、注文)
  • また、サブスクリプション契約の照会には読み取り権限、変更には書き込み権限が必要に。

決済関連

Added FAILED_TO_RETRIEVE_BILLING_ADDRESS to CustomerPaymentMethodRevocationReason Enum

  • GraphQL Admin APIで顧客の支払い方法の取り消し理由に「請求先住所の取得失敗」が追加。請求先住所が欠落している場合に使用される。

Introducing Session ID to StartPaymentSession

  • Payments Apps APIで、全ての決済拡張タイプのStartPaymentSessionペイロードにsession_idフィールドが追加。同一の支払いグループや購入者セッション、支払い詳細を共有するセッション間で共通のIDとなり、認証レートの計算に利用可能。

Introducing Payment Groups and Sessions to SubscriptionBillingAttempts

  • GraphQL Admin APIで、SubscriptionBillingAttemptオブジェクトに支払いグループIDとセッションIDが追加。これにより、請求試行の相関関係を把握しやすく
  • 支払いグループの定義
    • 同一サブスクリプション契約のもの:全て失敗か、成功で終わるもの
  • 支払いセッションの定義
    • 同一支払いグループ
    • 同一支払い方法
    • 同一通貨
    • 同一金額
  • 支払い成功率の統計では、セッションIDごとに1つの成功または失敗のみを表示することを想定。

ShopifyPaymentsBankAccount GraphQL Admin API unused fields removed

  • 2025年1月のGraphQL Admin APIで、shopifyPaymentsBankAccountエンドポイントから未使用のフィールドが削除される予定。

Shopify Payments Balance Transaction GraphQL type supports advance and advance funding type

  • GraphQL Admin APIで、ShopifyPaymentsTransactionTypeにADVANCEとADVANCE_FUNDINGタイプが追加。

在庫関連

ACTION REQUIRED
Cart Warnings in Storefront API Cart

  • カートの在庫エラーがuserErrorsから切り離され、新しいwarningsフィールドで管理されるように。在庫不足や品切れは明示的なコードで表示され、カートの自動変更に関する警告も表示可能に。これらの警告を使用して、カートの商品管理や購入者への情報表示が可能。

注文関連

Order Management apps can no longer fulfill orders that are assigned to a different fulfillment service

  • 2024年10月から、write_third_party_fulfillment_ordersの権限が変更。注文管理アプリは他のフルフィルメントサービスアプリが所有する場所に割り当てられた注文のフルフィルメント作成が不可に。ただし、以下は変更なし
    • 注文の閲覧・管理
    • 自社担当の注文フルフィルメント(write_assigned_fulfillment_orders)
    • 店舗管理の場所での注文フルフィルメント(write_merchant_managed_fulfillment_orders)
  • フルフィルメント作成の可否はsupportedActionsで確認可能。

New mutation to create an order

  • GraphQL Admin APIで、orderCreateミューテーションが追加され、注文を作成可能に。

返品関連

ACTION REQUIRED
Exposing the order adjustments connection on a Refund

  • GraphQL Admin APIで以下の変更
    • Refund.orderAdjustmentsで計算額と実際の返金額の差異を照会可能に
    • REFUNDS_CREATEウェブフックでも注文調整を含むように
  • 非推奨の変更:
    • OrderAdjustment.kindフィールド
    • kindフィールド(ウェブフック)
  • 返金された配送コストはRefund.refundShippingLinesで照会するように変更。unstableバージョンではOrderAdjustment.kindフィールドを6ヶ月間維持し、移行期間を確保。

Notify customers when their return requests are approved or declined

  • 返品リクエストの承認・拒否を顧客に通知可能に
    • returnApproveRequestとreturnDeclineRequestミューテーションでnotifyCustomer引数を設定可
    • 拒否時はdeclineNoteで顧客向けメッセージを追加可
    • notifyCustomerがtrueの場合、Order.emailに通知メールを送信(emailがnullの場合は未送信)

POS

POS UI Extensions 2024-10 Update

  • POS UI Extension更新内容:
    • 新機能
      • iOSのSafariデベロッパーツールでのデバッグに対応
      • 各種renderターゲットのサポート追加(商品詳細、購入後、注文詳細、顧客詳細)
    • 新コンポーネント追加
      • POSBlock(ブロック拡張のための親コンポーネント)
      • POSBlockRow(POSBlockの子コンポーネント)
    • ウィンドウモーダルのサポート
    • 非推奨: ActionItemコンポーネント(代わりにButtonコンポーネントを使用)
      ※POS UI拡張バージョン2024-10とPOSアプリバージョン9.19.0以降で利用可能

その他

ACTION REQUIRED
Deprecating explicit access grants for app-owned metafields

  • アプリ所有のメタフィールドに対する特定アプリへの権限付与機能が非推奨に。新規アプリではすぐに利用不可。既存アプリは継続利用可能。

Create App Store Ads on Tag-Level Category Pages

  • Shopify App Storeの広告で、メインカテゴリーやサブカテゴリーに加え、タグレベルのカテゴリーページもターゲティング可能に。

New webhook topic app/scopes_update

  • Webhook APIで、アプリのアクセス権限の変更を通知する「app/scopes_update」が追加。アプリに付与された権限が変更された際に、以前の権限と現在の権限、更新日時などの情報がWebhookで通知されるように。これにより、アプリは各店舗での権限状態を追跡可能に。

New field and queries for the StaffMember object in the GraphQL Admin API

  • GraphQL Admin APIで、StaffMemberオブジェクトが改善。これによりREST APIのUserリソースからGraphQLのStaffMemberオブジェクトへの移行が可能に。
    • 新しいaccountTypeフィールドを追加
    • currentStaffMemberクエリでAPIリクエストを行うスタッフメンバーを取得可能
    • staffMembers接続クエリで全スタッフメンバーをリスト表示可能
    • Shop.staffMembersは非推奨となり、staffMembersクエリに移行

ACTION REQUIRED
Starting April 2025, new public apps submitted to Shopify app store must use GraphQL

  • GraphQLがShopify管理者向けの主要APIとなり、REST Admin APIはレガシーに。 2025年4月1日からの変更は以下。
    • 新規アプリはデフォルトでGraphQLに
    • 新規組織のカスタムアプリはGraphQLのみ使用可能
    • App Storeの新規公開アプリはGraphQLのみ使用必須

      ※ 既存アプリの移行タイムラインは2025年に発表予定で、十分な移行期間を設ける方針。

Shopify Payments GraphQL Admin API supports querying a list of disputes

  • GraphQL Admin APIで、店舗のdisputesをGraphQL接続として照会可能に。

Exposing Business Entity fields on Admin API

  • Admin APIで、ビジネスエンティティの属性に関する更新
    • GraphQL API
      • ビジネスエンティティをGraphQLオブジェクトとして利用可能に
      • 店舗で有効化されているビジネスエンティティのプロパティを照会可能に
      • 関連オブジェクトでビジネスエンティティのフィールドを要求可能に
    • REST Admin APIとウェブフック
      • ビジネスエンティティの識別子が利用可能に