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
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 | |||
| 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
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. | Optional |
Returns
Object- The 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
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 | 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)
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)
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])
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
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
Returns
object
Shopify.delete(path[, options, connectionInfo])
Make a DELETE request to a Shopify site.
Parameters
Returns
object
getMyshopifyDomain(context)
Returns myshopify domain from the connection.
Parameters
| Name | Type | Description | |
|---|---|---|---|
| context |
Returns
stringThe myshopify domain. Ex: mystore.myshopify.com
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)
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)
Delete a product by ID.
Parameters
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=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 | 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