Map<String, dynamic> toJson() { return { 'name': name, 'type': type.toJson(), 'description': description, 'isOptional': isOptional, if (constraints != null) 'constraints': constraints, }; }