{
	"$schema": "https://json-schema.org/draft/2020-12/schema",
	"$id": "https://schema.stfform.at/ava.expressions.schema.json",
	"title": "Avatar Expressions",
	"description": "Defines the facial expressions and emotions an avatar can express.",
	"stfImplementations": {
		"blender": {
			"representingType": "STF_Component on bpy.types.Collection",
			"link": "https://codeberg.org/stf_format/stf_blender/src/branch/master/stfblender/stf_resources/ava/ava_expressions.py"
		},
		"unity": {
			"representingType": "Application specific representations",
			"link": "https://codeberg.org/stf_format/stf_unity/src/branch/master/AVA/Runtime/Resources/AVA_Expressions.cs",
			"extra_links": {
				"VRChat Processor": "https://codeberg.org/stf_format/stf_unity/src/branch/master/AVA/AVA_VRChat/Editor/Processors/VRC_AVA_Setup/VRC_AVA_Expressions_Processor.cs",
				"UNIVRM0 Processor": "https://codeberg.org/stf_format/stf_unity/src/branch/master/AVA/AVA_UNIVRM0/Editor/Processors/UNIVRM0_AVA_Expressions_Processor.cs",
				"VRM1 Processor": "https://codeberg.org/stf_format/stf_unity/src/branch/master/AVA/AVA_VRM1/Editor/Processors/VRM1_AVA_Expressions_Processor.cs"
			}
		}
	},
	"allOf": [{ "$ref": "https://schema.stfform.at/stf.schema.json#/$defs/stf_component_resource" }],
	"properties": {
		"type": {
			"const": "ava.expressions"
		},
		"expressions": {
			"type": "object",
			"patternProperties": {
				".+": {
					"type": "object",
					"title": "Expression Mapping",
					"properties": {
						"animation": {
							"$ref": "https://schema.stfform.at/stf.schema.json#resource_ref",
							"description": "Reference to an animation resource."
						},
						"fallback": {
							"$ref": "https://schema.stfform.at/stf.schema.json#resource_ref",
							"description": "Reference to an resource that can be used if animations aren't supported."
						}
					},
					"minProperties": 1
				}
			},
			"description": "Map emotion & face-expression meanings to animations",
			"stfExpand": true
		}
	},
	"required": [
		"type",
		"expressions"
	],
	"additionalProperties": false
}