{
    "$schema": "../../../$schemas/action-schema.json",
    "actions": [
        {
            "id": "setPanTiltSpeed",
            "name": "Set Pan and Tilt movement speed (virtual joystick position)",
            "destructive": false,
            "payload": {
                "type": "object",
                "properties": {
                    "panSpeed": {
                        "type": "number",
                        "ui:title": "Pan Speed",
                        "min": -1,
                        "max": 1,
                        "default": 0,
                        "description": "Pan Speed; Range: [-1.0, 1.0]; -1.0 = fastest LEFT, 0.0 = STOP, 1.0 = fastest RIGHT (each protocol might internally support a different range, which the value will be mapped into)"
                    },
                    "tiltSpeed": {
                        "type": "number",
                        "ui:title": "Tilt Speed",
                        "min": -1,
                        "max": 1,
                        "default": 0,
                        "description": "Tilt Speed; Range: [-1.0, 1.0]; -1.0 = fastest DOWN, 0.0 = STOP, 1.0 = fastest UP (each protocol might internally support a different range, which the value will be mapped into)"
                    }
                },
                "required": [
                    "panSpeed",
                    "tiltSpeed"
                ],
                "additionalProperties": false
            },
            "generic": true
        },
        {
            "id": "getPanTiltPosition",
            "name": "Get absolute Pan and Tilt position",
            "result": {
                "type": "object",
                "properties": {
                    "panPosition": {
                        "type": "number",
                        "ui:title": "Pan Position",
                        "min": -1,
                        "max": 1,
                        "description": "Pan Position; Range: [-1.0, 1.0]; -1.0 = furthest LEFT, 0.0 = CENTER, 1.0 = furthest RIGHT (each protocol might internally support a different range, which the value will be mapped from)"
                    },
                    "tiltPosition": {
                        "type": "number",
                        "ui:title": "Tilt Position",
                        "min": -1,
                        "max": 1,
                        "description": "Tilt Position; Range: [-1.0, 1.0]; -1.0 = furthest DOWN, 0.0 = CENTER, 1.0 = furthest UP (each protocol might internally support a different range, which the value will be mapped from)"
                    }
                },
                "required": [
                    "panPosition",
                    "tiltPosition"
                ],
                "additionalProperties": false
            },
            "destructive": false,
            "generic": true
        },
        {
            "id": "setZoomSpeed",
            "name": "Set Zoom adjustment speed (virtual zoom rocker position)",
            "destructive": false,
            "payload": {
                "type": "object",
                "properties": {
                    "zoomSpeed": {
                        "type": "number",
                        "ui:title": "Zoom Speed",
                        "min": -1,
                        "max": 1,
                        "default": 0,
                        "description": "Zoom Speed; Range: [-1.0, 1.0]; -1.0 = fastest WIDE, 0.0 = STOP, 1.0 = fastest TELE (each protocol might internally support a different range, which the value will be mapped into)"
                    }
                },
                "required": [
                    "zoomSpeed"
                ],
                "additionalProperties": false
            },
            "generic": true
        },
        {
            "id": "getZoomPosition",
            "name": "Get absolute Zoom position",
            "result": {
                "type": "object",
                "properties": {
                    "zoomPosition": {
                        "type": "number",
                        "ui:title": "Zoom Position",
                        "min": 0,
                        "max": 1,
                        "description": "Zoom Position; Range: [0.0, 1.0]; 0.0 = furthest WIDE, 1.0 = furthest TELE (each protocol might internally support a different range, which the value will be mapped from)"
                    }
                },
                "required": [
                    "zoomPosition"
                ],
                "additionalProperties": false
            },
            "destructive": false,
            "generic": true
        },
        {
            "id": "storePreset",
            "name": "Store in-camera Preset",
            "destructive": false,
            "payload": {
                "type": "object",
                "properties": {
                    "presetNumber": {
                        "type": "integer",
                        "ui:title": "Preset Number",
                        "ui:summaryTitle": "Preset Number",
                        "description": "Preset number, within the range supported by the camera"
                    }
                },
                "required": [
                    "presetNumber"
                ],
                "additionalProperties": false
            },
            "generic": true
        },
        {
            "id": "recallPreset",
            "name": "Recall in-camera Preset",
            "destructive": false,
            "payload": {
                "type": "object",
                "properties": {
                    "presetNumber": {
                        "type": "integer",
                        "ui:title": "Preset Number",
                        "ui:summaryTitle": "Preset Number",
                        "description": "Preset number, within the range supported by the camera"
                    }
                },
                "required": [
                    "presetNumber"
                ],
                "additionalProperties": false
            },
            "generic": true
        },
        {
            "id": "resetPreset",
            "name": "Reset in-camera Preset",
            "destructive": false,
            "payload": {
                "type": "object",
                "properties": {
                    "presetNumber": {
                        "type": "integer",
                        "ui:title": "Preset Number",
                        "ui:summaryTitle": "Preset Number",
                        "description": "Preset number, within the range supported by the camera"
                    }
                },
                "required": [
                    "presetNumber"
                ],
                "additionalProperties": false
            },
            "generic": true
        },
        {
            "id": "setFocusSpeed",
            "name": "Set Focus adjustment speed (virtual focus ring velocity)",
            "destructive": false,
            "payload": {
                "type": "object",
                "properties": {
                    "focusSpeed": {
                        "type": "number",
                        "ui:title": "Focus Speed",
                        "min": -1,
                        "max": 1,
                        "default": 0,
                        "description": "Focus Speed; Range: [-1.0, 1.0]; -1.0 = fastest NEAR, 0.0 = STOP, 1.0 = fastest FAR (each protocol might internally support a different range, which the value will be mapped into)"
                    }
                },
                "required": [
                    "focusSpeed"
                ],
                "additionalProperties": false
            },
            "generic": true
        },
        {
            "id": "setFocusMode",
            "name": "Set Focus Mode",
            "destructive": false,
            "payload": {
                "type": "object",
                "properties": {
                    "mode": {
                        "type": "string",
                        "title": "FocusMode",
                        "ui:title": "Mode",
                        "ui:summaryTitle": "Mode",
                        "default": "",
                        "enum": [
                            "auto",
                            "manual"
                        ],
                        "tsEnumNames": [
                            "AUTO",
                            "MANUAL"
                        ]
                    }
                },
                "required": [
                    "mode"
                ],
                "additionalProperties": false
            },
            "generic": true
        },
        {
            "id": "triggerOnePushFocus",
            "name": "Trigger One Push AF",
            "destructive": false,
            "generic": true
        },
        {
            "id": "getFocusPosition",
            "name": "Get absolute Focus position",
            "result": {
                "type": "object",
                "properties": {
                    "zoomPosition": {
                        "type": "number",
                        "ui:title": "Focus Position",
                        "min": 0,
                        "max": 1,
                        "description": "Zoom Position; Range: [0.0, 1.0]; 0.0 = furthest NEAR, 1.0 = furthest FAR (each protocol might internally support a different range, which the value will be mapped from)"
                    }
                },
                "required": [
                    "zoomPosition"
                ],
                "additionalProperties": false
            },
            "destructive": false,
            "generic": true
        },
        {
            "id": "getFocusMode",
            "name": "Get Focus mode",
            "result": {
                "type": "object",
                "properties": {
                    "mode": {
                        "type": "string",
                        "title": "FocusModeResult",
                        "tsType": "FocusMode",
                        "ui:title": "Mode",
                        "ui:summaryTitle": "Mode",
                        "default": "",
                        "enum": [
                            "auto",
                            "manual"
                        ],
                        "tsEnumNames": [
                            "AUTO",
                            "MANUAL"
                        ]
                    }
                },
                "required": [
                    "mode"
                ],
                "additionalProperties": false
            },
            "destructive": false,
            "generic": true
        }
    ]
}
