@WEBUILD 様
興味があり調査してみました。
productCreateMediaのoriginalSourceに、
画像URLとしての形式に誤りはないが、実際には404になるようなURLを渡した場合、
APIからエラーが返却されないことが、
仕様であるかどうかは調べられませんでした。
しかし、開発環境で試したところ、質問者様と同様の結果になることは確認できました。
仕様であればおかしな仕様であるように思うので、
https://github.com/Shopify
に記載のある、
engineering@shopify.engineering
にリクエストを送るなどすると、
未来のバージョンで修正されるかもしれません。
ところで、
一旦、今の状態で、どうやってエラーを見分けるかを考えたみたのですが、
productCreateMediaを実行した後に、
下記のようにproduct queryでその商品のメディアの情報を取得すると、
query ($productId: ID!) {
product(id: $productId) {
media (first: 20) {
edges {
node {
alt
status
mediaErrors {
code
details
message
}
}
}
}
}
下記のようにエラーが返却されることを確認できました。
"node": {
"alt": "test",
"status": "FAILED",
"mediaErrors": [
{
"code": "UNKNOWN",
"details": "The file does not exist - https://xxxx.xxxxxxxx.com/hoge.jpg",
"message": "Media processing failed"
}
]
}
しかし、
下記のように、productCreateMediaで直接productのmediaの情報を取得すると、
mutation productCreateMedia($media: [CreateMediaInput!]!, $productId: ID!) {
productCreateMedia(media: $media, productId: $productId) {
media {
alt
mediaContentType
status
}
mediaUserErrors {
code
field
message
}
product {
media(first: 20) {
edges {
node {
alt
status
mediaErrors {
code
details
message
}
}
}
}
}
}
}
下記のように、statusがUPLOADEDとなり、エラーが返却されません。
"node": {
"alt": "test",
"status": "UPLOADED",
"mediaErrors": []
}
エラーを取得するには、
productCreateMediaの後に、改めてproduct queryを実行する必要がありそうでした。
私自身はAPIやGraphQLに詳しいわけではないので、
1回のqueryでうまいことエラーを取得する方法もあるかもしれません。
本回答は、私が分かる範囲までの情報であることご留意ください。
何か参考になる情報があれば幸いです。
(キュー田辺)