{
  "type": "object",
  "properties": {
    "manifest": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "port": {
          "type": "string",
          "pattern": "[1-9][0-9]*"
        },
        "machine": {
          "type": "string",
          "enum": [ "small" ]
        },
        "containers": {
          "type": "array",
          "minItems": 1,
          "items": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "image": {
                "type": "string"
              },
              "command": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "workdir": {
                "type": "string"
              },
              "environment": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "required": [ "id", "image" ],
            "additionalProperties": false
          }
        },
        "vars": {
          "type": "object",
          "additionalProperties": {
            "type": "object",
            "properties": {
              "encoding": {
                "type": "string",
                "enum": [ "private:sha256" ]
              },
              "value": {
                "type": "string"
              }
            },
            "required": [ "value" ],
            "additionalProperties": false
          }
        },
        "debug": {
          "type": "boolean"
        }
      },
      "required": [ "name", "version", "containers" ],
      "additionalProperties": false
    },
    "private": {
      "type": "object",
      "properties": {
        "vars": {
          "type": "object",
          "additionalProperties": {
            "type": "object",
            "properties": {
              "nonce": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            },
            "required": [ "nonce", "value" ],
            "additionalProperties": false
          }
        }
      },
      "additionalProperties": false
    }
  },
  "required": [ "manifest" ],
  "additionalProperties": false
}
