{
  "id": "file:task",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Task",
  "description": "Task schema for bolt-server",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Task name"
    },
    "metadata": {
      "type": "object",
      "description": "The metadata object is optional, and contains metadata about the task being run",
      "properties": {
        "description": {
          "type": "string",
          "description": "The task description from it's metadata"
        },
        "parameters": {
          "type": "object",
          "description": "Object whose keys are parameter names, and values are objects",
          "properties": {
            "description": {
              "type": "string",
              "description": "Parameter description"
            },
            "type": {
              "type": "string",
              "description": "The type the parameter should accept"
            },
            "sensitive": {
              "description": "Whether the task runner should treat the parameter value as sensitive",
              "type": "boolean"
            }
          }
        },
        "input_method": {
          "type": "string",
          "enum": ["stdin", "environment", "powershell"],
          "description": "What input method should be used to pass params to the task"
        }
      }
    },
    "files": {
      "type": "array",
      "description": "Description of task files",
      "items": {
        "type": "object",
        "properties": {
          "uri": {
            "type": "object",
            "description": "Where is the file"
          },
          "sha256": {
            "type": "string",
            "description": "checksum of file"
          },
          "filename": {
            "type": "string",
            "description": "Name of file"
          },
          "size": {
            "type": "number",
            "description": "Size of file"
          }
        }
      },
      "required": ["filename", "uri", "sha256"]
    }
  },
  "required": ["name", "files"],
  "additionalProperties": false
}