The project is in a healthy, maintained state
Bulk import data using the Shopify GraphQL Admin Bulk API
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

>= 0
>= 13.0
~> 3.0
>= 0
~> 3.0

Runtime

 Project Readme

ShopifyAPI::GraphQL::Bulk

Ruby Gem to Bulk import data using the Shopify GraphQL Admin Bulk API

Install

Gemfile:

gem "shopify_api-graphql-bulk"

Or via the gem command:

gem install "shopify_api-graphql-bulk"

Usage

# Mutation parameters. In this example we're using the productSet mutation.
params = [
  {
    :identifier => { :handle => "handle-1" },
    :input => {
      :title => "My New Title",
      :handle => "handle-1",
      # More params
    }
  },
  {
    :identifier => { :handle => "handle-2" },
    :input => {
      :title => "Another Title",
      :handle => "handle-2",
      # More params
    }
  },
  # etc...
]

bulk = ShopifyAPI::GraphQL::Bulk.new(shop, token)
id = bulk.create("productSet", params)

# Wait a bit...

operation = bulk.result(id)

# returns a ShopifyAPI::GraphQL::Bulk::Operation instance
p operation.id
p operation.completed_at
p operation.url
# etc...

if operation.completed?
  operation.results.each do |result|
    # Each element is a Hash with the appropriate response, if any
    result.data.each { }
    result.errors.each { }
    result.user_errors.each { }
  end
end

#create also accepts a block:

id = bulk.create("productSet") do |args|
  args << input1
  args << input2 # etc...
end

If you do not want the result to be fetched and parsed use :parse_results => false:

operation = bulk.result(id, :parse_results => false)
p operation.id
p operation.completed_at
p operation.result # now nil

Cancel a pending request:

operation = bulk.cancel(id) # returns a ShopifyAPI::GraphQL::Bulk::Operation instance

ShopifyAPI::GraphQL::Bulk::Operation corresponds to the GraphQL BulkOperation type. Hashes returned by this gem have Symbol keys that are snake_cased.

Development

Tests use VCR. To re-record you need to define bulk operation IDs in .env. cp .env.example .env and update .env

There are Rake tasks to help with bulk request generation.

See Also

  • ShopifyAPI::GraphQL::Request - Simplify Shopify API GraphQL handling. Comes with built-in retry, pagination, error handling, and more!
  • TinyGID - Build Global ID (gid://) URI strings from scalar values
  • Shopify Dev Tools - Command-line program to assist with the development and/or maintenance of Shopify apps and stores

License

The gem is available as open source under the terms of the MIT License.


Made by ScreenStaring