diff options
-rw-r--r-- | schema/definitions-schema.json | 68 | ||||
-rw-r--r-- | schema/json-schema.json | 150 |
2 files changed, 218 insertions, 0 deletions
diff --git a/schema/definitions-schema.json b/schema/definitions-schema.json new file mode 100644 index 00000000..6afab78a --- /dev/null +++ b/schema/definitions-schema.json @@ -0,0 +1,68 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "id": "http://wiki.baserock.org/schemas/definitions#", + + "definitions": { + "definition": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "morph": { "type": "string" }, + "repo": { "type": "string" }, + "ref": { "type": "string" }, + "unpetrify-ref": { "anyOf": [ + { "type": "string" }, + { "type": "number" } + ] }, + "description": { "oneOf": [ + { "type": "string" }, + { "type": "array", "items": { "type": "string" } } + ] }, + "kind": { + "type": "string", + "enum": ["chunk", "stratum", "system", "cluster"] + }, + "build-depends": { + "type": "array", + "items": { "anyOf": [ + { "$ref": "#/definitions/definition" }, + "morph": "string" + ] } + }, + "chunks": { + "type": "array", + "items": { "$ref": "#/definitions/definition" } + }, + "strata": { + "type": "array", + "items": { "anyOf": [ + { "$ref": "#/definitions/definition" }, + "morph": "string" + ] } + }, + "build-system": { + "type": "string", + "enum": [ + "python-distutils", + "autotools", + "cmake", + "manual", + "cpan" + ] + }, + "product": { + "artifact": { "type": "string" }, + "include": { "type": "array", "items": "string" } + }, + "dependencies": { + "repo": ["ref", "unpetrify-ref"], + "ref": ["repo", "unpetrify-ref"], + "unpetrify-ref": ["repo", "ref"] + } + } + } + }, + + "type": "object", + "$ref": "#/definitions/definition" +}
\ No newline at end of file diff --git a/schema/json-schema.json b/schema/json-schema.json new file mode 100644 index 00000000..85eb502a --- /dev/null +++ b/schema/json-schema.json @@ -0,0 +1,150 @@ +{ + "id": "http://json-schema.org/draft-04/schema#", + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "Core schema meta-schema", + "definitions": { + "schemaArray": { + "type": "array", + "minItems": 1, + "items": { "$ref": "#" } + }, + "positiveInteger": { + "type": "integer", + "minimum": 0 + }, + "positiveIntegerDefault0": { + "allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ] + }, + "simpleTypes": { + "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ] + }, + "stringArray": { + "type": "array", + "items": { "type": "string" }, + "minItems": 1, + "uniqueItems": true + } + }, + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uri" + }, + "$schema": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "default": {}, + "multipleOf": { + "type": "number", + "minimum": 0, + "exclusiveMinimum": true + }, + "maximum": { + "type": "number" + }, + "exclusiveMaximum": { + "type": "boolean", + "default": false + }, + "minimum": { + "type": "number" + }, + "exclusiveMinimum": { + "type": "boolean", + "default": false + }, + "maxLength": { "$ref": "#/definitions/positiveInteger" }, + "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" }, + "pattern": { + "type": "string", + "format": "regex" + }, + "additionalItems": { + "anyOf": [ + { "type": "boolean" }, + { "$ref": "#" } + ], + "default": {} + }, + "items": { + "anyOf": [ + { "$ref": "#" }, + { "$ref": "#/definitions/schemaArray" } + ], + "default": {} + }, + "maxItems": { "$ref": "#/definitions/positiveInteger" }, + "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" }, + "uniqueItems": { + "type": "boolean", + "default": false + }, + "maxProperties": { "$ref": "#/definitions/positiveInteger" }, + "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" }, + "required": { "$ref": "#/definitions/stringArray" }, + "additionalProperties": { + "anyOf": [ + { "type": "boolean" }, + { "$ref": "#" } + ], + "default": {} + }, + "definitions": { + "type": "object", + "additionalProperties": { "$ref": "#" }, + "default": {} + }, + "properties": { + "type": "object", + "additionalProperties": { "$ref": "#" }, + "default": {} + }, + "patternProperties": { + "type": "object", + "additionalProperties": { "$ref": "#" }, + "default": {} + }, + "dependencies": { + "type": "object", + "additionalProperties": { + "anyOf": [ + { "$ref": "#" }, + { "$ref": "#/definitions/stringArray" } + ] + } + }, + "enum": { + "type": "array", + "minItems": 1, + "uniqueItems": true + }, + "type": { + "anyOf": [ + { "$ref": "#/definitions/simpleTypes" }, + { + "type": "array", + "items": { "$ref": "#/definitions/simpleTypes" }, + "minItems": 1, + "uniqueItems": true + } + ] + }, + "allOf": { "$ref": "#/definitions/schemaArray" }, + "anyOf": { "$ref": "#/definitions/schemaArray" }, + "oneOf": { "$ref": "#/definitions/schemaArray" }, + "not": { "$ref": "#" } + }, + "dependencies": { + "exclusiveMaximum": [ "maximum" ], + "exclusiveMinimum": [ "minimum" ] + }, + "default": {} +} |