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
Shopify()
Section titled “Shopify()”Interact with the Shopify Admin API.
Returns
Void
request()
Section titled “request()”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
ArrayArray 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
ObjectProcessed 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
ArrayArray 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
ArrayArray 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
objectProduct 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
ArrayArray 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
objectVariant data in REST format.
handleImagePost(data, connectionInfo)
Section titled “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
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
getMyshopifyDomain(context)
Section titled “getMyshopifyDomain(context)”Returns myshopify domain from the connection.
Parameters
| Name | Type | Description | |
|---|---|---|---|
| context |
Returns
stringThe myshopify domain. Ex: mystore.myshopify.com
getShopifyAdminUrl(context)
Section titled “getShopifyAdminUrl(context)”Returns myshopify domain from the connection.
Parameters
| Name | Type | Description | |
|---|---|---|---|
| context |
Returns
stringThe Shopify admin url, including https://. Ex: https://admin.shopify.com/store/mystore
getShopifyUuid(context)
Section titled “getShopifyUuid(context)”Returns the subdomain part of the myshopify domain from the connection.
Parameters
| Name | Type | Description | |
|---|---|---|---|
| context |
Returns
stringThe 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
getAllProducts([query={}, limit=250])
Section titled “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 productsconst Shopify = require('vendor/Shopify.js');Shopify.getAllProducts();Returns
array
appendToArray([data], The)
Section titled “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)
Section titled “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])
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>
{Object} Options()
Section titled “{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()
Section titled “{Object} ConnectionInfo()”connectionInfo parameter for Shopify calls
Properties
Returns
Void
{Object} FulfillableLocation()
Section titled “{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)
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
{Object} InventoryData()
Section titled “{Object} InventoryData()”Return from getVariantInventoryData.
Properties
Returns
Void
{Object} InventoryUpdateData()
Section titled “{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
