{
    "dynamicOutputs": [
        {
            "identifier": "Design",
            "dataTypes": [
                "Float",
                "Vector"
            ],
            "defaultDataType": "Float",
            "metaData": {
                "hasStartValue": {
                    "guiName": "Has start value",
                    "guiPosition": "0",
                    "guiGroup": "Start values",
                    "visibility": "userConfigurable",
                    "defaultValue": "true",
                    "dataType": "bool"
                },
                "startValue": {
                    "guiName": "Start value",
                    "guiPosition": "1",
                    "guiGroup": "Start values",
                    "visibility": "shown",
                    "dataType": "float",
                    "defaultValue": "0",
                    "validation": "required",
                    "guiActivationFilter": {
                        "hasStartValue": [
                            "true"
                        ]
                    }
                },
                "useStep": {
                    "guiName": "Use step size",
                    "guiPosition": "0",
                    "guiGroup": "Step values",
                    "visibility": "shown",
                    "defaultValue": "false",
                    "dataType": "bool",
                    "guiVisibilityFilter": {
                        "configuration:optimizerPackageCode": [
                            "generic"
                        ]
                    }
                },
                "useUnifiedStep": {
                    "guiName": "Use unified step size",
                    "guiPosition": "1",
                    "guiGroup": "Step values",
                    "visibility": "shown",
                    "defaultValue": "true",
                    "dataType": "bool",
                    "guiActivationFilter": {
                        "useStep": [
                            "true"
                        ]
                    },
                    "guiVisibilityFilter": {
                        "configuration:optimizerPackageCode": [
                            "generic"
                        ]
                    }
                },
                "step": {
                    "guiName": "Step size",
                    "guiPosition": "2",
                    "guiGroup": "Step values",
                    "visibility": "shown",
                    "dataType": "float",
                    "defaultValue": "1",
                    "validation": "required",
                    "guiActivationFilter": {
                        "useUnifiedStep": [
                            "true"
                        ],
                        "useStep": [
                            "true"
                        ]
                    },
                    "guiVisibilityFilter": {
                        "configuration:optimizerPackageCode": [
                            "generic"
                        ]
                    }
                },
                "hasSingleBounds": {
                    "guiName": "Has unified bounds",
                    "guiPosition": "0",
                    "guiGroup": "Bounds",
                    "visibility": "shown",
                    "defaultValue": "true",
                    "dataType": "bool"
                },
                "isDiscrete": {
                    "guiName": "Is discrete variable\n(Note: not all methods\nsupport discrete optimization)",
                    "guiPosition": "0",
                    "guiGroup": "Options",
                    "visibility": "shown",
                    "defaultValue": "false",
                    "dataType": "bool"
                },
                "lower": {
                    "guiName": "Lower bound",
                    "guiPosition": "1",
                    "guiGroup": "Bounds",
                    "dataType": "float",
                    "visibility": "shown",
                    "defaultValue": "-1",
                    "validation": "required",
                    "guiActivationFilter": {
                        "hasSingleBounds": [
                            "true"
                        ]
                    }
                },
                "upper": {
                    "guiName": "Upper bound",
                    "guiPosition": "2",
                    "guiGroup": "Bounds",
                    "dataType": "float",
                    "visibility": "shown",
                    "defaultValue": "1",
                    "validation": "required",
                    "guiActivationFilter": {
                        "hasSingleBounds": [
                            "true"
                        ]
                    }
                },
                "vectorSize": {
                    "guiName": "Dimension of vector",
                    "guiPosition": "0",
                    "guiGroup": "Vector",
                    "dataType": "int",
                    "visibility": "shown",
                    "endpointDataTypes": [
                        "Vector"
                    ],
                    "validation": "required"
                }
            }
        },
        {
            "identifier": "optima",
            "character": "outerLoop",
            "dataTypes": [
                "Float",
                "Vector"
            ],
            "defaultDataType": "Float"
        },
        {
            "identifier":"toForward",
            "character": "sameLoop",
            "dataTypes":[
                "Boolean",
                "ShortText",
                "Integer",
                "Float",
                "FileReference",
                "DirectoryReference",
                "SmallTable", 
                "Vector"
            ],
            "defaultDataType":"FileReference",
            "readOnly": "true"
        },
        {
            "identifier":"finalToForward",
            "character": "outerLoop",
            "dataTypes":[
                "Boolean",
                "ShortText",
                "Integer",
                "Float",
                "FileReference",
                "DirectoryReference",
                "SmallTable", 
                "Vector"
            ],
            "defaultDataType":"FileReference",
            "readOnly": "true"
        }
    ],
    "staticOutputs": [
        {
            "name": "Done",
            "character": "outerLoop",
            "dataTypes": [
                "Boolean"
            ],
            "defaultDataType": "Boolean"
        },
        {
            "name": "Gradient request",
            "character": "sameLoop",
            "dataTypes": [
                "Boolean"
            ],
            "defaultDataType": "Boolean"
        },
        {
            "name": "Iteration",
            "character": "sameLoop",
            "dataTypes": [
                "Integer"
            ],
            "defaultDataType": "Integer"
        }
    ]
}