shopify.md

For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to page URLs; this page is available as Markdown.

Shopify

vendor/Shopify.js

Shopify()

Interact with the Shopify Admin API.

Returns

request()

Make a request to a Shopify site.

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

Returns

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

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

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

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

handleProductList(path, options, connectionInfo)

Handles listing of products with pagination.

Parameters

Returns

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

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

handleVariantList(path, options, connectionInfo)

Handles listing of variants with pagination.

Parameters

Returns

Shopify.handleVariant(originalPath, options, connectionInfo)

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

Parameters

Returns

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 ConnectionInfo - Shopify connection info.

Returns

send(query, variables, connectionInfo, endpoint)

Send a GraphQL query to Shopify.

Parameters

Name Type Description
query
variables
connectionInfo
endpoint

Returns

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

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

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

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

Returns

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

Returns

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

Make a DELETE request to a Shopify site.

Parameters

Returns

getMyshopifyDomain(context)

Returns myshopify domain from the connection.

Parameters

Name Type Description
context

Returns

getShopifyAdminUrl(context)

Returns myshopify domain from the connection.

Parameters

Name Type Description
context

Returns

getShopifyUuid(context)

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

Parameters

Name Type Description
context

Returns

deleteProduct(path, options, connectionInfo)

Delete a product by ID.

Parameters

Returns

deleteVariant(path, options, connectionInfo)

Delete a variant by ID.

Parameters

Returns

deleteImage(path, options, connectionInfo)

Delete a product image by ID.

Parameters

Returns

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

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

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

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

{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

{Object} ConnectionInfo()

connectionInfo parameter for Shopify calls

Properties

Returns

{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

{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

{Object} InventoryData()

Return from getVariantInventoryData.

Properties

Returns

{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