{
	"$schema": "http://json-schema.org/draft-07/schema#",
	"title": "AppSettings Schema",
	"description": "appsettings.json schema definition.",
	"type": "object",
	"additionalProperties": false,
	"properties": {
		"$schema": {
			"description": "Environment appsettings schema definition.",
			"type": "string"
		},
		"|DEFAULT|": {
			"description": "Default basis environment variables.",
			"title": "AppSettings Default Env",
			"additionalProperties": false,
			"type": "object",
			"default": {},
			"patternProperties": {
				"^.*$": {
					"anyOf": [
						{ "type": "array" },
						{ "type": "object" },
						{ "type": "string" },
						{ "type": "boolean" },
						{ "type": "null" }
					]
				}
			}
		},
		"|MODE|": {
			"description": "Environment variables loaded by mode argument (-m or --mode). Used for execution modes, like 'debug', 'test', 'build', 'packing', or any you need.",
			"title": "AppSettings Modes",
			"additionalProperties": true,
			"type": "object",
			"default": {},
			"properties": {
				"debug": {
					"description": "Variables used for 'debug' local execution.",
					"type": "object",
					"default": {}
				},
				"build": {
					"description": "Variables used for 'build' operation.",
					"type": "object",
					"default": {}
				},
				"test": {
					"description": "Variables used for 'test' execution.",
					"type": "object",
					"default": {}
				}
			}
		},
		"|ENV|": {
			"description": "Environment variables loaded by environment argument (-e or --env). Used for environment selected, like 'dev', 'qa', 'stg', 'prod', or any you need.",
			"title": "AppSettings Env",
			"additionalProperties": true,
			"type": "object",
			"default": {},
			"properties": {
				"dev": {
					"description": "Variables for 'development' environment.",
					"type": "object",
					"default": {}
				},
				"qa": {
					"description": "Variables for 'quality assurance' environment.",
					"type": "object",
					"default": {}
				},
				"stg": {
					"description": "Variables for 'staging' environment.",
					"type": "object",
					"default": {}
				},
				"prod": {
					"description": "Variables for 'production' environment.",
					"type": "object",
					"default": {}
				}
			}
		},
		"|LOCAL|": {
			"description": "Environment variables loaded by environment argument (-e or --env) but locally only. Used for local environment needs",
			"title": "AppSettings Local Env",
			"additionalProperties": true,
			"type": "object",
			"default": {},
			"properties": {
				"dev": {
					"description": "Variables for 'development' environment in local execution.",
					"type": "object",
					"default": {}
				},
				"qa": {
					"description": "Variables for 'quality assurance' environment in local execution.",
					"type": "object",
					"default": {}
				},
				"stg": {
					"description": "Variables for 'staging' environment in local execution.",
					"type": "object",
					"default": {}
				},
				"prod": {
					"description": "Variables for 'production' environment in local execution.",
					"type": "object",
					"default": {}
				}
			}
		}
	}
}
