Look Up a Property or Type Entity
A trap that bites curators repeatedly: a plain search("Creator") returns whichever entity ranked first — which might be a Role named "Creator", a Person named "Creator", or anything else. To find the Property entity called "Creator" (or the Type entity), you must filter by meta-type.
The bug this prevents
# WRONG — returns whatever ranks first
{ search(query: "Creator", first: 1) { id name } }
For real, this returns a Role entity named "Creator" — not the property. If you then use that ID as a property reference when publishing values, your values get attached to the wrong entity type and the data ends up corrupted.
The fix — filter by meta-type
Property entities are tagged with SystemIds.PROPERTY (808a04ceb21c4d888ad12e240613e5ca). Type entities are tagged with SystemIds.SCHEMA_TYPE (e7d737c536764c609fa16aa64a8c90ad).
Find a Property by name
query FindProperty($name: String!) {
entities(
first: 5
filter: {
name: { is: $name }
typeIds: { anyEqualTo: "808a04ceb21c4d888ad12e240613e5ca" }
}
) {
id
name
types { id name }
}
}
{ "name": "Creator" }
Loading interactive query runner…
Find a Type by name
query FindType($name: String!) {
entities(
first: 5
filter: {
name: { is: $name }
typeIds: { anyEqualTo: "e7d737c536764c609fa16aa64a8c90ad" }
}
) {
id
name
}
}
{ "name": "Project" }
Loading interactive query runner…
Notes
- The two meta-type IDs above are stable — they don't change across schema versions, so it's safe to hardcode them.
- Multiple entities can share a property name. The graph allows duplicate property entities (different IDs, same
name). When you get >1 hit, prefer the ID published in the root space (a19c345ab9866679b001d7d2138d88a1) — that's almost always the canonical one. - The SDK exports these IDs as
SystemIds.PROPERTYandSystemIds.SCHEMA_TYPE. Don't hardcode strings in your TypeScript; import them.