External Triggers
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
URL
GET http://localhost:35393/external-trigger/triggers
Response Codes
200 OK
Successfully retrieved the currently opened clubhouse’s external triggers
404 Not Found
No clubhouse open
Sample Query
curl -X GET 'http://localhost:35393/external-trigger/triggers'
Sample Response
[
{
"id": "1ff84176fc8242d8918e1404f33d6161",
"name": "New External Trigger",
"output_parameters": [
{
"parameter_index": 0,
"name": "First String Parameter",
"data_type": "string"
},
{
"parameter_index": 1,
"name": "Second Number Parameter",
"data_type": "number"
},
{
"parameter_index": 2,
"name": "Third Bool Parameter",
"data_type": "bool"
},
{
"parameter_index": 3,
"name": "Fourth Enum Parameter",
"data_type": "enum"
}
]
},
{
"id": "08195c6a468a49228ccf4c88f11558c7",
"name": "New External Trigger 2",
"output_parameters": [
{
"parameter_index": 0,
"name": "First String Parameter",
"data_type": "string"
}
]
}
]
Get single external trigger
Returns a single external trigger data specified by id in the currently opened clubhouse
URL
GET http://localhost:35393/external-trigger/trigger/:trigger-id
Response Codes
200 OK
Successfully retrieved the trigger data
404 Not Found
No clubhouse open or trigger not found
Sample Query
curl -X GET 'http://localhost:35393/external-trigger/trigger/1ff84176fc8242d8918e1404f33d6161'
Sample Response
{
"id": "1ff84176fc8242d8918e1404f33d6161",
"name": "New External Trigger",
"output_parameters": [
{
"parameter_index": 0,
"name": "First String Parameter",
"data_type": "string"
},
{
"parameter_index": 1,
"name": "Second Number Parameter",
"data_type": "number"
},
{
"parameter_index": 2,
"name": "Third Bool Parameter",
"data_type": "bool"
},
{
"parameter_index": 3,
"name": "Fourth Enum Parameter",
"data_type": "enum"
}
]
}
Fire External Trigger
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.
URL
GET http://localhost:35393/external-trigger/fire-trigger/:trigger-id?parameter_data=[]
PATCH http://localhost:35393/external-trigger/fire-trigger/:trigger-id
Response Codes
200 OK
Successfully fired the trigger
404 Not Found
No clubhouse open or trigger not found
Sample GET Query
curl -X GET'http://localhost:35393/external-trigger/fire-trigger/1ff84176fc8242d8918e1404f33d6161?parameter_data=[{"parameter_index":0,"value":"Hello"}, {"parameter_index":1,"value":123}, {"parameter_index":2,"value":true}, {"parameter_index":3,"value":1}]'
Sample PATCH Query
curl -X PATCH 'http://localhost:35393/external-trigger/fire-trigger/1ff84176fc8242d8918e1404f33d6161' \
-H 'Content-Type: application/json' \
--data-raw '[{"parameter_index":0,"value":"Hello"}, {"parameter_index":1,"value":123}, {"parameter_index":2,"value":true}, {"parameter_index":3,"value":1}]'
Sample Response
{
"id": "1ff84176fc8242d8918e1404f33d6161",
"name": "New External Trigger",
"output_parameters": [
{
"parameter_index": 0,
"name": "First String Parameter",
"data_type": "string"
},
{
"parameter_index": 1,
"name": "Second Number Parameter",
"data_type": "number"
},
{
"parameter_index": 2,
"name": "Third Bool Parameter",
"data_type": "bool"
},
{
"parameter_index": 3,
"name": "Fourth Enum Parameter",
"data_type": "enum"
}
]
}
Sample Python script
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.
URL
GET http://localhost:35393/clubhouses
Response Codes
200 OK
Successfully retrieved the currently opened clubhouse’s external triggers
Sample Query
[
{
"id": "MCLB-a294ccd1-70d4-46e1-b37f-d59d4e2f38fe",
"name": "Kongo's Clubhouse",
"description": "Your own tropical hide out complete with private beach. Don't worry, there's WiFi.",
"external_trigger_datas": [
{
"id": "518ab1f4ea5d44c18d6a1cc72d964ffb",
"name": "Sample Trigger 1",
"output_parameters": [
{
"parameter_index": 0,
"name": "Text Parameter",
"data_type": "string"
}
]
},
{
"id": "8f01945e5a0d46ed8742b663d1cdbe31",
"name": "Sample Trigger 2",
"output_parameters": [
{
"parameter_index": 0,
"name": "Number Parameter",
"data_type": "number"
}
]
}
]
},
{
"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": []
}
]
Get single clubhouse
Returns the clubhouse data specified by the id.
URL
GET http://localhost:35393/clubhouse/:clubhouse-id
Response Codes
200 OK
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": []
}
Get active clubhouse
Returns the currently opened clubhouse’s data.
URL
GET http://localhost:35393/active-clubhouse
Response Codes
200 OK
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": []
}
Last updated