File schema

Below is a JSON Schema document describing the format of Engage files. A copy of this document can also be obtained by running engage schema.

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "File",
  "description": "An Engage file",
  "type": "object",
  "required": [
    "interpreter"
  ],
  "properties": {
    "interpreter": {
      "description": "The interpreter that will be used to run task scripts\n\nThe string given to `script` will be appended to the list given to this field, and the resulting list will be executed.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "task": {
      "description": "The list of tasks to run",
      "default": [],
      "type": "array",
      "items": {
        "$ref": "#/definitions/Task"
      }
    },
    "group": {
      "description": "Configuration of task groups",
      "default": [],
      "type": "array",
      "items": {
        "$ref": "#/definitions/Group"
      }
    }
  },
  "definitions": {
    "Task": {
      "description": "A task within an Engage file",
      "type": "object",
      "required": [
        "group",
        "name",
        "script"
      ],
      "properties": {
        "name": {
          "description": "Name of this task",
          "type": "string"
        },
        "group": {
          "description": "The group that this task belongs to",
          "type": "string"
        },
        "script": {
          "description": "The script to run\n\nThe string given to this field will be appended to the list given to the `interpreter` field, and the resulting list will be executed.",
          "type": "string"
        },
        "ignore": {
          "description": "Any extra status codes to treat as successful",
          "default": [],
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int32"
          }
        },
        "depends": {
          "description": "List of tasks that need to complete before this one can start\n\nThe values given to this field must be a value of the `name` field of other tasks within the same group as this task.",
          "default": [],
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "Group": {
      "description": "A group within an Engage file",
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "description": "Name of this group",
          "type": "string"
        },
        "depends": {
          "description": "List of groups that need to complete before this one can start\n\nThe values given to this field must be a value of the `group` field of a task or the `name` field of another group.",
          "default": [],
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    }
  }
}