Shopify | MESA Docs
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 | 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)
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)
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)
Handles the product count query.
Parameters
| Name | Type | Description |
|---|---|---|
| options | Object |
Query options. |
| connectionInfo | Object |
Connection info for external Shopify sites. |
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
ArrayArray of transformed paginated results.
handleProductList(path, options, connectionInfo)
Handles listing of products with pagination.
Parameters
Returns
ArrayArray 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 | Options containing query parameters. |
| connectionInfo | ConnectionInfo | Connection information for a separate Shopify store. |
Returns
objectProduct 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 | ConnectionInfo | Connection information for Shopify. |
Returns
ObjectThe product payload in REST API format.
handleVariantList(path, options, connectionInfo)
Handles listing of variants with pagination.
Parameters
Returns
ArrayArray 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
Returns
objectVariant 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 | ConnectionInfo | Shopify connection info. |
Returns
ObjectThe image payload in REST format.
send(query, variables, connectionInfo, endpoint)
Send a GraphQL query to Shopify.
Parameters
| Name | Type | Description |
|---|---|---|
| query | string |
The GraphQL query string. |
| variables | object |
The variables to be included in the query. |
| connectionInfo | Object |
Additional connection configuration. |
| endpoint | string |
The endpoint to send the request to. |
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, e.g. 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 |
Shopify REST endpoint path. |
| data | object |
Data to send to the Shopify endpoint. |
| options | Options | Additional configuration for Shopify calls Optional |
| connectionInfo | ConnectionInfo | Connection information for Shopify 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 | ConnectionInfo | Shopify connection details. |
Returns
ObjectThe 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 | ConnectionInfo | Shopify connection details. |
Returns
ObjectThe 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, e.g. Shopify.put('/admin/products.json', data) will result in { "product": { data } } use options.skipJsonWrap=true to override this behavior.
Parameters
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, e.g. Shopify.patch('/admin/products.json', data) will result in { "product": { data } } use options.skipJsonWrap=true to override this behavior.
Parameters
Returns
object
Shopify.delete(path[, options, connectionInfo])
Make a DELETE request to a Shopify site.
Parameters
| Name | Type | Description |
|---|---|---|
| path | string |
Shopify REST endpoint path. |
| options | Options | Additional configuration for Shopify calls Optional |
| connectionInfo | ConnectionInfo | Connection information for Shopify Optional. |
Returns
object
getMyshopifyDomain(context)
Returns myshopify domain from the connection.
Parameters
| Name | Type | Description |
|---|---|---|
| context | Object |
Context containing connection information. |
Returns
stringThe myshopify domain. Ex: mystore.myshopify.com
getShopifyAdminUrl(context)
Returns myshopify domain from the connection.
Parameters
Returns
stringThe Shopify admin url, including https://. Ex: https://admin.shopify.com/store/mystore
getShopifyUuid(context)
Returns the subdomain part of the myshopify domain from the connection.
Parameters
Returns
stringThe 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
Returns
Void
deleteImage(path, options, connectionInfo)
Delete a product image by ID.
Parameters
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 | 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 | 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, e.g. 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