Get All Properties of a Type
"What fields can I publish on a Project?" Equivalent to schema introspection, but asked at the data-layer rather than via GraphQL __type. The answer comes from the Type entity's Properties relation.
Query
query TypeProperties($typeId: UUID!) {
entity(id: $typeId) {
name
relations(
first: 100
filter: { typeEntity: { name: { is: "Properties" } } }
) {
totalCount
nodes {
toEntity {
id
name
description
}
}
}
}
}
{ "typeId": "484a18c5030a499cb0f2ef588ff16d50" }
Response (excerpt)
{
"data": {
"entity": {
"name": "Project",
"relations": {
"totalCount": 59,
"nodes": [
{ "toEntity": { "id": "c459500ac2fc4fcaa04bd8ef87e55093", "name": "Funding rounds", "description": null } },
{ "toEntity": { "id": "66386c9b72d6403fa31ffa53b94ab4c7", "name": "Provided services", "description": null } },
{ "toEntity": { "id": "bc073be27d8a5cf28486b4be2deb3e2a", "name": "Telegram", "description": null } }
]
}
}
}
}
The Project Type entity declares 59 properties that conventionally appear on Project-typed entities. This isn't enforcement — Geo doesn't reject values whose property isn't in the Type's declared list — but it tells you the canonical schema.
Loading interactive query runner…
Use cases
- Schema discovery for a publisher: "I'm building a Project ingestion pipeline; what fields should I map?"
- UI rendering: "Show me a form with the right inputs for editing a Project"
- Validation: "Warn the curator if they're publishing a value on a property the Type doesn't declare"
Going further — get each property's data type
Property entities also have their own values describing them. To find the dataType (TEXT, INTEGER, DATE, etc.) for each property:
query TypePropertiesDetail($typeId: UUID!) {
entity(id: $typeId) {
name
relations(
first: 100
filter: { typeEntity: { name: { is: "Properties" } } }
) {
nodes {
toEntity {
id
name
values(first: 5) {
nodes {
propertyEntity { name }
text
propertyId
}
}
}
}
}
}
}
The values of a Property entity tell you what kind of property it is — its declared dataType, whether it's a Relation, etc.
Notes
Propertiesis a relation type, not a property — its name is"Properties". Don't confuse it withValue'spropertyfield.- Type-Properties are conventional, not enforced — you can publish any property on any entity. The Type's declared Properties tell you the expected shape, not a hard schema.
- Both Type and Property are themselves entities — they have
id,name,description,values, andrelationslike everything else in the graph. The "schema" lives inside the data. - For the GraphQL API's own type system, use the standard introspection query (
__type(name: "...")) — that's a different layer.