Shopify

vendor/Shopify.js

Shopify()

Interact with the Shopify Admin API.

Returns

  • Void

request()

Make a request to a Shopify site.

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

Returns

  • Void

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

Make a GET request to a Shopify site.

Parameters

Name
Type
Description

path

string

options

Additional configuration for Shopify calls

Optional

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)

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)

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

Parameters

Name
Type
Description

originalPath

string

- Original API endpoint path.

options

- Query options (not used in this implementation).

connectionInfo

- Connection information for Shopify.

Returns

  • Object Processed image data in REST format.

handleProductCount(options, connectionInfo)

Handles the product count query.

Parameters

Name
Type
Description

options

connectionInfo

Returns

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)

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)

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 containing query parameters.

connectionInfo

- Connection information for a separate Shopify store.

Returns

  • object Product data in REST format.

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

- Connection information for Shopify.

Optional

Returns

  • Object - The product payload in REST API format.

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)

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 containing query parameters.

connectionInfo

- Connection information for a separate Shopify store.

Returns

  • object Variant data in REST format.

handleImagePost(data, connectionInfo)

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

- Shopify connection info.

Returns

  • Object - The image payload in REST format.

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])

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

Additional configuration for Shopify calls

Optional

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)

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

- Shopify connection details.

Returns

  • Object - The updated variant in REST format.

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

- Shopify connection details.

Returns

  • Object - The updated product in REST format.

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

Additional configuration for Shopify calls

Optional

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])

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

Additional configuration for Shopify calls

Optional

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])

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

Additional configuration for Shopify calls

Optional

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

getMyshopifyDomain(context)

Returns myshopify domain from the credential.

Parameters

Name
Type
Description

context

Returns

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

getShopifyAdminUrl(context)

Returns myshopify domain from the credential.

Parameters

Name
Type
Description

context

Returns

  • string The Shopify admin url, including https://. Ex: https://admin.shopify.com/store/mystore

getShopifyUuid(context)

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

Parameters

Name
Type
Description

context

Returns

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

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)

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)

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

getAllProducts([query={}, limit=250])

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

appendToArray([data], The)

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

getVariantInventoryData(variantId)

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])

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

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>

{Object} Options()

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

{Object} ConnectionInfo()

connectionInfo parameter for Shopify calls

Properties

Returns

  • Void

{Object} FulfillableLocation()

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)

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

{Object} InventoryData()

Return from getVariantInventoryData.

Properties

Returns

  • Void

{Object} InventoryUpdateData()

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

Last updated

Was this helpful?