-
Notifications
You must be signed in to change notification settings - Fork 103
Open
Description
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 usedHowever, 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
Metadata
Metadata
Assignees
Labels
No labels