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