A space to discuss GraphQL queries, mutations, troubleshooting, throttling, and best practices.
Hello,
When we try to follow the example "Get the first three product variants updated after the specified date" from the Shopify documentation: https://shopify.dev/api/admin-graphql/2022-01/queries/productVariants#examples-Get_the_first_three_p...
we receive the "Bad Request" error.
The request we try is:
curl -X POST https://your-development-store.myshopify.com/admin/api/2022-01/graphql.json -H 'Content-Type: application/json' -H 'X-Shopify-Access-Token: {access_token}' -d '{"query": "query { productVariants(first: 3, query: "updated_at:>2021-01-01") { edges { node { id title price updatedAt inventoryQuantity product { id title } } } } }"}'
of course with replaced {access_token} part and our website's url.
When we modify the request a bit it then returns correct data:
curl -X POST https://your-development-store.myshopify.com/admin/api/2022-01/graphql.json -H 'Content-Type: application/graphql' -H 'X-Shopify-Access-Token: {access_token}' -d '{productVariants(first: 3, query: "updated_at:>2021-01-01") { edges { node { id title price updatedAt inventoryQuantity product { id title } } } } }'
Could you please check why the example from Shopify's documentation doesn't work?
We build an integration and part of our logic is to check whether a product with particular barcode already exists in Shopify before creating a new product, for this we use the following request which is based on the above example:
curl -X POST https://your-development-store.myshopify.com/admin/api/2022-01/graphql.json -H 'Content-Type: application/graphql' -H 'X-Shopify-Access-Token: {access_token}' -d '{productVariants(first: 10,query: "barcode:XXX") {edges {node {id sku barcode inventoryItem{id} product{id}}}}}'
It seemed to work fine until one day we realised some products are duplicated in Shopify. We found out that the above call works fine like in 90% of time but sometimes it returns data for some products but not all, even if the barcode is exactly the same. Is there some known bug related to the issue I described? Perhaps you can suggest a different api endpoint/request we should use to determine if a product with particular barcode already exists in Shopify?
Thanks,
Paul
Hi @paulls 👋
Thanks for highlighting the issue with the dev doc cURL example. It appears to be a difficulty with defining the `query` parameter to be a string literal `"updated_at:>2021-01-01"`, and could be formatted a bit better:
curl -X POST \
https://your-development-store.myshopify.com/admin/api/2022-01/graphql.json \
-H 'Content-Type: application/json' \
-H 'X-Shopify-Access-Token: {access_token}' \
-d '{"query":"query ($query: String){ productVariants(first: 5, query: $query) { nodes { id } } }","variables":{"query":"updated_at:>2021-01-01"}}'
Generally, the best way to flag any errors with the dev docs team is via the feedback section below the examples.
I would also recommend reviewing our guide to the search syntax to apply the `barcode` filter on the variants. With cURL, it will likely look similar to the below:
curl -X POST \
https://your-development-store.myshopify.com/admin/api/2022-01/graphql.json \
-H 'Content-Type: application/json' \
-H 'X-Shopify-Access-Token: {access_token}' \
-d '{"query":"query ($query: String){ productVariants(first: 5, query: $query) { nodes { id } } }","variables":{"query":"barcode:xyz"}}'
For complex requests, it may be helpful to use a client like Postman/Insomnia or one of our API libraries in your integration's native language, rather than a cURL request. If you still run into issues with the filter, please reach out via your partner dashboard with an example variant/shop so that we can take a closer look with your authenticated permissions.
Hope that helps!
Umiko | API Support @ Shopify
- Was my reply helpful? Click Like to let me know!
- Was your question answered? Mark it as an Accepted Solution
- To learn more visit Shopify.dev or the Shopify Web Design and Development Blog