`DiscountEffectInput`入力オブジェクトが`amount`を受け入れるようになりました
Shopifyの開発者の皆さま、GraphQL Admin APIに新たな変更が加えられました。`DiscountEffectInput`入力オブジェクトが`amount`フィールドを受け入れるようになったのです。これにより、より柔軟なディスカウント設定が可能となります。
1. 技術的課題の定義と現状分析
これまでの`DiscountEffectInput`は、ディスカウントの種類や対象を設定する際には便利でしたが、その具体的な金額を指定するためのフィールドが存在しませんでした。その結果、ディスカウントの金額を動的に設定することが困難であるという課題が存在していました。
2. 具体的な技術的ソリューションの提案
この課題を解決するために、Shopifyは`DiscountEffectInput`入力オブジェクトに新たに`amount`フィールドを追加しました。これにより、ディスカウントの金額を具体的に設定することが可能となりました。この変更はバージョン2024-01にも遡及します。
3. 実装手順とコード例
`DiscountEffectInput`に`amount`フィールドを設定するには、次のようなGraphQLクエリを使用します:
mutation {
priceRuleCreate(
input: {
title: "10% off",
value: "-10%",
valueType: PERCENTAGE,
targetSelection: ALL,
target: LINE_ITEM,
allocationMethod: EACH,
oncePerCustomer: false,
usageLimit: null,
customerSelection: ALL,
startsAt: "2024-01-01T00:00:00Z",
entitledCollectionIds: [],
entitledProductIds: [],
entitledVariantIds: [],
entitledCountryIds: [],
endsAt: null,
prerequisiteSubtotalRange: {greaterThanOrEqualTo: "10.00"},
discountEffect: {value: {percentage: 10}}
}
) {
userErrors {
field
message
}
priceRule {
id
title
value
valueType
targetSelection
target
allocationMethod
oncePerCustomer
usageLimit
customerSelection
startsAt
entitledCollectionIds
entitledProductIds
entitledVariantIds
entitledCountryIds
endsAt
prerequisiteSubtotalRange {
greaterThanOrEqualTo
}
discountEffect {
... on DiscountEffectPercentage {
percentage
}
}
}
}
}
4. パフォーマンス・コスト分析
この変更により、開発者はディスカウントの金額を動的に設定することが可能となり、より複雑なディスカウント戦略を実装することができます。また、この変更は既存のAPIに影響を与えず、コスト増加やパフォーマンス低下のリスクもありません。
5. 実装時の注意点・ベストプラクティス
`amount`フィールドは新たに追加されたものなので、既存のコードが影響を受けないように注意が必要です。また、`amount`フィールドはオプショナルなフィールドなので、必要に応じて設定するようにしましょう。
6. 次のステップ・発展案
今後もGraphQL Admin APIは進化し続けます。新たなフィールドが追加される可能性がありますので、ShopifyのAPIドキュメンテーションを随時確認し、最新の情報を取得しましょう。
参考記事: The `DiscountEffectInput` input object now accepts `amount`






Share:
GraphQL管理API:`Order`オブジェクトから`location`フィールドが削除されました
GraphQL管理API:`Order`オブジェクトに`retailLocation`フィールドが追加されました