Back to Top

Mesa Script SDK

Mesa.log.info(message[, meta])

Log info to Mesa Logs.

Parameters

Name Type Description
message string
meta object Optional

Returns

Void

Mesa.log.warn(message[, meta])

Log a warning to Mesa Logs.

Parameters

Name Type Description
message string
meta object Optional

Returns

Void

Mesa.log.error(message[, meta])

Log an error to Mesa Logs.

Parameters

Name Type Description
message string
meta object Optional

Returns

Void

Mesa.log.debug(message[, meta])

Log info to Mesa Logs only if the Automation is in Debug Mode.

Parameters

Name Type Description
message string
meta object Optional

Returns

Void

Mesa.request.get(path[, options])

Make a GET request to an external Rest API.

Parameters

Name Type Description
path string
options object Optional
options.json bool

Automatically add JSON Content-Type headers and decode the response. Default: true

Optional
options.query object

Parameters to append to the querystring.

Optional
options.headers object

Headers to send to the request.

Optional
options.include_headers bool

Include headers in the response. The response format will be { "headers": {}, "body": {} }.

Optional
options.debug bool

Log request information and response headers. Defaults to context.automation.debug.

Optional
options.debug_exclude_headers array

Exclude headers from debugging information to keep secret keys a secret. An array of header keys (example: Content-Type).

Optional
options.stringify_large_ints bool

If JSON response, and response has ints over the JS max int, will traverse entire payload and cast long ints to strings

Optional

Returns

string object

The response returned by the request. object if options.json is true, string if options.json is false.

Mesa.request.post(path, data[, options])

Make a POST request to an external Rest API.

Parameters

Name Type Description
path string
data object
options object Optional
options.json bool

Automatically add JSON Content-Type headers and decode the response. Default: true

Optional
options.query object

Parameters to append to the querystring.

Optional
options.headers object

Headers to send to the request.

Optional
options.include_headers bool

Include headers in the response. The response format will be { "headers": {}, "body": {} }.

Optional
options.debug bool

Log request information and response headers. Defaults to context.automation.debug.

Optional
options.debug_exclude_headers array

Exclude headers from debugging information to keep secret keys a secret. An array of header keys (example: Content-Type).

Optional
options.stringify_large_ints bool

If JSON response, and response has ints over the JS max int, will traverse entire payload and cast long ints to strings

Optional

Returns

string object

The response returned by the request. object if options.json is true, string if options.json is false.

Mesa.request.put(path, data[, options])

Make a PUT request to an external Rest API.

Parameters

Name Type Description
path string
data object
options object Optional
options.json bool

Automatically add JSON Content-Type headers and decode the response. Default: true

Optional
options.query object

Parameters to append to the querystring.

Optional
options.headers object

Headers to send to the request.

Optional
options.include_headers bool

Include headers in the response. The response format will be { "headers": {}, "body": {} }.

Optional
options.debug bool

Log request information and response headers. Defaults to context.automation.debug.

Optional
options.debug_exclude_headers array

Exclude headers from debugging information to keep secret keys a secret. An array of header keys (example: Content-Type).

Optional
options.stringify_large_ints bool

If JSON response, and response has ints over the JS max int, will traverse entire payload and cast long ints to strings

Optional

Returns

string object

The response returned by the request. object if options.json is true, string if options.json is false.

Mesa.request.patch(path, data[, options])

Make a PATCH request to an external Rest API.

Parameters

Name Type Description
path string
data object
options object Optional
options.json bool

Automatically add JSON Content-Type headers and decode the response. Default: true

Optional
options.query object

Parameters to append to the querystring.

Optional
options.headers object

Headers to send to the request.

Optional
options.include_headers bool

Include headers in the response. The response format will be { "headers": {}, "body": {} }.

Optional
options.debug bool

Log request information and response headers. Defaults to context.automation.debug.

Optional
options.debug_exclude_headers array

Exclude headers from debugging information to keep secret keys a secret. An array of header keys (example: Content-Type).

Optional
options.stringify_large_ints bool

If JSON response, and response has ints over the JS max int, will traverse entire payload and cast long ints to strings

Optional

Returns

string object

The response returned by the request. object if options.json is true, string if options.json is false.

Mesa.request.delete(path[, options])

Make a DELETE request to an external Rest API.

Parameters

Name Type Description
path string
options object Optional
options.json bool

Automatically add JSON Content-Type headers and decode the response. Default: true

Optional
options.query object

Parameters to append to the querystring.

Optional
options.headers object

Headers to send to the request.

Optional
options.include_headers bool

Include headers in the response. The response format will be { "headers": {}, "body": {} }.

Optional
options.debug bool

Log request information and response headers. Defaults to context.automation.debug.

