{
	"$schema": "http://json-schema.org/draft-04/schema#",
	"description": "JSON Schema generated by XMLSpy v2016 rel. 2 (x64) (http://www.altova.com)",
	"type": "object",
	"properties": {
		"Artists": {
			"type": "array",
			"items": { "$ref": "#/definitions/artist" }
		}
	},
	"required": [ "Artists" ],
	"additionalProperties": false,
	"definitions": {
		"artist": {
			"type": "object",
			"properties": {
				"Name": {
					"type": "string",
					"minLength": 1
				},
				"Albums": {
					"title": "Albums",
					"type": "array",
					"items": { "$ref": "#/definitions/album" }
				}
			},
			"required": [ "Name", "Albums" ],
			"additionalProperties": false
		},
		"album": {
			"type": "object",
			"properties": {
				"Name": {
					"type": "string",
					"minLength": 1
				},
				"Genre": {
					"oneOf": [
						{
							"$ref": "#/definitions/genre"
						},
						{
							"type": "array",
							"minItems": 1,
							"uniqueItems": true,
							"items": { "$ref": "#/definitions/genre" }
						}
					]
				},
				"ReleaseDate": {
					"type": "string",
					"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
				},
				"Label": {
					"type": "string"
				},
				"Tracks": {
					"type": "array",
					"minItems": 1,
					"items": { "$ref": "#/definitions/track" }
				}
			},
			"required": [ "Name", "Tracks" ],
			"additionalProperties": false
		},
		"track": {
			"type": "object",
			"properties": {
				"Title": {
					"type": "string",
					"minLength": 1
				},
				"Duration": {
					"type": "string",
					"pattern": "^[0-9]{2}:[0-9]{2}$"
				},
				"Writer": {
					"type": "string",
					"minLength": 1
				}
			},
			"required": [ "Title" ],
			"additionalProperties": false
		},
		"genre": {
			"type": "string",
			"enum": [ "Classic", "Country", "Folk", "Jazz", "Pop", "Pop punk", "Punk", "Punk rock", "Rap", "Rock", "R&B", "Other" ]
		}
	}
}