新規Carrier Service APIの導入
ShopifyのAdmin GraphQL APIのバージョン2024-07にて、新たなCarrier Service APIに関する変更が導入されました。これらの変更点は、Shopifyストアの配送管理における機能拡張とカスタマイズ性の向上をもたらします。
1. 技術的課題の定義と現状分析
従来、配送業者サービスの管理においては、一部の情報が非表示であったり、一覧表示や個別の配送業者サービスの操作が限定的であったりという課題がありました。また、新たな配送業者サービスの追加や既存の配送業者サービスの更新・削除といった操作がAPIから行えないという制約も存在していました。
2. 具体的な技術的ソリューションの提案
この更新により、DeliveryCarrierServiceオブジェクトにactive、supportsServiceDiscovery、callbackUrlの3つの新たなフィールドが追加されました。これにより、特定の配送業者サービスがアクティブかどうか、サービス検出をサポートしているかどうか、コールバックURLは何かという情報を得ることが可能になります。
また、ショップの配送業者サービスを一覧表示し、フィルタリングするためのcarrierServicesがクエリルートに追加されました。さらに、新たな配送業者サービスを作成するcarrierServiceCreate、既存の配送業者サービスのプロパティを更新するcarrierServiceUpdate、配送業者サービスを削除するcarrierServiceDeleteといったミューテーションが追加されました。
3. 実装手順とコード例
新たに追加されたフィールドの情報を取得するためには、以下のクエリを使用します。
{
deliveryCarrierService(id: "gid://shopify/DeliveryCarrierService/123456") {
active
supportsServiceDiscovery
callbackUrl
}
}
新たな配送業者サービスを作成するには、carrierServiceCreateミューテーションを使用します。以下にその例を示します。
mutation {
carrierServiceCreate(input: {
active: true,
callbackUrl: "https://example.com/callback",
format: "JSON",
name: "New Carrier Service",
serviceDiscovery: true
}) {
deliveryCarrierService {
id
}
}
}
既存の配送業者サービスのプロパティを更新するには、carrierServiceUpdateミューテーションを使用します。以下にその例を示します。
mutation {
carrierServiceUpdate(id: "gid://shopify/DeliveryCarrierService/123456", input: {
active: false,
callbackUrl: "https://example.com/new_callback",
format: "XML",
name: "Updated Carrier Service",
serviceDiscovery: false
}) {
deliveryCarrierService {
id
}
}
}
配送業者サービスを削除するには、carrierServiceDeleteミューテーションを使用します。以下にその例を示します。
mutation {
carrierServiceDelete(id: "gid://shopify/DeliveryCarrierService/123456") {
deletedCarrierServiceId
}
}
4. パフォーマンス・コスト分析
これらの新規APIの導入により、配送業者サービスの管理が容易になり、自動化の範囲が拡大します。これにより、開発者の作業負荷が軽減され、より多くの時間をビジネスロジックの開発など、より価値の高いタスクに割くことが可能になります。
5. 実装時の注意点・ベストプラクティス
carrierServiceCreate、carrierServiceUpdate、carrierServiceDeleteミューテーションを使用する際には、該当する配送業者サービスのIDを正確に指定する必要があります。また、callbackUrlは必ず有効なURLを設定してください。
6. 次のステップ・発展案
今後は、これらの新規APIを活用して配送業者サービスの一元管理ダッシュボードの開発や、自動化スクリプトの作成などを検討すると良いでしょう。






Share:
Shop.assignedFulfillmentOrdersの接続をQueryRootへ移行する
`FulfillmentService`に新たなフィールド`trackingSupport`を追加しました