Optional
options.debug_exclude_headers array

Exclude headers from debugging information to keep secret keys a secret. An array of header keys (example: Content-Type).

Optional
options.stringify_large_ints bool

If JSON response, and response has ints over the JS max int, will traverse entire payload and cast long ints to strings

Optional

Returns

string object

The response returned by the request. object if options.json is true, string if options.json is false.

Mesa.request.send(method, path, data[, options])

Make a request to an external Rest API.

Parameters

Name Type Description
method string

One of GET, POST, PUT, PATCH, or DELETE

path string
data object
options object Optional
options.json bool

Automatically add JSON Content-Type headers and decode the response. Default: true

Optional
options.query object

Parameters to append to the querystring.

Optional
options.headers object

Headers to send to the request.

Optional
options.include_headers bool

Include headers in the response. The response format will be { "headers": {}, "body": {} }.

Optional
options.debug bool

Log request information and response headers. Defaults to context.automation.debug.

Optional
options.debug_exclude_headers array

Exclude headers from debugging information to keep secret keys a secret. An array of header keys (example: Content-Type).

Optional
options.stringify_large_ints bool

If JSON response, and response has ints over the JS max int, will traverse entire payload and cast long ints to strings

Optional

Returns

string object

The response returned by the request. object if options.json is true, string if options.json is false.

Mesa.request.base64_encode(string)

Base-64 encode a string. This is helpful when building an Authorization header for basic auth requests.

Parameters

Name Type Description
string string

The string to encode

Returns

string

The base-64 encoded version of the input string parameter.

Mesa.request.base64_decode(string[, strict])

Base64 decode a string. Decodes data encoded with MIME base64

Parameters

Name Type Description
string string

The base-64 encoded version of the input string parameter.

strict bool

If the strict parameter is set to TRUE then the base64_decode() function will return FALSE if the input contains character from outside the base64 alphabet. Defaults to FALSE.

Optional

Returns

string

The decoded string.

Mesa.request.hash(algorithm, string[, base64encode])

Generate a hash of a string. This is helpful when creating signed requests.

Parameters

Name Type Description
algorithm string

The algorithm to use. Options: sha1, sha256, md5

string string

The string to create the hash from

base64encode string

Should we base64-encode the raw value of the hash?

Optional

Returns

string

The raw binary data of the hash

Mesa.request.hashHmac(algorithm, string, string[, base64encode])

Generate a keyed hash value using the HMAC method. This is helpful when creating signed requests.

Parameters

Name Type Description
algorithm string

The algorithm to use. Options: sha1, sha256, md5

string string

The string to create the hash from

string string

Shared secret key used for generating the HMAC variant of the message digest

base64encode string

Should we base64-encode the raw value of the hash?

Optional

Returns

string

The raw binary data of the hash

Mesa.request.sleep($seconds)

Pauses execution

Parameters

Name Type Description
$seconds int

Returns

Mesa.credential.get(key[, defaultValue])

Get a secret.

Parameters

Name Type Description
key string
defaultValue string

A default value to use if the secret cannot be found. If defaultValue is empty, the script will throw a fatal error if the secret is not found.

Optional

Returns

string

The secret value.

Mesa.credential.set(key, value[, options])

Save a secret value.

Parameters

Name Type Description
key string

The credential key or id.

value string

The value to save. This will be encrypted at rest, and can contained a stringified JSON array.

options object Optional
options.oauth_provider bool Optional
options.oauth_scope object Optional
options.trigger_type object Optional

Returns

Void

Mesa.database.query(sql)

Get a storage item

Parameters

Name Type Description
sql string

The SQL query to run

Returns

array

The result of the query.

Mesa.storage.get(key[, defaultValue])

Get a storage item

Parameters

Name Type Description
key string
defaultValue string

A default value to use if the storage key cannot be found. If defaultValue is empty, the script will throw a fatal error if the storage key is not found.

Optional

Returns

string

The storage value.

Mesa.storage.set(key, value)

Get a storage item

Parameters

Name Type Description
key string
value string

Returns

Void

Mesa.liquid.render(template, params)

Render a liquid template with the params passed.

Parameters

Name Type Description
template string

String representing a liquid template.

params object

A keyed object of parameters to replace.

Returns

string

The rendered template code.

Mesa.input.getWebhookUrl(type, format, automationId, key)

Generates the URL for input webhooks

Parameters

Name Type Description
type string

Type of webhook: json, shopify

format string

Format of the returned data: string or array. If string, a full URL is returned. If array, URL will comprise two fields suffix and prefix

automationId string

ID of the Automation

key string

The key of the trigger

Returns

string array

The rendered template code.

Mesa.output.next(payload, params)

