{ "description": "Schema for IOx application descriptor - version 2.0", "additionalProperties": false, "definitions": { "descriptorschema_2_0.Devices": { "additionalProperties": false, "required": [ "type", "label" ], "type": "object", "properties": { "usage": { "type": "string" }, "device-id": { "type": "string" }, "type": { "type": "string" }, "label": { "type": "string" } } }, "descriptorschema_2_0.ResourcesRecommendations": { "additionalProperties": false, "required": [ "profile", "label", "description" ], "type": "object", "properties": { "profile": { "type": "string" }, "description": { "type": "string" }, "label": { "type": "string" } } }, "descriptorschema_2_0.RuntimeOptions": { "additionalProperties": true, "required": [ "classpath" ], "type": "object", "properties": { "classpath": { "type": "string" } } }, "descriptorschema_2_0.StartupLXC": { "additionalProperties": false, "required": [ "rootfs", "target" ], "type": "object", "properties": { "target": { "pattern": "^[/a-zA-Z]([^/]+(/)?)+$", "type": "string" }, "rootfs": { "type": "string" } } }, "descriptorschema_2_0.AppPaas": { "additionalProperties": false, "required": [ "type", "startup" ], "type": "object", "properties": { "stop": { "$ref": "#/definitions/descriptorschema_2_0.Stop" }, "startup": { "oneOf": [ { "$ref": "#/definitions/descriptorschema_2_0.StartupGenericLinux" }, { "$ref": "#/definitions/descriptorschema_2_0.StartupNotGenericLinux" } ] }, "depends-on": { "anyOf": [ { "required": [ "cartridges" ], "type": "object", "properties": { "cartridges": { "items": { "$ref": "#/definitions/descriptorschema_2_0.CartridgeDependsOn" }, "type": "array" } } }, { "required": [ "services" ], "type": "object", "properties": { "services": { "items": { "$ref": "#/definitions/descriptorschema_2_0.ServiceDependsOn" }, "type": "array" } } } ] }, "cpuarch": { "type": "string" }, "env": { "additionalProperties": true, "type": "object", "properties": {} }, "type": { "enum": [ "paas" ], "type": "string" }, "resources": { "$ref": "#/definitions/descriptorschema_2_0.Resources" } } }, "descriptorschema_2_0.ServicesProvides": { "additionalProperties": false, "required": [ "provides" ], "type": "object", "properties": { "provides": { "items": { "$ref": "#/definitions/descriptorschema_2_0.Service" }, "type": "array" } } }, "descriptorschema_2_0.AppInfo": { "additionalProperties": false, "required": [ "name", "version" ], "type": "object", "properties": { "author-name": { "type": "string" }, "version": { "type": "string" }, "author-link": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" } } }, "descriptorschema_2_0.StartupGenericLinux": { "additionalProperties": false, "required": [ "runtime", "target" ], "type": "object", "properties": { "runtime": { "enum": [ "generic-linux" ], "type": "string" }, "target": { "pattern": "^[a-zA-Z]([^/]+(/)?)+$", "type": "string" } } }, "descriptorschema_2_0.CartridgeDependsOn": { "additionalProperties": false, "required": [ "id", "version" ], "type": "object", "properties": { "version": { "type": "number" }, "id": { "type": "string" } } }, "descriptorschema_2_0.Network": { "additionalProperties": false, "required": [ "interface-name" ], "type": "object", "properties": { "interface-name": { "type": "string" }, "ports": { "anyOf": [ { "required": [ "tcp" ], "type": "object", "properties": { "tcp": { "items": [ { "type": "integer" } ], "type": "array" } } }, { "required": [ "udp" ], "type": "object", "properties": { "udp": { "items": [ { "type": "integer" } ], "type": "array" } } } ] } } }, "descriptorschema_2_0.AppVM": { "additionalProperties": false, "required": [ "cpuarch", "type", "startup" ], "type": "object", "properties": { "startup": { "$ref": "#/definitions/descriptorschema_2_0.StartupVM" }, "depends-on": { "oneOf": [ { "required": [ "services" ], "type": "object", "properties": { "services": { "items": { "$ref": "#/definitions/descriptorschema_2_0.ServiceDependsOn" }, "type": "array" } } } ] }, "cpuarch": { "type": "string" }, "env": { "additionalProperties": true, "type": "object", "properties": {} }, "type": { "enum": [ "vm" ], "type": "string" }, "resources": { "$ref": "#/definitions/descriptorschema_2_0.Resources" } } }, "descriptorschema_2_0.StartupNotGenericLinux": { "additionalProperties": false, "required": [ "target", "runtime-version" ], "type": "object", "properties": { "runtime-version": { "oneOf": [ { "type": "number" }, { "type": "string" } ] }, "runtime-options": { "$ref": "#/definitions/descriptorschema_2_0.RuntimeOptions" }, "runtime": { "not": { "enum": [ "generic-linux" ], "type": "string" } }, "target": { "pattern": "^[a-zA-Z]([^/]+(/)?)+$", "type": "string" } } }, "descriptorschema_2_0.ServiceDependsOn": { "additionalProperties": false, "required": [ "id" ], "type": "object", "properties": { "required": { "type": "boolean" }, "max-api-version": { "type": "number" }, "id": { "type": "string" }, "min-api-version": { "type": "number" } } }, "descriptorschema_2_0.Service": { "additionalProperties": false, "required": [ "id", "api-version", "version" ], "type": "object", "properties": { "api-version": { "type": "number" }, "version": { "type": "string" }, "id": { "type": "string" }, "description": { "type": "string" } } }, "descriptorschema_2_0.StartupVM": { "additionalProperties": false, "required": [ "rootfs", "kernel" ], "type": "object", "properties": { "kernel": { "type": "string" }, "rootfs": { "type": "string" } } }, "descriptorschema_2_0.Stop": { "additionalProperties": false, "required": [ "target" ], "type": "object", "properties": { "target": { "pattern": "^[a-zA-Z]([^/]+(/)?)+$", "type": "string" } } }, "descriptorschema_2_0.AppLXC": { "additionalProperties": false, "required": [ "cpuarch", "type", "kernel-version", "startup" ], "type": "object", "properties": { "kernel-version": { "type": "string" }, "startup": { "$ref": "#/definitions/descriptorschema_2_0.StartupLXC" }, "depends-on": { "oneOf": [ { "required": [ "services" ], "type": "object", "properties": { "services": { "items": { "$ref": "#/definitions/descriptorschema_2_0.ServiceDependsOn" }, "type": "array" } } } ] }, "cpuarch": { "type": "string" }, "env": { "additionalProperties": true, "type": "object", "properties": {} }, "type": { "enum": [ "lxc" ], "type": "string" }, "resources": { "$ref": "#/definitions/descriptorschema_2_0.Resources" } } }, "descriptorschema_2_0.Resources": { "additionalProperties": false, "required": [ "profile" ], "type": "object", "properties": { "profile": { "type": "string" }, "network": { "items": { "$ref": "#/definitions/descriptorschema_2_0.Network" }, "type": "array" }, "memory": { "oneOf": [ { "type": "string" }, { "type": "integer" } ] }, "devices": { "items": { "$ref": "#/definitions/descriptorschema_2_0.Devices" }, "type": "array" }, "recommendations": { "items": { "$ref": "#/definitions/descriptorschema_2_0.ResourcesRecommendations" }, "type": "array" }, "disk": { "oneOf": [ { "type": "string" }, { "type": "integer" } ] }, "cpu": { "oneOf": [ { "type": "string" }, { "type": "integer" } ] } } } }, "$schema": "http://json-schema.org/draft-04/schema#", "required": [ "descriptor-schema-version", "info", "app" ], "type": "object", "properties": { "info": { "$ref": "#/definitions/descriptorschema_2_0.AppInfo" }, "service-bundle": { "$ref": "#/definitions/descriptorschema_2_0.ServicesProvides" }, "app": { "oneOf": [ { "$ref": "#/definitions/descriptorschema_2_0.AppPaas" }, { "$ref": "#/definitions/descriptorschema_2_0.AppLXC" }, { "$ref": "#/definitions/descriptorschema_2_0.AppVM" } ] }, "descriptor-schema-version": { "oneOf": [ { "type": "string" }, { "type": "number" } ] } } }