The developer API exposes “External” trigger outside of mtion studio. It allows them to be queried as well as fired. This API can be called at localhost:35393 whenever a local instance of mtion studio is running.
Get all external triggers
Returns an array of external trigger datas in the currently opened clubhouse
Fires an external trigger with some optional parameter data. When called with GET the data is passed as a query parameter. When called with PATCH the data is passed as a JSON in the body. This request also returns the data of the trigger that was fired.
Below is a sample python script which queries the external triggers in the currently opened clubhouse. It then fires each one while passing some mock data to each of their parameters.
import requests
# This script gets all of the external triggers in the current clubhouse
# It then generates some sample data for each trigger's parameters
# Finally, it fires each trigger using the sample parameter data
def main():
trigger_datas = get_external_trigger_datas()
if trigger_datas:
for trigger_data in trigger_datas:
sample_parameter_values = generate_parameter_values_for_trigger(trigger_data)
fire_external_trigger(trigger_data, sample_parameter_values)
# Calls the API to get all the external triggers in the currently opened clubhouse
def get_external_trigger_datas():
url = "http://localhost:35393/external-trigger/triggers"
try:
response = requests.get(url)
data = response.json()
response.raise_for_status()
print(f"Successfully received external trigger datas: {data}")
return data
except requests.exceptions.RequestException as e:
print(f"Error occurred: {e}, {data}")
# Calls the API to fire a trigger
def fire_external_trigger(trigger_data, parameterValues):
url = f"http://localhost:35393/external-trigger/fire-trigger/{trigger_data["id"]}"
headers = {'Content-Type': 'application/json'}
try:
response = requests.patch(url, json=parameterValues, headers=headers)
data = response.json()
response.raise_for_status()
print(f"Successfully fired external trigger with ID: {trigger_data["id"]}")
return data
except requests.exceptions.RequestException as e:
print(f"Error occurred: {e}, {data}")
# Generates some mock data for each of a trigger's parameters
def generate_parameter_values_for_trigger(trigger_data):
output = []
for parameter in trigger_data["output_parameters"]:
parameterValue = {"parameter_index": parameter["parameter_index"]}
match parameter["data_type"]:
case "string":
parameterValue["value"] = "Sample string from python script!"
case "number":
parameterValue["value"] = 123
case "bool":
parameterValue["value"] = True
case "enum":
parameterValue["value"] = 0
output.append(parameterValue)
print(f"Successfully generated mock data for external trigger: {output}")
return output
if __name__ == "__main__":
main()
Clubhouses
The developer API exposes clubhouses of mtion studio. This API can be called at localhost:35393 whenever a local instance of mtion studio is running.
Get all clubhouses
Returns an array of clubhouse datas for the current user.
Successfully retrieved the currently opened clubhouse’s external triggers
404 Not Found
Clubhouse not found
Sample Query
curl -X GET 'http://localhost:35393/clubhouse/MCLB-bbe66e6c-f8c4-4ba4-99b7-630b16d09d15'
Sample Response
{
"id": "MCLB-bbe66e6c-f8c4-4ba4-99b7-630b16d09d15",
"name": "Empty Template",
"description": "Build your own clubhouse from scratch. Nothing in here but your imagination. ",
"external_trigger_datas": []
}
Successfully retrieved the currently opened clubhouse’s external triggers
404 Not Found
No clubhouse open
Sample Query
curl -X GET 'http://localhost:35393/active-clubhouse'
Sample Response
{
"id": "MCLB-bbe66e6c-f8c4-4ba4-99b7-630b16d09d15",
"name": "Empty Template",
"description": "Build your own clubhouse from scratch. Nothing in here but your imagination. ",
"external_trigger_datas": []
}