API バージョン 2026-07 から、Market オブジェクトに delivery.shipping が追加。別途 shipping profile を作らなくても、マーケットごとに配送料・配送方式を GraphQL で設定できるようになった。
Market.delivery.shipping) 持たせられる。アプリはプロファイルを増やさずにマーケット別の配送を実装できる。
マーケット別に配送を出し分けたいとき、独立した shipping profile を作って対応。リソースが分散し、アプリの管理が複雑化。
Market.delivery.shipping で読み書き。marketCreate/marketUpdate の既存ミューテーションで完結。
Market・marketCreate・marketUpdate を経由する。
配送オプションは DeliveryOptionDefinitionCreateInput / DeliveryOptionDefinitionUpdateInput で管理。API がサポートするタイプは次の4つ。
DeliveryFlatRateOptionDefinitionDeliveryValueBasedOptionDefinitionDeliveryWeightBasedOptionDefinitionDeliveryCarrierCalculatedOptionDefinitioncurrency と isActive を持ち、任意で freeDeliveryMinimumValue(送料無料になる下限金額)を設定できる。rate group は conditions で特定の商品コレクション・出荷元ロケーションに限定可能。「設定しない」「設定はするが表示しない」「親から継承に戻す」の3つを、それぞれ別のフィールドで表現する。混同注意。
| 状態 | 指定 | 顧客への見え方 |
|---|---|---|
| 未設定 = 親から継承 | Market.delivery.shipping が null |
継承 親マーケットの配送を継承。親が無いマーケットはショップ既定(=配送なし)を継承 |
| 設定は保持・表示のみ停止 | shipping.isEnabled: false |
非表示 チェックアウトで配送オプションを出さない。アプリ管理の配送も同時に無効化 |
| マーケット固有設定を削除 | delivery.removeShipping: true |
継承に復帰 自前の設定を捨て、親から配送を継承する状態に戻す |
isEnabled: false と removeShipping: true は別物。前者は設定を残したまま表示だけ止める、後者は設定自体を消して継承に戻す。「一時的に売らない」と「この市場の独自ルールを撤廃」で使い分ける。| やりたいこと | 使う入力フィールド |
|---|---|
| マーケットの配送設定を読む | Market.delivery.shipping(isEnabled / activeOptionDefinitionsCount / optionDefinitions) |
| 作成時に配送を追加 | MarketCreateInput.delivery.shipping |
| 既存マーケットの配送を更新 | MarketUpdateInput.delivery.shipping |
| マーケット単位の配送を削除(継承へ) | MarketUpdateInput.delivery.removeShipping |
| オプションを新規作成 | shipping.optionDefinitionsToCreate(flatRate / valueBased / weightBased / carrierCalculated) |
| オプションを更新 | optionDefinitionsToUpdate(id 指定。flat は rateGroupsToUpdate で個別更新可) |
| オプションを削除 | optionDefinitionsToDelete(オプション ID の配列) |
carrierServiceId/autoIncludeNewServices/percentageAdjustment)。read_markets が必要。
read_markets と write_markets の両方が必要。
別リソース(shipping profile)を作らずに、Market に配送を直接ぶら下げられる。アプリは異なるマーケットへ異なる配送戦略を、より少ないリソースで実装できる。
市場配送のためのルートクエリ/単独ミューテーションは存在しない。必ず Market / marketCreate / marketUpdate 経由でアクセスする設計。
shipping が null は「未設定」ではなく親から継承。親が無ければショップ既定(配送なし)を継承。空扱いでロジックを組むと誤判定になる。
isEnabled:false は設定を残して表示だけ停止(アプリ管理の配送も止まる)。removeShipping:true は設定を消して継承へ復帰。挙動が根本的に違う。
Flat / Value-based は複数の rate group を持てるが、Weight-based はちょうど1つ、Carrier-calculated は単一。さらに rate group は conditions で商品コレクションや出荷元ロケーションに限定できる。実装時はタイプごとに group 数のバリデーションを分岐させる。
marketUpdate で delivery.shipping を設定。定額(Flat)と重量別(Weight)をマーケット別に投入し、設定を IaC 的に GraphQL スクリプトで管理。freeDeliveryMinimumValue で市場ごとの送料無料下限を設定。キャンペーン期間だけ API で切り替え。optionDefinitionsToUpdate で戻す。currency と一致させる。金額は amount / currencyCode で明示。carrierServiceId を参照。autoIncludeNewServices:true で新サービス自動取り込み、percentageAdjustment でマージンを上乗せ。