About schema instance query
- Last UpdatedOct 26, 2026
- 3 minute read
This query retrieves the schema-instance tree for an entity in a class library. Schema instances are exposed on entities. For example, class schema instances are available at core → classLibrary → content → classes → schemaInstances. Other entity types expose the same schemaInstances or hasSchemaInstances structure by replacing the entity collection in the path. For example, use attributes instead of classes to retrieve attribute schema instances.
Structure
The response mirrors the UI layout, so the API output maps directly to what you see on screen. Each schema instance is organized into extension points → sections → groups.
Groups support a single level of nesting (section → groups → groups), matching the UI rule that a group may contain at most one nested child group:
-
The outer group may hold both child groups and properties.
-
The inner (nested) group is terminal, it may contain properties only, never a further group.
This keeps the model aligned with the UI and prevents arbitrarily deep hierarchies.
Property validity flags
Two flags describe value validity at the property level:
-
hasValidValues: whether the property is backed by a constrained valid-values list (rather than free-form input).
-
isValueFromValidValues: whether the property's current value actually belongs to that list: true if it resolves to a member, false if it does not.
This resolution is applied consistently across all supported backing-value categories:
-
Custom list of values
-
Class library concepts
-
Enumeration lists with unique aspects
-
AVEVA Information Standards intrinsic lists
-
List of system values
When a property no list of valid values or no values to compare, isValueFromValidValues is null rather than false — distinguishing not applicable from present but invalid.
Together these flags let integrators validate stored data against schema constraints without re-fetching or re-deriving the underlying lists.
Request: To get classes along with their schema instances (extension points → sections → groups → properties).
Example - Query:
query {
core {
classLibrary {
content(idOrHandle: "SchemaTest") {
id
name
description
classes {
id
name
hasSchemaInstances
schemaInstances {
prefix
uri
id
name
description
schemaId
schemaName
hasExtensionPoints
extensionPoints {
id
name
description
hasSections
sections {
hasSections
sections {
id
name
description
hasGroups
groups {
hasGroups
groups {
id
name
description
hasGroups
groups {
id
name
description
hasProperties
properties {
id
name
value
dataType
hasValidValues
description
isValueFromValidValues
}
}
hasProperties
properties {
id
name
value
dataType
hasValidValues
description
isValueFromValidValues
}
}
}
}
}
}
}
}
}
}
}
}
Sample response:

Request: To get classes or entities with their schema instances, filtered at the collection levels.
Note: The has* booleans are just one option. The same filterable collection fields also accept the generic string operators — nameLike, nameNotLike, idLike, idIn, idNotIn, valueLike, dataTypeIn, and more — which can be combined freely to narrow results.
Example of Query:
query SchemaInstanceFiltered {
core {
classLibrary {
content(idOrHandle: "SchemaTest") {
classes(filters: { hasSchemaInstances: true }) {
id
name
hasSchemaInstances
schemaInstances(filters: { hasExtensionPoints: true }) {
id
name
description
schemaId
schemaName
hasExtensionPoints
extensionPoints(filters: { hasSections: true }) {
id
name
description
hasSections
sections {
hasSections
sections(filters: { hasGroups: true }) {
id
name
description
hasGroups
groups {
hasGroups
groups {
id
name
description
hasGroups
groups {
id
name
description
hasProperties
properties {
id
name
description
value
dataType
hasValidValues
isValueFromValidValues
}
}
hasProperties
properties {
id
name
description
value
dataType
hasValidValues
isValueFromValidValues
}
}
}
}
}
}
}
}
}
}
}
}