【BulkOperationRunQuery】使用方法、リターン値が取得できない。

bulkOperationRunQueryを使用してOrderデータやProductデータを取得しようとしてますが、

該当コマンドを実行しても実行状況を把握するためのID情報などがリターンされません。

こちらのコマンドの中に誤りなどはございますでしょうか。

【実行コマンド】

curl -X POST

/admin/api/2023-01/graphql.com
-H ‘Content-Type: application/graphql’
-H ‘(トークン情報)’
-d ’

{

mutation {

bulkOperationRunQuery(

query: “”"

“”"

) {

bulkOperation {

id

status

}

userErrors {

field

message

}

}

}’

また、そもそもcurlコマンドにて呼び出しているgraphql.jsonが存在しているのかも確認しましたが、エラー表示となりました。

graphql.jsonがそもそも起動できておらず、リターン値が取得できていないという認識であっているのでしょうか。

【実行コマンド】

curl --connect-timeout 360 --max-time 720 --location --request GET "admin/api/2023-01/graphql.json "

-H “(トークン情報)”

【エラーメッセージ】

{“errors”:“Not Found”}

admin/api/2023-01/graphql.com

.comではなく.jsonの間違いではないですか?

ご連絡ありがとうございます。

失礼致しました。

記載内容の間違いでした。正しくは以下の通りで.jsonの状態でもリターンが返ってきていない状態でした。

/admin/api/2023-01/graphql .json

Content-Type: application/graphql

ではなく、

Content-Type: application/json

で試してみるとどうですか?

そもそもcurlコマンドにて呼び出しているgraphql.jsonが存在しているのかも確認しましたが、

こちらですが、GraphQLのエンドポイントですので、GETで「Not found」が返ってくるのは仕様だったと思います。(ちょっとうろ覚えなのですが、コミュニティ内に似たような質問があったように記憶しています)

Content-Type: application/graphql> > ではなく、> > Content-Type: application/json> > で試してみるとどうですか?

ご指摘ありがとうございます。

該当箇所を修正して実行したところ、レスポンスがありました。

しかしリクエスト内容がエラーメッセージと読み取れる「Bad Request」という内容でした。実行結果のエラーメッセージに対する対処法やメッセージ内容一覧のようなものはございますでしょうか。

また、今回実行に使用したコマンドにてquery部分に記載した内容は以下の通りです。

query: “”"
{
products(query: “created_at:>=2020-01-01 AND created_at:<2020-01-02”) {
edges {
node {
id
}
}
}
“”"

しかしリクエスト内容がエラーメッセージと読み取れる「Bad Request」という内容でした。実行結果のエラーメッセージに対する対処法やメッセージ内容一覧のようなものはございますでしょうか。

こちらです。

https://shopify.dev/docs/api/admin-graphql#status_and_error_codes

エラー内容から推測すると、おそらくですが、クエリ部分の記述方法の問題ではないかと思います。

https://shopify.dev/docs/api/admin-graphql/2023-04/queries/order#examples-Get_an_order_using_the_QueryRoot_node_field_and_a_GraphQL_fragment

などにcURLのサンプルもありますので、確認してみてください。

サンプル情報ありがとうございます。ご共有頂いた情報からコマンドを実行してみましたが、変わらず「Bad Request」という結果でした。

<実行コマンド>

curl -X POST > /admin/api/2023-01/graphql.com> -H ‘Content-Type: application/json’ > -H ‘X-Shopify-Access-Token: アクセストークン’ > -d ‘> { mutation {> bulkOperationRunQuery(> query: “”“> { order(id: “gid://shopify/Order/5183833309402”) {> edges { node { name } } }> “””> ) {> bulkOperation {> id> status> }> userErrors {> field> message> } } }’

もし可能でしたら、bulkOperationRunQueryに記載する赤文字の内容で実際にデータを取得することが可能なクエリ文をご共有頂くことは可能でしょうか。

何度も申し訳ございませんが、よろしくお願い致します。

私の環境では下記で正常にリクエストできました。

curl -X POST \
https://tsun-app-dev-checkout-extensibility.myshopify.com/admin/api/2023-04/graphql.json \
-H 'Content-Type: application/json' \
-H 'X-Shopify-Access-Token: {access_token}' \
-d '{
  "query": "mutation { bulkOperationRunQuery( query: \"\"\" { products { edges { node { id title } } } } \"\"\" ) { bulkOperation { id status } userErrors { field message }}}"
}'

ご返信ありがとうございます。頂戴したquery文をもとに実行してみました結果としては「BadRquest」は出てきませんでしたが、何もレスポンスが状態でした。

<実行コマンド>

curl -X POST > /admin/api/2023-01/graphql.com> -H ‘Content-Type: application/json’ > -H ‘X-Shopify-Access-Token:{access_token}’ > -d ‘{“query”:“mutation { bulkOperationRunQuery( query: """ { products { edges { node { id title } } } } """) { bulkOperation { id status } userErrors { field message }}}”}’

<レスポンス結果>

kamiyama_0-1689814206898.png

以下のようなレスポンスがリターンされることを想定しておりましたが、合っていますでしょうか。

{> “data”: {> “bulkOperationRunQuery”: {> “bulkOperation”: {> “id”: “gid://shopify/BulkOperation/720918”,> “status”: “CREATED”> },> “userErrors”: > }> },> …> }

もし、上記レスポンスになる形であれば、上記の通りにならない他の要因はどんなことが想定されますでしょうか。

以下のようなレスポンスがリターンされることを想定しておりましたが、合っていますでしょうか。

合っています。

{access_token}の部分はご自身のアクセストークンに置き換えて実行されましたか?

{access_token}の部分はご自身のアクセストークンに置き換えて実行されましたか?

はい、{access_token}は置き換えて実行おります。

問題の切り分けのため、他のクエリは成功するのかなど試してみてはどうでしょう。

いくつかqueryを組んでみましたが、挙動としてレスポンスが返ってきませんでした。他に確認できる内容などはありますでしょうか。

curl -X POST > admin/api/2023-01/graphql.json > -H ‘Content-Type: application/json’ > -H ‘X-Shopify-Access-Token:{access_token}’ > -d ‘{“query”: “mutation { bulkOperationRunQuery( query: """ { order(id: "gid://shopify/Order/148977776") { id } } """) { bulkOperation { id status } userErrors { field message }}}”}’> > curl -X POST > admin/api/2023-01/graphql.json > -H ‘Content-Type: application/json’ > -H ‘X-Shopify-Access-Token:{access_token}’ > -d ‘{“query”: “mutation { bulkOperationRunQuery( query: """ { { orders(first: 10) { edges { node { id } } } } """) { bulkOperation { id status } userErrors { field message }}}”}’> > curl -X POST > admin/api/2023-01/graphql.json > -H ‘Content-Type: application/json’ > -H ‘X-Shopify-Access-Token:{access_token}’ > -d ‘{“query”: “mutation { bulkOperationRunQuery( query: """ { { products(first: 10) { edges { node { id title } } } } """) { bulkOperation { id status } userErrors { field message }}}”}’

bulkOperationRunQuery mutation以外のquery、mutationはどうですか?

現在、他の手法での動作確認を実施中となります。

また、別件となりますが、以前からサンプルコマンドとして頂いておりました
ドメイン情報について、全て【〇〇〇.myshopify.com】という形で頂いておりましたが、こちらが把握しているドメイン情報は【〇〇〇.jp】となっておりました。
参照先となるドメインの情報がそもそも間違っているなどはございますでしょうか。

myshopify.comドメインにクエリを実行してなかったということであってますか?

また、そもそもShopifyのGraphQL Admin APIを実行したいという認識であってますか?

ShopifyのGraphQL Admin APIを実行したいのであれば、公式リファレンスのとおりmyshopify.comドメインを使います。

私の知識不足で申し訳ないのですが、myshopify.comドメイン以外でできるのかわかりません。

こちらが把握しているドメイン情報は【〇〇〇.jp】

ちょっとよくわからなくなってきましたが、ストアの独自ドメインは把握していて、myshopify.comドメインは知らないという話ですか?

Shopifyで構築しているストアなら独自ドメインがわかればmyshopify.comドメインもわかりますけど。

改めて確認してmyshopify.comのドメイン情報でBulkOperationRunQuery」が実行でき、ダウンロードURLを取得することが出来ました。

しかし、ファイルダウンロードした際に以下のようなエラーメッセージが表示されました。「<?xml version='1.0' encoding='UTF-8'?>SecurityPolicyViolatedRequest violates VPC Service Controls.

Request is prohibited by organization’s policy. vpcServiceControlsUniqueIdentifier: fCD2qbPjxXP30qs2LxFQOTZpEcHNBmEjnnK7qTukwwNLCUqBpEolQQ

ダウンロードURLからファイルを取得する際に参照権限設定を行う必要がございます。
shopifyでファイルを格納している先はgoogle Cloud Storage と認識しております。格納されているプロジェクトIDを教えていただくことは可能でしょうか。

shopifyでファイルを格納している先はgoogle Cloud Storage と認識しております。

合っています。

格納されているプロジェクトIDを教えていただくことは可能でしょうか。

Shopifyが管理している部分ですので私は知りません。

お力になれず申し訳ないのですが、上記エラーは見たことがないので、Shopifyサポートに問い合わせてみてはどうでしょうか。