{
    "$schema": "https://apidocs.iqrf.org/iqrf-gateway-daemon/com.iqrftech.self-desc/schema/jsonschema/1-1-0#",
    "self": {
        "vendor": "com.iqrftech.self-desc",
        "name": "mngScheduler_AddTask-request",
        "format": "jsonschema",
        "version": "1-0-0"
    },
    "type": "object",
    "properties": {
        "mType": {
            "type": "string",
            "description": "Scheduler management - Add Task request.",
            "enum": [
                "mngScheduler_AddTask"
            ]
        },
        "data": {
            "type": "object",
            "properties": {
                "msgId": {
                    "type": "string",
                    "description": "Message identification for binding request with response."
                },
                "req": {
                    "type": "object",
                    "properties": {
                        "clientId": {
                            "type": "string",
                            "description": "Client identifier."
                        },
                        "task": {
							"oneOf": [
								{
								  "type": "object",
								  "properties": {}
								},
								{
								  "type": "array",
								  "items": {
									"type": "object",
									"properties": {}
								  }
								}
							],
                            "description": "Scheduled task or array of tasks."
                        },
                        "timeSpec": {
                            "type": "object",
                            "properties": {
                                "cronTime": {
                                    "type": "array",
                                    "minItems": 7,
                                    "maxItems": 7,
                                    "items": {
                                        "type": "string"
                                    },
                                    "description": "7 items of cron-like syntax. All required."
                                },
                                "periodic": {
                                    "type": "boolean",
                                    "description": "Periodic timer with defined period."
                                },
                                "period": {
                                    "type": "integer",
                                    "description": "Period in seconds."
                                },
                                "exactTime": {
                                    "type": "boolean",
                                    "description": "One shot timer starting now or delayed ast startTime."
                                },
                                "startTime": {
                                    "type": "string",
                                    "description": "Delayed start in seconds in timestamp format '2018-01-03T16:00:09.859515'"
                                }
                            },
                            "required": [
                                "cronTime",
                                "periodic",
                                "period",
                                "exactTime",
                                "startTime"
                            ]
                        },
                        "persist": { 
                            "type": "boolean",
                            "description": "Task will stay after daemon restart."
                        }
                    },
                    "required": [
                        "clientId",
                        "task",
                        "timeSpec"
                    ]
                },
                "returnVerbose": {
                    "type": "boolean",
                    "description": "Flag that includes additional parameters in the response."
                }
            },
            "required": [
                "msgId",
                "req"
            ]
        }
    },
    "required": [
        "mType",
        "data"
    ]
}
