返品ポリシーの文章ではなく、返品期間などのルールをマーケットごとに API から取得できるようになった。プロファイルはストアの返品ポリシー本文より優先される。API からは読み取り専用。
Shop.shopPolicies の REFUND_POLICY などから返品条件をテキストで読むしかなかった。
マーケットごとの返品ルールをフィールド単位で取得できる。マーケット別に異なる返品ルールを表すにはプロファイルを使う必要がある。
プロファイルは返品ルールを設定する単位で、マーケットが紐づく先。
プロファイルを編集すると、それを参照するすべてのマーケットの返品条件が変わる。
返品の最低基準を下回らないようロックされている。アプリは読めるが、他マーケットには割り当てられない。
| 種類 | 名前 | 内容 |
|---|---|---|
| Query | returnPolicyProfile |
ID を指定して 1 件のプロファイルを返す |
| Query | returnPolicyProfiles |
ストアのプロファイル一覧を返す。default 引数でデフォルトかどうかで絞り込める |
| Field | Market.returnPolicyProfile |
そのマーケットに直接割り当てられたプロファイル(無ければ null) |
| Mutation 入力 | marketCreate / marketUpdate |
マーケット作成・更新時にプロファイルを割当。更新時は割当の解除もできる(入力フィールドは各リファレンス参照) |
read_legal_policiesプロファイルの読み取り(Market の returnPolicyProfile フィールドを含む)に必要。
write_marketsマーケットへのプロファイル割当・解除は「マーケットの編集」扱い。
Market.returnPolicyProfile が nullそのマーケットに 直接 割り当てられたプロファイルが無いという意味。マーケット階層は解決しない。
returnRules / editRules が nullデータ欠損ではなく そのルールが OFF という意味。returnRules が null のプロファイルでは、顧客は制限なく返品できる。
updatedAt は集約値プロファイル行に直接書かれた値ではなく、プロファイルとルール全体から集約される。ポリシーのどこかが変わると進む。
① マーケット更新時、同一リクエストで割当と解除を両方指定 ② Shopify が用意した Managed Markets プロファイルをマーケットに割当。
ポリシー本文を読む既存クエリはそのまま動く。
Shop.shopPolicies の REFUND_POLICY から返品条件を読んでいるなら returnPolicyProfiles へ。
マーケットごとに異なる返品ルールを表すには、プロファイルを使う必要がある。
Market.returnPolicyProfile の null は「直接割当なし」。returnRules の null は「ルール OFF = 制限なく返品可」。どちらも「データ無し」扱いにすると誤表示になる。
API はマーケット階層を解決しない。未割当マーケットにはデフォルトプロファイルが適用される仕様なので、実効ルールを出すなら returnPolicyProfiles(default: …) でデフォルトを引いて補う設計に。
updatedAt でプロファイル配下のルール変更でも進む集約値なので、変更検知キーとして使える。プロファイル編集は参照中の全マーケットに波及する点も合わせて考慮。
プロファイルの CRUD は管理画面のみ。アプリが触れるのは marketCreate / marketUpdate での割当・解除だけ(write_markets)。
同一の marketUpdate で「割当」と「解除」を同時に送らない。Managed Markets の EU 用(ロック済み)プロファイルは割当候補の UI から除外しておく。
REFUND_POLICY の文章や独自設定に依存し、マーケットごとに違う返品条件を反映できていない。returnPolicyProfiles と Market.returnPolicyProfile で各マーケットのルールを取得し、受付可否の判定に使う。read_legal_policies が必要。returnRules が null なら「制限なし」として扱う。直接割当が null のマーケットはデフォルトプロファイルで補完。marketCreate / marketUpdate で該当プロファイルを割当。write_markets が必要。割当と解除を同一リクエストに混ぜない。Managed Markets の EU 用プロファイルは割当不可(user error)なので候補から除外。updatedAt の変化で変更を通知する。updatedAt はルール変更でも進む集約値なので差分検知キーに使える。Webhook についての記載はなし。