weaviate/weaviate · error

invalid object property '%s' on class '%s': %w

Error message

invalid object property '%s' on class '%s': %w

What it means

Wrapper adding property/class context around a failure to validate an object (dataType 'object') nested property. The nested map failed one of its inner property validations (unknown key, wrong type, nested error); the real cause is the wrapped error from objectVal.

Source

Thrown at usecases/objects/validation/properties_validation.go:176

	for _, nestedProperty := range nestedProperties {
		nestedPropertiesMap[nestedProperty.Name] = nestedProperty
	}
	return nestedPropertiesMap
}

// TODO nested
// refactor/simplify + improve recurring error msgs on nested properties
func (v *Validator) extractAndValidateNestedProperty(ctx context.Context, propertyName string,
	val interface{}, className string, dataType *schema.DataType, nestedProperties []*models.NestedProperty,
) (interface{}, error) {
	var data interface{}
	var err error

	switch *dataType {
	case schema.DataTypeObject:
		data, err = objectVal(ctx, v, val, propertyName, className, nestedPropertiesToMap(nestedProperties))
		if err != nil {
			return nil, fmt.Errorf("invalid object property '%s' on class '%s': %w", propertyName, className, err)
		}
	case schema.DataTypeObjectArray:
		data, err = objectArrayVal(ctx, v, val, propertyName, className, nestedPropertiesToMap(nestedProperties))
		if err != nil {
			return nil, fmt.Errorf("invalid object[] property '%s' on class '%s': %w", propertyName, className, err)
		}
	default:
		return nil, fmt.Errorf("unrecognized data type '%s'", *dataType)
	}

	return data, nil
}

func objectVal(ctx context.Context, v *Validator, val interface{}, propertyPrefix string,
	className string, nestedPropertiesMap map[string]*models.NestedProperty,
) (map[string]interface{}, error) {
	typed, ok := val.(map[string]interface{})
	if !ok {

View on GitHub (pinned to 75aa4b6d11)

Solutions

  1. Read the wrapped error: it names the nested key and the concrete validation failure.
  2. Ensure every key in the object value is declared in the property's nestedProperties schema.
  3. Match nested value types to their declared nested dataTypes.
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at usecases/objects/validation/properties_validation.go:176 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of weaviate/weaviate@75aa4b6d11 (2026-09-04). Data as JSON: /api/errors/15c41be9fff0392f. Report an issue: GitHub.