Skip to content

Python client blocks id in nested properties #1932

@mironnn

Description

@mironnn

TL;DR

Python client blocks id in nested properties while REST API, Java, and Go clients allow it. Is this intentional?

Question

Is this restriction intentional for nested properties?

The id reservation makes sense at the top level (Weaviate internal use), but should nested objects also be restricted when the server and other clients support it?

Description

When creating a collection with nested objects containing an id property, the Python client (v4.19.2) raises a validation error:

ValidationError: Property name 'id' is reserved and cannot be used

However, the same schema works using:

  • REST API (direct HTTP)
  • Java client v4.5.0
  • Go client v4.13.1

This appears to be a Python client-specific restriction.

Reproduction

from weaviate.classes.config import Property, DataType

collection = client.collections.create(
    name="TestCollection",
    properties=[
        Property(
            name="metadata",
            data_type=DataType.OBJECT,
            nested_properties=[
                Property(name="id", data_type=DataType.TEXT),  # ❌ Validation error
                Property(name="value", data_type=DataType.TEXT),
            ]
        ),
    ]
)

Error:

ValidationError: Property name 'id' is reserved and cannot be used

Other clients

Created identical test suites for all clients against Weaviate v1.34.0:

Client Nested id Support Result
Python 4.19.2 ❌ Blocked Client validation error
REST API ✅ Works HTTP 200 OK
Java v5 (5.5.0) ✅ Works Success
Java v6 (6.0.0) ✅ Works Success
Go v5 (5.6.0) ✅ Works Success

REST API proof (same Weaviate instance):

curl -X POST http://localhost:8080/v1/schema \
  -d '{"class": "Test", "properties": [{"name": "metadata", "dataType": ["object"],
       "nestedProperties": [{"name": "id", "dataType": ["text"]}]}]}'
# Returns: HTTP 200 OK ✅

Environment

  • Python Client: weaviate-client 4.19.2
  • Python: 3.13.8
  • Weaviate: 1.34.0

Related Issues

Link for issue in java client
Link for issue in go client

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions