Skip to content

Shopify

Reference for the Shopify.js custom code library, which wraps Mesa.shopify.request with get, post, put and delete helpers for the Shopify Admin API.

vendor/Shopify.js

Interact with the Shopify Admin API.

Returns

  • Void

Make a request to a Shopify site.

This is just a wrapper to Mesa.shopify.request.

Returns

  • Void

Shopify.get(path[, options, connectionInfo])

Section titled “Shopify.get(path[, options, connectionInfo])”

Make a GET request to a Shopify site.

Parameters

Name Type Description
path string
options Options Additional configuration for Shopify calls Optional
connectionInfo ConnectionInfo If you would like to connect to a separate Shopify website that Mesa is not installed on, create a Custom App and include a connectionInfo object. Optional

Returns

  • object

handleImageList(path, options, connectionInfo)

Section titled “handleImageList(path, options, connectionInfo)”

Handles listing of images with pagination.

Parameters

Name Type Description
path string - Shopify REST endpoint path.
options Object - Query options.
connectionInfo Object - Connection info for external Shopify sites.

Returns

  • Array Array of images in REST format.

handleImage(originalPath, options, connectionInfo)

Section titled “handleImage(originalPath, options, connectionInfo)”

Handles retrieval of a single image by its ID for a specific product.

Parameters

Name Type Description
originalPath string - Original API endpoint path.
options Options - Query options (not used in this implementation).
connectionInfo ConnectionInfo - Connection information for Shopify.

Returns

  • Object Processed image data in REST format.

handleProductCount(options, connectionInfo)

Section titled “handleProductCount(options, connectionInfo)”

Handles the product count query.

Parameters

Name Type Description
options
connectionInfo

Returns

handlePaginatedGraphQLQuery(queryFunction, options, transformFunction, connectionInfo)

Section titled “handlePaginatedGraphQLQuery(queryFunction, options, transformFunction, connectionInfo)”

Handles paginated GraphQL queries for products or variants.

Parameters

Name Type Description
queryFunction Function - Function that generates a GraphQL query.
options Object - Query options, including filters and limits.
transformFunction Function - Function to transform the returned data into the desired REST format.
connectionInfo Object - Optional connection info for external Shopify sites.

Returns

  • Array Array of transformed paginated results.

handleProductList(path, options, connectionInfo)

Section titled “handleProductList(path, options, connectionInfo)”

Handles listing of products with pagination.

Parameters

Name Type Description
path string - Shopify REST endpoint path.
options Object - Query options.
connectionInfo Object - Connection info for external Shopify sites.

Returns

  • Array Array of products in REST format.

Shopify.handleProduct(originalPath, options, connectionInfo)

Section titled “Shopify.handleProduct(originalPath, options, connectionInfo)”

Retrieve a single product by ID using GraphQL and convert it to REST format.

Parameters

Name Type Description
originalPath string - Original API endpoint path.
options Options - Options containing query parameters.
connectionInfo ConnectionInfo - Connection information for a separate Shopify store.

Returns

  • object Product data in REST format.

Shopify.handleProductPost(data[, connectionInfo])

Section titled “Shopify.handleProductPost(data[, connectionInfo])”

Handles the creation of a product and its variants, if provided. Converts the REST payload into the appropriate GraphQL format.

Parameters

Name Type Description
data Object - The product data in REST API format.
connectionInfo ConnectionInfo - Connection information for Shopify. Optional

Returns

  • Object - The product payload in REST API format.

handleVariantList(path, options, connectionInfo)

Section titled “handleVariantList(path, options, connectionInfo)”

Handles listing of variants with pagination.

Parameters

Name Type Description
path string - Shopify REST endpoint path.
options Object - Query options.
connectionInfo Object - Connection info for external Shopify sites.

Returns

  • Array Array of variants in REST format.

Shopify.handleVariant(originalPath, options, connectionInfo)

Section titled “Shopify.handleVariant(originalPath, options, connectionInfo)”

Retrieve a specific variant by product ID and variant ID using GraphQL and convert it to REST format.

Parameters

Name Type Description
originalPath string - Original API endpoint path.
options Options - Options containing query parameters.
connectionInfo ConnectionInfo - Connection information for a separate Shopify store.

Returns

  • object Variant data in REST format.

Handles the creation of a product image. Converts the REST payload to GraphQL format and returns the response in REST format.

Parameters

Name Type Description
data Object - The REST image payload.
connectionInfo ConnectionInfo - Shopify connection info.

Returns

  • Object - The image payload in REST format.

send(query, variables, connectionInfo, endpoint)

Section titled “send(query, variables, connectionInfo, endpoint)”

Send a GraphQL query to Shopify.

Parameters

Name Type Description
query
variables
connectionInfo
endpoint

Returns

  • object

Shopify.post(path, data[, options, connectionInfo])

Section titled “Shopify.post(path, data[, options, connectionInfo])”

Make a POST request to a Shopify site.

By default Shopify calls will auto-wrap any outgoing JSON data, eg. Shopify.post(‘/admin/products.json’, data) will result in { “product”: { data } } use options.skipJsonWrap=true to override this behavior

Parameters

Name Type Description
path string
data object
options Options Additional configuration for Shopify calls Optional
connectionInfo ConnectionInfo If you would like to connect to a separate Shopify website that Mesa is not installed on, create a Custom App and include a connectionInfo object. Optional

Returns

  • object

handleVariantPut(productId, variantId, data, connectionInfo)

Section titled “handleVariantPut(productId, variantId, data, connectionInfo)”

Handles updating a single variant for a specific product.

Parameters

Name Type Description
productId string - The ID of the product.
variantId string - The ID of the variant.
data Object - The variant data to update.
connectionInfo ConnectionInfo - Shopify connection details.

Returns

  • Object - The updated variant in REST format.

handleProductPut(productId, data, connectionInfo)

Section titled “handleProductPut(productId, data, connectionInfo)”

Handles the updating of a product and its related entities (variants, images, etc.).

Parameters

Name Type Description
productId string - The ID of the product to update.
data Object - The product data to update.
connectionInfo ConnectionInfo - Shopify connection details.

Returns

  • Object - The updated product in REST format.

Shopify.put(path, data[, options, connectionInfo])

Section titled “Shopify.put(path, data[, options, connectionInfo])”

Make a PUT request to a Shopify site.

By default Shopify calls will auto-wrap any outgoing JSON data, eg. Shopify.put(‘/admin/products.json’, data) will result in { “product”: { data } } use options.skipJsonWrap=true to override this behavior

Parameters

Name Type Description
path string
data object
options Options Additional configuration for Shopify calls Optional
connectionInfo ConnectionInfo If you would like to connect to a separate Shopify website that Mesa is not installed on, create a Custom App and include a connectionInfo object. Optional

Returns

  • object

Shopify.patch(path, data[, options, connectionInfo])

Section titled “Shopify.patch(path, data[, options, connectionInfo])”

Make a PATCH request to a Shopify site.

By default Shopify calls will auto-wrap any outgoing JSON data, eg. Shopify.patch(‘/admin/products.json’, data) will result in { “product”: { data } } use options.skipJsonWrap=true to override this behavior

Parameters

Name Type Description
path string
data object
options Options Additional configuration for Shopify calls Optional
connectionInfo ConnectionInfo If you would like to connect to a separate Shopify website that Mesa is not installed on, create a Custom App and include a connectionInfo object. Optional

Returns

  • object

Shopify.delete(path[, options, connectionInfo])

Section titled “Shopify.delete(path[, options, connectionInfo])”

Make a DELETE request to a Shopify site.

By default Shopify calls will auto-wrap any outgoing JSON data, eg. Shopify.post(‘/admin/products.json’, data) will result in { “product”: { data } } use options.skipJsonWrap=true to override this behavior

Parameters

Name Type Description
path string
options Options Additional configuration for Shopify calls Optional
connectionInfo ConnectionInfo If you would like to connect to a separate Shopify website that Mesa is not installed on, create a Custom App and include a connectionInfo object. Optional

Returns

  • object

Returns myshopify domain from the connection.

Parameters

Name Type Description
context

Returns

  • string The myshopify domain. Ex: mystore.myshopify.com

Returns myshopify domain from the connection.

Parameters

Name Type Description
context

Returns

Returns the subdomain part of the myshopify domain from the connection.

Parameters

Name Type Description
context

Returns

  • string The subdomain part of the myshopify domain. Ex: mystore

deleteProduct(path, options, connectionInfo)

Section titled “deleteProduct(path, options, connectionInfo)”

Delete a product by ID.

Parameters

Name Type Description
path string - Shopify REST endpoint path.
options Object - Query options.
connectionInfo Object - Connection info for external Shopify sites.

Returns

  • Void

deleteVariant(path, options, connectionInfo)

Section titled “deleteVariant(path, options, connectionInfo)”

Delete a variant by ID.

Parameters

Name Type Description
path string - Shopify REST endpoint path.
options Object - Query options.
connectionInfo Object - Connection info for external Shopify sites.

Returns

  • Void

deleteImage(path, options, connectionInfo)

Section titled “deleteImage(path, options, connectionInfo)”

Delete a product image by ID.

Parameters

Name Type Description
path string - Shopify REST endpoint path.
options Object - Query options.
connectionInfo Object - Connection info for external Shopify sites.

Returns

  • Void

Make consecutive calls to Shopify in order to retrieve all products. https://help.shopify.com/en/api/reference/products/product

Parameters

Name Type Description
query={} object Parameters to append to the Shopify querystring. Optional
limit=250 number Result count for Shopify query. Optional

Examples

// returns array of all products
const Shopify = require('vendor/Shopify.js');
Shopify.getAllProducts();

Returns

  • array

Update a value if it already exists, or append it to the array if it does not exist. The example routine below should be every time we are updating tags or note_attributes to ensure that multiple Automations will work nicely with each other and not overwrite values set in other Automations.

Parameters

Name Type Description
data array An array of values that you would like to append a value to Optional
The string object value to append to the array. For tags, this would be a string. For note_attributes, this would be an object.

Examples

Mesa.log.debug('Calling shopify to get the latest order note_attributes');
const order = Shopify.get(`admin/orders/${payload.id}.json`);
let noteAttributes = order.order.note_attributes;
noteAttributes = Shopify.appendToArray(noteAttributes, {
name: 'dob',
value: 'Jan 1 2000',
});

Returns

  • array

Get inventory location information for a Shopify variant. https://help.shopify.com/en/api/reference/inventory/inventorylevel

Parameters

Name Type Description
variantId number Shopify variant id.

Examples

// returns { inventory_item_id: {number}, [ { inventory_levels: { inventory_item_id: {number}, location_id: {number}, available: {number}, updated_at: {string} } ] }
const Shopify = require('vendor/Shopify.js');
Shopify.getVariantInventoryData(123456);

Returns

  • <a href="#object-inventorydata">InventoryData</a>

buildVariantInventoryUpdate(variantId, inventoryCount[, adjust=true, fulfillableAlter])

Section titled “buildVariantInventoryUpdate(variantId, inventoryCount[, adjust=true, fulfillableAlter])”

Build InventoryLevel update information for a Shopify variant. https://help.shopify.com/en/api/reference/inventory/inventorylevel

Parameters

Name Type Description
variantId number Shopify variant id.
inventoryCount number Value to set as inventory.
adjust=true bool Switch for available_adjustment vs available. Optional
fulfillableAlter fulfillableAlter Callback function allows fulfillment location to be altered. Optional

Examples

// note string for location_id, as it is required by Shopify API post
// returns { inventory_item_id: {number}, location_id: {string}, available|available_adjustment: {number} } ] }
const Shopify = require('vendor/Shopify.js');
Shopify.buildVariantInventoryUpdate(123456, 10, true | false);

Returns

  • <a href="#object-inventoryupdatedata">InventoryUpdateData</a>

options parameter for Shopify calls

By default Shopify calls will auto-wrap any outgoing JSON data, eg. Shopify.post(‘/admin/products.json’, data) will result in { “product”: { data } } use skipJsonWrap=true to override this behavior

Properties

Returns

  • Void

connectionInfo parameter for Shopify calls

Properties

Returns

  • Void

Fulfillable location shape returned by fulfillableAlter https://help.shopify.com/en/api/reference/inventory/location

Parameters

Name Type Description
location_id number The ID of the location that the inventory level belongs to.

Returns

  • Void

{Function} fulfillableAlter(inventoryLevels)

Section titled “{Function} fulfillableAlter(inventoryLevels)”

Callback allows buildVariantInventoryUpdate fulfillment location to be altered. https://help.shopify.com/en/api/reference/inventory/inventorylevel

Parameters

Name Type Description
inventoryLevels Array.<Object> Inventory levels for the variant at different locations.
inventoryLevels.inventory_item_id number Inventory item id for variant
inventoryLevels.location_id number Location id
inventoryLevels.available number Inventory count
inventoryLevels.updated_at string Last updated

Returns

  • <a href="#object-fulfillablelocation">FulfillableLocation</a> fulfillableLocation

Return from getVariantInventoryData.

Properties

Returns

  • Void

Return from buildVariantInventoryUpdate. Will either have available or available_adjustment depending on adjust param. https://help.shopify.com/en/api/reference/inventory/inventorylevel

Properties

Returns

  • Void