interop/doc/source/schema/2.0.json

354 lines
9.6 KiB
JSON

{
"$schema": "http://json-schema.org/draft-06/schema#",
"id": "http://git.openstack.org/cgit/openstack/interop/doc/source/schema/2.0.json",
"type": "object",
"properties": {
"metadata": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"schema": {
"type": "string"
},
"reference": {
"type": "string"
},
"source": {
"type": "string"
},
"scoring": {
"type": "object",
"properties": {
"cutoff_score": {
"type": "integer"
},
"criteria": {
"type": "object",
"patternProperties": {
"^[A-Za-z0-9_-]+": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"weight": {
"type": "integer"
}
},
"required": [
"name",
"description",
"weight"
]
}
}
}
}
},
"os_trademark_approval": {
"type": "object",
"properties": {
"target_approval": {
"type": "string",
"pattern": "\\d\\d\\d\\d.\\d\\d"
},
"replaces": {
"type": "string",
"pattern": "\\d\\d\\d\\d.\\d\\d"
},
"releases": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
},
"uniqueItems": true
},
"status": {
"enum": ["draft", "advisory", "approved", "superseded"]
}
},
"required": [
"target_approval",
"releases",
"status"
],
"additionalProperties": false
}
},
"required": [
"id",
"schema",
"reference",
"source"
],
"additionalProperties": true
},
"platforms": {
"type": "object",
"patternProperties": {
"^\\w+$": {
"type": "object",
"additionalProperties": false,
"required": [ "components" ],
"properties": {
"description": { "type": "string" },
"components": {
"$ref": "#/definitions/component_reference",
"type": "array",
"items": {
"type": "object",
"required": ["name"],
"additionalProperties": false,
"properties": {
"source": {
"type": "string"
},
"name": {
"type": "string"
}
}
}
}
}
}
}
},
"add-ons": {
"type": "object",
"patternProperties": {
"^\\w+$": {
"type": "object",
"additionalProperties": false,
"properties": {
"description": { "type": "string" },
"components": {
"$ref": "#/definitions/component_reference",
"type": "array",
"items": {
"type": "object",
"required": ["name"],
"additionalProperties": false,
"properties": {
"source": {
"type": "string"
},
"name": {
"type": "string"
}
}
}
},
"required_platform_components": {
"$ref": "#/definitions/component_reference",
"type": "array",
"items": {
"type": "object",
"required": ["name"],
"additionalProperties": false,
"properties": {
"source": {
"type": "string"
},
"name": {
"type": "string"
}
}
}
},
"optional_platform_components": {
"$ref": "#/definitions/component_reference",
"type": "array",
"items": {
"type": "object",
"required": ["name"],
"additionalProperties": false,
"properties": {
"source": {
"type": "string"
},
"name": {
"type": "string"
}
}
}
}
}
}
}
},
"components": {
"type": "object",
"patternProperties": {
"^\\w+$": {
"type": "object",
"patternProperties": {
"capabilities|designated_sections": {
"type": "object",
"additionalProperties": false,
"patternProperties": {
"required|advisory|deprecated|removed": {
"type": "array",
"items": { "type": "string" }
}
}
}
}
}
}
},
"capabilities": {
"type": "object",
"patternProperties": {
"^\\w+$": {
"type": "object",
"properties": {
"achievements": {
"type": "array",
"items": { "type": "string" },
"uniqueItems": true
},
"admin": { "type": "boolean" },
"required_since": {
"type": "string",
"pattern": "\\d\\d\\d\\d.\\d\\d"
},
"description": { "type": "string" },
"tests": {
"type": "object",
"patternProperties": {
"^\\w+$": {
"type": "object",
"required": [ "idempotent_id" ],
"properties": {
"idempotent_id": { "type": "string" },
"aliases": {
"type": "array",
"items": { "type": "string" },
"minItems": 1,
"uniqueItems": true
},
"flag": {
"type": "object",
"required": [ "reason", "action", "date" ],
"properties": {
"reason": {
"type": "string",
"pattern": "^D\\d{3} \\w+"
},
"action": {
"type": "string"
},
"date": {
"type": "string",
"pattern": "\\d{4}-\\d{2}-\\d{2}"
}
}
}
}
}
}
},
"project": {
"type": "string"
}
},
"required": [
"achievements",
"admin",
"description",
"project",
"tests"
],
"additionalProperties": false
}
}
},
"designated_sections": {
"type": "object",
"patternProperties": {
"^\\w+$": {
"type": "object",
"patternProperties": {
"required|advisory|deprecated|removed|informational": {
"type": "object",
"required": [ "guidance", "sections"],
"properties": {
"guidance": {
"type": "string"
},
"comment": {
"type": "string"
},
"sections": {
"type": "object",
"patternProperties": {
"^\\w+$": {
"type": "object",
"required": ["description", "designated"],
"properties": {
"description": {
"type": "string"
},
"designated": {
"type": "boolean"
},
"comment": {
"type": "string"
}
}
}
}
}
}
}
}
}
}
},
"test_repositories": {
"type": "object",
"patternProperties": {
"^\\w+$": {
"type": "object",
"additionalProperties": false,
"required": [ "repository" ],
"properties": {
"repository": { "type": "string" },
"reference": { "type": "string" },
"description": { "type": "string" }
}
}
}
}
},
"required": [
"metadata",
"components",
"capabilities",
"designated_sections",
"test_repositories"
],
"additionalProperties": false,
"definitions": {
"component_reference": {
"type": "array",
"items": {
"type": "object",
"required": [ "name" ],
"additionalProperties": false,
"properties": {
"name": { "type": "string" },
"source": { "type": "string"
}
}
}
}
}
}