Pass a payload to the service and call the next step in this Automation.

Parameters

Name Type Description
payload object
params object

Parameters to send to the output, such as tokens to construct a Shopify API url

params.enqueue bool

Defaults to false. Set to true if you are exploding multiple tasks that can be run in parallel.

Optional

Returns

Void

Mesa.output.send(outputKey, payload, enqueue)

Call an arbitrary output from a Mesa Script

Parameters

Name Type Description
outputKey string
payload object
enqueue bool

Defaults to false. Set to true if you are exploding multiple tasks that can be run in parallel.

Returns

Void

Mesa.automation.send(automationKey, payload)

Call another automation from a Mesa Script

Parameters

Name Type Description
automationKey string

In the form ${automationKey}, this will trigger the first input in the Automation. In the form ${automationKey}/${inputKey}, this will trigger a specific input in the automation.

payload object

Returns

Void

Mesa.ftp.deleteFile(filename)

Delete the file loaded by the Input.

Parameters

Name Type Description
filename string

Typically passed from context.filename.

Returns

Void

Mesa.ftp.moveFile(filename, destinationFilenameAndPath)

Move the file loaded by the Input to a new location.

Parameters

Name Type Description
filename string

Typically passed from context.filename.

destinationFilenameAndPath string

Returns

Void

Mesa.xml.decode(xmlString[, namespaceSep='_'])

Convert an XML file into an {object}. This function will condense XML namespaces into {namespaceSep = '_'} separated values: soapenv:Body becomes { soapenv_Body: {} }

Parameters

Name Type Description
xmlString string

The xml file to be decoded

namespaceSep='_' string

Namespace separator for replacing soapenv:Body type values with soapenv_Body

Optional

Returns

object

Mesa.xml.encode(xmlObject[, wrapReplace, namespaceSep='_'])

Convert an object into an XML string.

Parameters

Name Type Description
xmlObject object

The object to be turned into xml.

wrapReplace string

Replace the default wrapping provided with another value

Optional
namespaceSep='_' string

Namespace separator for replacing soapenv_Body: {} values with soapenv:Body

Optional

Examples

// returns <?xml version="1.0" encoding="UTF-8"?><doc>\n  <book>\n ...
Mesa.xml.encode({ book: { ... }});
// returns <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">\n  <soapenv:Body>\n ...
Mesa.xml.encode({ soapenv_Body: { ... } }, '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">');

Returns

string

Mesa.xml.valid(xmlString)

Check if xml is valid

Parameters

Name Type Description
xmlString string

Examples

// returns true
Mesa.xml.valid('<?xml version="1.0" encoding="UTF-8"?><doc><book><Name>My Book</Name></book></doc>');
// throws error about namespace
Mesa.xml.valid('<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope><book><Name>My Book</Name></book></soapenv:Envelope>');

Returns

bool

Mesa.csv.decode(data[, returnObject])

Convert a CSV file into an object. Keys will be matched from the first header row of the CSV file.

Parameters

Name Type Description
data string
returnObject bool

Defaults to true, which will return an object keyed by the first row in the CSV content. Set to false to return an array.

Optional

Returns

object array

Mesa.csv.encode(data[, headerRow])

Convert an object a CSV string.

Parameters

Name Type Description
data object
headerRow bool

Defaults to true. Set to false to skip the header row when returning CSV.

Optional

Returns

string

Mesa.vo.push(outputKey, payload)

Push to a Virtual Output.

Parameters

Name Type Description
outputKey string
payload mixed

Returns

Void

Mesa.vo.clear(outputKey)

Mark the matching Virtual Output records as cleared by the current Mesa Script.

Parameters

Name Type Description
outputKey string

Returns

Void

Mesa.vo.clearOne(outputKey, mesaId)

Mark a single Virtual Output record as cleared by the current Mesa Script.

Parameters

Name Type Description
outputKey string
mesaId string

The ID of the record to clear (returned as mesa_id in the Virtual Output).

Returns

Void

Mesa.date.setTimezone(timezone)

Set the timezone to use to execute all script commands.

Parameters

Name Type Description
timezone string

The timezone identifier, like UTC or America/Los_Angeles. See a full list of TZ Database names.

Returns

string

The timezone identifier, like UTC or Europe/Lisbon.

Mesa.date.format(format, timestamp)

Returns a date as a formatted string.

Parameters

Name Type Description
format string

The format of the outputted date string. See full list of options.

timestamp int

Defaults to now. Optional

Returns

string

The formatted date string.

Mesa.email.send(to, subject, body[, from])

Send an email.

Parameters

Name Type Description
to string
subject string
body string
from string

All emails will be sent from [email protected]. The from email address will be used as the From name and reply-to email address.

Optional

Returns

Void