blob: 91687148212556c48ab78c277185aa6c325b8ecd [file] [log] [blame]
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"localReference": {
"type": "string",
"pattern": "^@"
},
"dcosReleaseVersion": {
"type": "string",
"pattern": "^(?:0|[1-9][0-9]*)(?:\\.(?:0|[1-9][0-9]*))*$",
"description": "A string representation of a DC/OS Release Version"
},
"url": {
"type": "string",
"pattern": "."
},
"base64String": {
"type": "string",
"pattern": "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$"
},
"cliInfo": {
"additionalProperties": false,
"properties": {
"contentHash": {
"items": {
"$ref": "#/definitions/hash"
},
"minItems": 1,
"type": "array"
},
"kind": {
"enum": [
"executable",
"zip"
],
"type": "string"
},
"url": {
"$ref": "#/definitions/url"
}
},
"required": [
"url",
"kind",
"contentHash"
],
"type": "object"
},
"hash": {
"additionalProperties": false,
"properties": {
"algo": {
"enum": [
"sha256"
],
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"algo",
"value"
],
"type": "object"
},
"marathon": {
"type": "object",
"properties": {
"v2AppMustacheTemplate": {
"oneOf": [
{"$ref": "#/definitions/base64String"},
{"$ref": "#/definitions/localReference"}
]
}
},
"required": [ "v2AppMustacheTemplate" ],
"additionalProperties": false
},
"v30resource": {
"additionalProperties": false,
"type": "object",
"properties": {
"assets": {
"type": "object",
"properties": {
"uris": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"container": {
"type": "object",
"properties": {
"docker": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"cli": {
"additionalProperties": false,
"properties": {
"binaries": {
"additionalProperties": false,
"minProperties": 1,
"properties": {
"darwin": {
"additionalProperties": false,
"properties": {
"x86-64": {
"$ref": "#/definitions/cliInfo"
}
},
"required": [
"x86-64"
],
"type": "object"
},
"linux": {
"additionalProperties": false,
"properties": {
"x86-64": {
"$ref": "#/definitions/cliInfo"
}
},
"required": [
"x86-64"
],
"type": "object"
},
"windows": {
"additionalProperties": false,
"properties": {
"x86-64": {
"$ref": "#/definitions/cliInfo"
}
},
"required": [
"x86-64"
],
"type": "object"
}
},
"type": "object"
}
},
"required": [
"binaries"
],
"type": "object"
},
"images": {
"type": "object",
"properties": {
"icon-small": {
"type": "string",
"description": "PNG icon URL, preferably 48 by 48 pixels."
},
"icon-medium": {
"type": "string",
"description": "PNG icon URL, preferably 128 by 128 pixels."
},
"icon-large": {
"type": "string",
"description": "PNG icon URL, preferably 256 by 256 pixels."
},
"screenshots": {
"type": "array",
"items": {
"type": "string",
"description": "PNG screen URL, preferably 1024 by 1024 pixels."
}
}
},
"additionalProperties": false
}
}
},
"config": {
"$ref": "http://json-schema.org/draft-04/schema#"
},
"command": {
"additionalProperties": false,
"required": ["pip"],
"properties": {
"pip": {
"type": "array",
"items": {
"type": "string"
},
"title": "Embedded Requirements File",
"description": "[Deprecated v3.x] An array of strings representing of the requirements file to use for installing the subcommand for Pip. Each item is interpreted as a line in the requirements file."
}
}
},
"v30BuildDef": {
"properties": {
"packagingVersion": {
"type": "string",
"enum": ["3.0"]
},
"name": {
"type": "string"
},
"version": {
"type": "string",
"pattern": "^[-a-zA-Z0-9.]+$"
},
"scm": {
"type": "string"
},
"maintainer": {
"type": "string"
},
"website": {
"type": "string"
},
"description": {
"type": "string"
},
"framework": {
"type": "boolean",
"default": false,
"description": "True if this package installs a new Mesos framework."
},
"preInstallNotes": {
"type": "string",
"description": "Pre installation notes that would be useful to the user of this package."
},
"postInstallNotes": {
"type": "string",
"description": "Post installation notes that would be useful to the user of this package."
},
"postUninstallNotes": {
"type": "string",
"description": "Post uninstallation notes that would be useful to the user of this package."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[^\\s]+$"
}
},
"licenses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the license. For example one of [Apache License Version 2.0 | MIT License | BSD License | Proprietary]"
},
"url": {
"$ref": "#/definitions/url",
"description": "The URL where the license can be accessed"
}
},
"additionalProperties": false,
"required": [
"name",
"url"
]
}
},
"minDcosReleaseVersion": {
"$ref": "#/definitions/dcosReleaseVersion",
"description": "The minimum DC/OS Release Version the package can run on."
},
"marathon": {
"$ref": "#/definitions/marathon"
},
"resource": {
"oneOf": [
{"$ref": "#/definitions/v30resource"},
{"$ref": "#/definitions/localReference"}
]
},
"config": {
"oneOf": [
{"$ref": "#/definitions/config"},
{"$ref": "#/definitions/localReference"}
]
},
"command": {
"$ref": "#/definitions/command"
}
},
"required": [
"packagingVersion",
"name",
"version",
"maintainer",
"description",
"tags"
],
"additionalProperties": false
},
"v40BuildDef": {
"properties": {
"packagingVersion": {
"type": "string",
"enum": ["4.0"]
},
"name": {
"type": "string"
},
"version": {
"type": "string",
"pattern": "^[-a-zA-Z0-9.]+$"
},
"scm": {
"type": "string"
},
"maintainer": {
"type": "string"
},
"website": {
"type": "string"
},
"description": {
"type": "string"
},
"framework": {
"type": "boolean",
"default": false,
"description": "True if this package installs a new Mesos framework."
},
"upgradesFrom": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of versions that can upgrade to this package. If the property is a list containing the string '*', any version can upgrade to this package. If the property is not set or the empty list, no version can upgrade to this package."
},
"downgradesTo": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of versions that this package can downgrade to. If the property is a list containing the string '*', this package can downgrade to any version. If the property is not set or the empty list, this package cannot downgrade."
},
"preInstallNotes": {
"type": "string",
"description": "Pre installation notes that would be useful to the user of this package."
},
"postInstallNotes": {
"type": "string",
"description": "Post installation notes that would be useful to the user of this package."
},
"postUninstallNotes": {
"type": "string",
"description": "Post uninstallation notes that would be useful to the user of this package."
},
"tags": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[^\\s]+$"
}
},
"licenses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the license. For example one of [Apache License Version 2.0 | MIT License | BSD License | Proprietary]"
},
"url": {
"$ref": "#/definitions/url",
"description": "The URL where the license can be accessed"
}
},
"additionalProperties": false,
"required": [
"name",
"url"
]
}
},
"minDcosReleaseVersion": {
"$ref": "#/definitions/dcosReleaseVersion",
"description": "The minimum DC/OS Release Version the package can run on."
},
"marathon": {
"$ref": "#/definitions/marathon"
},
"resource": {
"oneOf": [
{"$ref": "#/definitions/v30resource"},
{"$ref": "#/definitions/localReference"}
]
},
"config": {
"oneOf": [
{"$ref": "#/definitions/config"},
{"$ref": "#/definitions/localReference"}
]
}
},
"required": [
"packagingVersion",
"name",
"version",
"maintainer",
"description",
"tags"
],
"additionalProperties": false
}
},
"type": "object",
"oneOf": [
{ "$ref": "#/definitions/v30BuildDef" },
{ "$ref": "#/definitions/v40BuildDef" }
]
}