{ "type": "object", "additionalProperties": false, "required": ["schema_version", "coordinate_space", "parts", "notes"], "properties": { "schema_version": {"type": "integer", "enum": [2]}, "coordinate_space": {"type": "string", "enum": ["normalized_xy_top_left"]}, "notes": {"type": "array", "items": {"type": "string"}}, "parts": { "type": "array", "minItems": 1, "maxItems": 64, "items": { "type": "object", "additionalProperties": false, "required": ["id", "semantic", "parent", "rig_role", "bind_to", "completion", "visibility", "bbox_norm_xyxy", "pivot_norm", "positive_points_norm", "negative_points_norm", "occluded_by", "needs_completion", "confidence"], "properties": { "id": {"type": "string", "pattern": "^[a-z][a-z0-9_-]*$", "maxLength": 64}, "semantic": {"type": "string", "minLength": 1}, "parent": {"type": ["string", "null"]}, "rig_role": {"type": "string", "enum": ["bone_part", "attachment", "facial_feature"]}, "bind_to": {"type": ["string", "null"], "description": "bone_part: null; attachment/facial_feature: existing bone_part ID or null for root"}, "completion": { "type": "object", "additionalProperties": false, "required": ["occlusion_fill", "joint_extension_parent", "joint_extension_child"], "properties": { "occlusion_fill": {"type": "boolean"}, "joint_extension_parent": {"type": "boolean"}, "joint_extension_child": {"type": "boolean"} } }, "visibility": {"type": "string", "enum": ["visible", "partial", "hidden"]}, "bbox_norm_xyxy": {"type": ["array", "null"], "minItems": 4, "maxItems": 4, "items": {"type": "number", "minimum": 0, "maximum": 1}}, "pivot_norm": {"type": "array", "minItems": 2, "maxItems": 2, "items": {"type": "number", "minimum": 0, "maximum": 1}}, "positive_points_norm": {"type": "array", "maxItems": 32, "items": {"type": "array", "minItems": 2, "maxItems": 2, "items": {"type": "number", "minimum": 0, "maximum": 1}}}, "negative_points_norm": {"type": "array", "maxItems": 32, "items": {"type": "array", "minItems": 2, "maxItems": 2, "items": {"type": "number", "minimum": 0, "maximum": 1}}}, "occluded_by": {"type": "array", "items": {"type": "string"}}, "needs_completion": {"type": "boolean"}, "confidence": {"type": "number", "minimum": 0, "maximum": 1} } } } } }