UNPKG

@itwin/presentation-common

Version:

Common pieces for iModel.js presentation packages

1,226 lines 107 kB
{ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "definitions": { "CalculatedPropertiesSpecification": { "additionalProperties": false, "description": "This content modifier allows including additional calculated properties into the content.", "properties": { "categoryId": { "anyOf": [ { "$ref": "#/definitions/ParentCategoryIdentifier" }, { "$ref": "#/definitions/RootCategoryIdentifier" }, { "$ref": "#/definitions/IdCategoryIdentifier" }, { "$ref": "#/definitions/SchemaCategoryIdentifier" }, { "type": "string" } ], "description": "The attribute allows moving the calculated property into a different category." }, "editor": { "$ref": "#/definitions/PropertyEditorSpecification", "description": "Custom property editor specification that allows assigning\na custom value editor to be used in UI." }, "extendedData": { "additionalProperties": { "type": "string" }, "description": "A map of ECExpressions whose\nevaluation results are used as extended data values.", "type": "object" }, "label": { "description": "Specifies label of the calculated property. Supports localization.", "type": "string" }, "priority": { "description": "Assign a custom `Field.priority` to the property. It's up to the UI component to make sure that priority\nis respected - properties with higher priority should appear before or above properties with lower priority.", "type": "integer" }, "renderer": { "$ref": "#/definitions/CustomRendererSpecification", "description": "Custom property renderer specification that allows assigning a\ncustom value renderer to be used in UI. The specification is used to set up `Field.renderer` for\nthis property and it's up to the UI component to make sure appropriate renderer is used to render the property." }, "type": { "description": "Specifies return type of the calculated property. If unsupported type is provided, calculated property won't appear in the property pane.\n\nType can have these values: `string`, `boolean`, `bool`, `dateTime`, `double`, `int`, `long`", "enum": [ "bool", "boolean", "dateTime", "double", "int", "long", "string" ], "type": "string" }, "value": { "description": "Defines an expression to calculate the value. The expression can use ECInstance\nand Ruleset Variables symbol contexts.", "type": "string" } }, "required": [ "label" ], "type": "object" }, "ChildNodeRule": { "additionalProperties": false, "description": "Child node rules are used to define child nodes in a hierarchy.", "properties": { "condition": { "description": "Defines a condition which needs to be met in order for the rule to be used. The condition is an\nECExpression which has to evaluate\nto a boolean value.", "type": "string" }, "customizationRules": { "description": "A list of customization rules that\napply only to nodes produced by this rule.", "items": { "$ref": "#/definitions/CustomizationRule" }, "type": "array" }, "onlyIfNotHandled": { "description": "Tells the library that the rule should only be handled if no other rule of the same type was handled previously (based on rule\npriorities and definition order). This allows adding fallback rules which can be overriden by higher-priority rules.", "type": "boolean" }, "priority": { "description": "Defines the order in which rules are handled, higher number means the rule is handled first. If priorities are\nequal, the rules are handled in the order they're defined.", "type": "integer" }, "requiredSchemas": { "description": "A list of ECSchema requirements that need to be met for the rule to be used.", "items": { "$ref": "#/definitions/RequiredSchemaSpecification" }, "type": "array" }, "ruleType": { "description": "Used for serializing to JSON.", "enum": [ "ChildNodes" ], "type": "string" }, "specifications": { "description": "A list of hierarchy specifications that define what nodes are going to be returned.", "items": { "$ref": "#/definitions/ChildNodeSpecification" }, "type": "array" }, "stopFurtherProcessing": { "description": "Stop processing rules that have lower priority. Used in cases when recursion suppression is needed.", "type": "boolean" }, "subConditions": { "description": "A list of sub-rules which share *placement attributes* and\nnested customization rules\nof the hierarchy rule. This means the attributes of hierarchy rule are still in effect and the sub-rules\ncan add additional condition of their own.", "items": { "$ref": "#/definitions/SubCondition" }, "type": "array" } }, "required": [ "ruleType" ], "type": "object" }, "ChildNodeSpecification": { "anyOf": [ { "$ref": "#/definitions/CustomNodeSpecification" }, { "$ref": "#/definitions/CustomQueryInstanceNodesSpecification" }, { "$ref": "#/definitions/InstanceNodesOfSpecificClassesSpecification" }, { "$ref": "#/definitions/RelatedInstanceNodesSpecification" } ], "description": "Hierarchy rule specifications that define what nodes are going to be returned by the rule." }, "ClassGroup": { "additionalProperties": false, "description": "Base class grouping allows grouping ECInstance nodes by their base class (as opposed to the hierarchy\nspecifications' `groupByClass` attribute, which always groups by direct class).", "properties": { "baseClass": { "$ref": "#/definitions/SingleSchemaClassSpecification", "description": "Specification of the base ECClass to group by. If specified, allows grouping by a subclass of the class\nspecified by rule's `class` attribute." }, "createGroupForSingleItem": { "description": "Specifies whether a grouping node should be created if there is only one item in that group.", "type": "boolean" }, "specType": { "description": "Used for serializing to JSON.", "enum": [ "Class" ], "type": "string" } }, "required": [ "specType" ], "type": "object" }, "ContentInstancesOfSpecificClassesSpecification": { "additionalProperties": false, "description": "This specification creates content for all instances of specific ECClasses.", "properties": { "calculatedProperties": { "description": "Specifications of calculated properties whose values are\ngenerated using provided ECExpressions.", "items": { "$ref": "#/definitions/CalculatedPropertiesSpecification" }, "type": "array" }, "classes": { "anyOf": [ { "$ref": "#/definitions/MultiSchemaClassesSpecification" }, { "items": { "$ref": "#/definitions/MultiSchemaClassesSpecification" }, "type": "array" } ], "description": "Defines a set of multi schema classes that specify which\nECClasses need to be selected to form the result." }, "excludedClasses": { "anyOf": [ { "$ref": "#/definitions/MultiSchemaClassesSpecification" }, { "items": { "$ref": "#/definitions/MultiSchemaClassesSpecification" }, "type": "array" } ], "description": "Defines a set of multi schema classes that prevents specified\nECClasses and subclasses from being selected by `classes` attribute." }, "handlePropertiesPolymorphically": { "description": "Specifies whether properties of derived `classes` should be included in the content.", "type": "boolean" }, "instanceFilter": { "description": "Specifies an ECExpression for filtering instances\nof ECClasses specified through the `classes` attribute.", "type": "string" }, "onlyIfNotHandled": { "description": "Specifies whether this specification should be ignored if another specification was handled before as\ndetermined by rule and specification priorities. This provides a mechanism for defining a fallback specification.", "type": "boolean" }, "priority": { "description": "Controls the order in which specifications are handled — specification with higher priority value is handled\nfirst. If priorities are equal, the specifications are handled in the order they appear in the ruleset.", "type": "integer" }, "propertyCategories": { "description": "Specifications for custom categories. Simply defining the categories does\nnothing - they have to be referenced from property specification defined in\n`propertyOverrides` by `id`.", "items": { "$ref": "#/definitions/PropertyCategorySpecification" }, "type": "array" }, "propertyOverrides": { "description": "Specifications for various property overrides that allow customizing property display.", "items": { "$ref": "#/definitions/PropertySpecification" }, "type": "array" }, "relatedInstances": { "description": "Specifications of related instances that can be used when creating the content.", "items": { "$ref": "#/definitions/RelatedInstanceSpecification" }, "type": "array" }, "relatedProperties": { "description": "Specifications of related properties which are\nincluded in the generated content.", "items": { "$ref": "#/definitions/RelatedPropertiesSpecification" }, "type": "array" }, "specType": { "description": "Used for serializing to JSON.", "enum": [ "ContentInstancesOfSpecificClasses" ], "type": "string" } }, "required": [ "classes", "specType" ], "type": "object" }, "ContentModifier": { "additionalProperties": false, "description": "Content modifiers are used to modify how instances of specified ECClasses are displayed in content which is\nproduced using content rules. They do not produce any content\nby themselves.", "properties": { "applyOnNestedContent": { "description": "Specifies whether `calculatedProperties` and\n`relatedProperties` specifications should also be applied on\nnested content.", "type": "boolean" }, "calculatedProperties": { "description": "Specifications of calculated properties whose values are\ngenerated using provided ECExpressions.", "items": { "$ref": "#/definitions/CalculatedPropertiesSpecification" }, "type": "array" }, "class": { "$ref": "#/definitions/SingleSchemaClassSpecification", "description": "Specification of ECClass whose content should be modified. The modifier is applied to all content\nif this attribute is not specified." }, "onlyIfNotHandled": { "description": "Tells the library that the rule should only be handled if no other rule of the same type was handled previously (based on rule\npriorities and definition order). This allows adding fallback rules which can be overriden by higher-priority rules.", "type": "boolean" }, "priority": { "description": "Defines the order in which rules are handled, higher number means the rule is handled first. If priorities are\nequal, the rules are handled in the order they're defined.", "type": "integer" }, "propertyCategories": { "description": "Specifications for custom categories. Simply defining the categories does\nnothing - they have to be referenced from property specification defined in\n`propertyOverrides` by `id`.", "items": { "$ref": "#/definitions/PropertyCategorySpecification" }, "type": "array" }, "propertyOverrides": { "description": "Specifications for various property overrides that allow customizing property display.", "items": { "$ref": "#/definitions/PropertySpecification" }, "type": "array" }, "relatedProperties": { "description": "Specifications of related properties which are\nincluded in the generated content.", "items": { "$ref": "#/definitions/RelatedPropertiesSpecification" }, "type": "array" }, "requiredSchemas": { "description": "A list of ECSchema requirements that need to be met for the rule to be used.", "items": { "$ref": "#/definitions/RequiredSchemaSpecification" }, "type": "array" }, "ruleType": { "description": "Used for serializing to JSON.", "enum": [ "ContentModifier" ], "type": "string" } }, "required": [ "ruleType" ], "type": "object" }, "ContentRelatedInstancesSpecification": { "additionalProperties": false, "description": "Returns content for instances related to the selected (input) instances.", "properties": { "calculatedProperties": { "description": "Specifications of calculated properties whose values are\ngenerated using provided ECExpressions.", "items": { "$ref": "#/definitions/CalculatedPropertiesSpecification" }, "type": "array" }, "instanceFilter": { "description": "Specifies an ECExpression for filtering instances\nof ECClasses targeted through the `relationshipPaths` attribute.", "type": "string" }, "onlyIfNotHandled": { "description": "Specifies whether this specification should be ignored if another specification was handled before as\ndetermined by rule and specification priorities. This provides a mechanism for defining a fallback specification.", "type": "boolean" }, "priority": { "description": "Controls the order in which specifications are handled — specification with higher priority value is handled\nfirst. If priorities are equal, the specifications are handled in the order they appear in the ruleset.", "type": "integer" }, "propertyCategories": { "description": "Specifications for custom categories. Simply defining the categories does\nnothing - they have to be referenced from property specification defined in\n`propertyOverrides` by `id`.", "items": { "$ref": "#/definitions/PropertyCategorySpecification" }, "type": "array" }, "propertyOverrides": { "description": "Specifications for various property overrides that allow customizing property display.", "items": { "$ref": "#/definitions/PropertySpecification" }, "type": "array" }, "relatedInstances": { "description": "Specifications of related instances that can be used when creating the content.", "items": { "$ref": "#/definitions/RelatedInstanceSpecification" }, "type": "array" }, "relatedProperties": { "description": "Specifications of related properties which are\nincluded in the generated content.", "items": { "$ref": "#/definitions/RelatedPropertiesSpecification" }, "type": "array" }, "relationshipPaths": { "description": "Specifies a chain of relationship path specifications that\nforms a path from an input instance to the output instances. When this array is empty, the specification produces no results.", "items": { "$ref": "#/definitions/RepeatableRelationshipPathSpecification" }, "type": "array" }, "specType": { "description": "Used for serializing to JSON.", "enum": [ "ContentRelatedInstances" ], "type": "string" } }, "required": [ "relationshipPaths", "specType" ], "type": "object" }, "ContentRule": { "additionalProperties": false, "description": "Content rules are used to define content that is displayed for specific type of input.\nInput consists of either ECInstances or nodes and to make things\nsimpler everything is considered a node - instances get converted to\n*ECInstance nodes* (thus the `SelectedNode` symbol in `condition` ECExpression).", "properties": { "condition": { "description": "Defines a condition which needs to be met in order for the rule to be used. The condition is an\nECExpression which has to evaluate to\na boolean value.", "type": "string" }, "onlyIfNotHandled": { "description": "Tells the library that the rule should only be handled if no other rule of the same type was handled previously (based on rule\npriorities and definition order). This allows adding fallback rules which can be overriden by higher-priority rules.", "type": "boolean" }, "priority": { "description": "Defines the order in which rules are handled, higher number means the rule is handled first. If priorities are\nequal, the rules are handled in the order they're defined.", "type": "integer" }, "requiredSchemas": { "description": "A list of ECSchema requirements that need to be met for the rule to be used.", "items": { "$ref": "#/definitions/RequiredSchemaSpecification" }, "type": "array" }, "ruleType": { "description": "Used for serializing to JSON.", "enum": [ "Content" ], "type": "string" }, "specifications": { "description": "A list of content specifications that define what content is going to be returned. This is the most\nimportant attribute which is responsible for defining what instances' properties are included in the\nreturned content.", "items": { "$ref": "#/definitions/ContentSpecification" }, "type": "array" } }, "required": [ "ruleType", "specifications" ], "type": "object" }, "ContentSpecification": { "anyOf": [ { "$ref": "#/definitions/ContentRelatedInstancesSpecification" }, { "$ref": "#/definitions/ContentInstancesOfSpecificClassesSpecification" }, { "$ref": "#/definitions/SelectedNodeInstancesSpecification" } ], "description": "Content rule specifications which define what content is returned\nwhen rule is used." }, "CustomNodeSpecification": { "additionalProperties": false, "description": "Returns a static custom-defined node that's not based on an ECInstance.", "properties": { "description": { "description": "Specifies the value of `Node.description` property, which is a string that may\nbe localized. UI component displaying the node may choose\nwhether and how to surface this information to users.", "type": "string" }, "doNotSort": { "description": "Suppress sorting of nodes returned by this specification. With this attribute set to `true`, the order\nof returned nodes is undefined.", "type": "boolean" }, "hasChildren": { "description": "This attribute allows telling the engine that nodes created by this specification always or never have children.", "enum": [ "Always", "Never", "Unknown" ], "type": "string" }, "hideExpression": { "description": "When specified ECExpression evaluates\nto `true`, nodes produced by this specification are omitted and their children appear one hierarchy level\nhigher.", "type": "string" }, "hideIfNoChildren": { "description": "Specifies whether nodes created through this specification should be hidden if they have no child nodes.", "type": "boolean" }, "hideNodesInHierarchy": { "description": "When `true`, instances nodes produced by this specification are omitted and their children appear one\nhierarchy level higher.", "type": "boolean" }, "imageId": { "deprecated": "in 5.0 - will not be removed until after 2026-06-13. Use `ExtendedDataRule` instead. See extended data usage page for more details.", "description": "Specifies node's image ID. If set, the ID is assigned to `Node.imageId` and it's\nup to the UI component to decide what to do with it.", "type": "string" }, "label": { "description": "Specifies node label. This is a string value that may be localized.", "type": "string" }, "nestedRules": { "description": "Specifications of nested child node rules that\nallow creating child nodes without the need of supplying a condition to match the parent node.", "items": { "$ref": "#/definitions/ChildNodeRule" }, "type": "array" }, "priority": { "description": "Controls the order in which specifications are handled — specification with higher priority value is\nhandled first. If priorities are equal, the specifications are handled in the order they appear in the\nruleset.", "type": "integer" }, "relatedInstances": { "description": "Specifications of related instances that can be used\nwhen creating the nodes.", "items": { "$ref": "#/definitions/RelatedInstanceSpecification" }, "type": "array" }, "specType": { "description": "Used for serializing to JSON.", "enum": [ "CustomNode" ], "type": "string" }, "suppressSimilarAncestorsCheck": { "description": "Specifies whether similar ancestor nodes' checking should be suppressed when creating nodes based on this\nspecification. See more in infinite hierarchies prevention page.", "type": "boolean" }, "type": { "description": "Specifies node type, which is assigned to node's key.", "type": "string" } }, "required": [ "label", "specType", "type" ], "type": "object" }, "CustomQueryInstanceNodesSpecification": { "additionalProperties": false, "description": "Returns nodes for instances returned by a provided ECSQL query.", "properties": { "doNotSort": { "description": "Suppress sorting of nodes returned by this specification. With this attribute set to `true`, the order\nof returned nodes is undefined.", "type": "boolean" }, "groupByClass": { "description": "Controls whether returned instances should be grouped by ECClass. Defaults to `true`.", "type": "boolean" }, "groupByLabel": { "description": "Controls whether returned instances should be grouped by label. Defaults to `true`.", "type": "boolean" }, "hasChildren": { "description": "This attribute allows telling the engine that nodes created by this specification always or never have children.", "enum": [ "Always", "Never", "Unknown" ], "type": "string" }, "hideExpression": { "description": "When specified ECExpression evaluates\nto `true`, nodes produced by this specification are omitted and their children appear one hierarchy level\nhigher.", "type": "string" }, "hideIfNoChildren": { "description": "Specifies whether nodes created through this specification should be hidden if they have no child nodes.", "type": "boolean" }, "hideNodesInHierarchy": { "description": "When `true`, instances nodes produced by this specification are omitted and their children appear one\nhierarchy level higher.", "type": "boolean" }, "nestedRules": { "description": "Specifications of nested child node rules that\nallow creating child nodes without the need of supplying a condition to match the parent node.", "items": { "$ref": "#/definitions/ChildNodeRule" }, "type": "array" }, "priority": { "description": "Controls the order in which specifications are handled — specification with higher priority value is\nhandled first. If priorities are equal, the specifications are handled in the order they appear in the\nruleset.", "type": "integer" }, "queries": { "description": "Specifications of queries used to create the content. Query specifications define the actual\nresults of the specification.", "items": { "$ref": "#/definitions/QuerySpecification" }, "type": "array" }, "relatedInstances": { "description": "Specifications of related instances that can be used\nwhen creating the nodes.", "items": { "$ref": "#/definitions/RelatedInstanceSpecification" }, "type": "array" }, "specType": { "description": "Used for serializing to JSON.", "enum": [ "CustomQueryInstanceNodes" ], "type": "string" }, "suppressSimilarAncestorsCheck": { "description": "Specifies whether similar ancestor nodes' checking should be suppressed when creating nodes based on this\nspecification. See more in infinite hierarchies prevention page.", "type": "boolean" } }, "required": [ "specType" ], "type": "object" }, "CustomRendererSpecification": { "additionalProperties": false, "description": "This specification allows defining a custom renderer, which can be used to render properties or categories.", "properties": { "rendererName": { "description": "Name of the renderer that's going to be used in UI components. Value of this attribute corresponds\nto `RendererDescription.name` attribute that gets assigned to whatever the renderer\nis set on.", "type": "string" } }, "required": [ "rendererName" ], "type": "object" }, "CustomizationRule": { "anyOf": [ { "$ref": "#/definitions/NodeArtifactsRule" }, { "$ref": "#/definitions/ExtendedDataRule" }, { "$ref": "#/definitions/GroupingRule" }, { "$ref": "#/definitions/InstanceLabelOverride" }, { "$ref": "#/definitions/PropertySortingRule" }, { "$ref": "#/definitions/DisabledSortingRule" } ], "description": "Customization rules allow customizing each node or content item separately.\nMost of the rules have a `condition` property which uses ECExpressions\nfor conditional rule filtering.\n\n**Nested customization rules:**\n\nCustomization rules may be specified at ruleset level, in which case they're\napplied to all content produced by the ruleset, or nested under navigation rules,\nin which case they're applied only for nodes created by those rules.\n\n**Customization rule priorities:**\n\nCustomization rules have a `priority` attribute which defines the order in which they're applied. If priorities match,\nrules engine looks at the nesting level - the deeper the rule is nested, the higher is its `priority`.\nIf the nesting levels also match, the rule defined first wins." }, "DefaultPropertyCategoryOverride": { "additionalProperties": false, "description": "A rule that allows overriding the default property category.\n\nThe default property category is a category that gets assigned to properties that otherwise have no category.", "properties": { "onlyIfNotHandled": { "description": "Tells the library that the rule should only be handled if no other rule of the same type was handled previously (based on rule\npriorities and definition order). This allows adding fallback rules which can be overriden by higher-priority rules.", "type": "boolean" }, "priority": { "description": "Defines the order in which rules are handled, higher number means the rule is handled first. If priorities are\nequal, the rules are handled in the order they're defined.", "type": "integer" }, "requiredSchemas": { "description": "A list of ECSchema requirements that need to be met for the rule to be used.", "items": { "$ref": "#/definitions/RequiredSchemaSpecification" }, "type": "array" }, "ruleType": { "description": "Used for serializing to JSON.", "enum": [ "DefaultPropertyCategoryOverride" ], "type": "string" }, "specification": { "$ref": "#/definitions/PropertyCategorySpecification", "description": "Specification for the custom property category." } }, "required": [ "ruleType", "specification" ], "type": "object" }, "DisabledSortingRule": { "additionalProperties": false, "description": "Rule to disable sorting for certain ECInstances in the hierarchy and/or content.", "properties": { "class": { "$ref": "#/definitions/SingleSchemaClassSpecification", "description": "Specifies ECClass whose ECInstances should be sorted." }, "condition": { "description": "Defines a condition which needs to be met in order for the rule to be used. The condition is an\nECExpression which has to\nevaluate to a boolean value.", "type": "string" }, "isPolymorphic": { "description": "Specifies that `class` attribute defined in this rule should be handled polymorphically.", "type": "boolean" }, "onlyIfNotHandled": { "description": "Tells the library that the rule should only be handled if no other rule of the same type was handled previously (based on rule\npriorities and definition order). This allows adding fallback rules which can be overriden by higher-priority rules.", "type": "boolean" }, "priority": { "description": "Defines the order in which rules are handled, higher number means the rule is handled first. If priorities are\nequal, the rules are handled in the order they're defined.", "type": "integer" }, "requiredSchemas": { "description": "A list of ECSchema requirements that need to be met for the rule to be used.", "items": { "$ref": "#/definitions/RequiredSchemaSpecification" }, "type": "array" }, "ruleType": { "description": "Used for serializing to JSON.", "enum": [ "DisabledSorting" ], "type": "string" } }, "required": [ "ruleType" ], "type": "object" }, "ECPropertyValueQuerySpecification": { "additionalProperties": false, "description": "The specification specifies the name of the parent node instance property whose value is the ECSQL\nused to query for instances.", "properties": { "class": { "$ref": "#/definitions/SingleSchemaClassSpecification", "description": "Specification of ECClass whose instances the query returns. The specification may also point to a\nbase class of instances returned by the query. If the query returns instances that are not of this\nclass, they aren't included in the result set." }, "parentPropertyName": { "description": "Specifies name of the parent instance property whose value contains the ECSQL query.", "type": "string" }, "specType": { "description": "Used for serializing to JSON.", "enum": [ "ECPropertyValue" ], "type": "string" } }, "required": [ "class", "parentPropertyName", "specType" ], "type": "object" }, "ExtendedDataRule": { "additionalProperties": false, "description": "Extended data rule is used to inject some arbitrary data into presentation data objects (nodes, content records).", "properties": { "condition": { "description": "Defines a condition which needs to be met in order for the rule to be used. The condition\nis an ECExpression which has\nto evaluate to a boolean value.", "type": "string" }, "items": { "additionalProperties": { "type": "string" }, "description": "A map of ECExpressions whose\nevaluation results are used as extended data values.", "type": "object" }, "onlyIfNotHandled": { "description": "Tells the library that the rule should only be handled if no other rule of the same type was handled previously (based on rule\npriorities and definition order). This allows adding fallback rules which can be overriden by higher-priority rules.", "type": "boolean" }, "priority": { "description": "Defines the order in which rules are handled, higher number means the rule is handled first. If priorities are\nequal, the rules are handled in the order they're defined.", "type": "integer" }, "requiredSchemas": { "description": "A list of ECSchema requirements that need to be met for the rule to be used.", "items": { "$ref": "#/definitions/RequiredSchemaSpecification" }, "type": "array" }, "ruleType": { "description": "Used for serializing to JSON.", "enum": [ "ExtendedData" ], "type": "string" } }, "required": [ "items", "ruleType" ], "type": "object" }, "GroupingRule": { "additionalProperties": false, "description": "Grouping rules provide advanced ways to group instances when creating hierarchies.", "properties": { "class": { "$ref": "#/definitions/SingleSchemaClassSpecification", "description": "Specification of ECClass which should be grouped using this rule." }, "condition": { "description": "An ECExpression that results in\na boolean value. If specified, the grouping rule applies only to instance nodes that cause the condition\nto evaluate to `true`.", "type": "string" }, "groups": { "description": "Specifies a list of grouping specifications\nwhich describe the kind of grouping that should be applied.", "items": { "$ref": "#/definitions/GroupingSpecification" }, "type": "array" }, "onlyIfNotHandled": { "description": "Tells the library that the rule should only be handled if no other rule of the same type was handled previously (based on rule\npriorities and definition order). This allows adding fallback rules which can be overriden by higher-priority rules.", "type": "boolean" }, "priority": { "description": "Defines the order in which rules are handled, higher number means the rule is handled first. If priorities are\nequal, the rules are handled in the order they're defined.", "type": "integer" }, "requiredSchemas": { "description": "A list of ECSchema requirements that need to be met for the rule to be used.", "items": { "$ref": "#/definitions/RequiredSchemaSpecification" }, "type": "array" }, "ruleType": { "description": "Used for serializing to JSON.", "enum": [ "Grouping" ], "type": "string" } }, "required": [ "class", "groups", "ruleType" ], "type": "object" }, "GroupingSpecification": { "anyOf": [ { "$ref": "#/definitions/ClassGroup" }, { "$ref": "#/definitions/PropertyGroup" }, { "$ref": "#/definitions/SameLabelInstanceGroup" } ], "description": "Grouping rule specifications." }, "IdCategoryIdentifier": { "additionalProperties": false, "description": "Identifier of a category specified through `PropertyCategorySpecification` in this scope.", "properties": { "categoryId": { "description": "ID of the category pointed to by this identifier", "type": "string" }, "createClassCategory": { "description": "Controls whether a class category should be included under the category pointed to by this identifier", "type": "boolean" }, "type": { "description": "Type of the identifier", "enum": [ "Id" ], "type": "string" } }, "required": [ "categoryId", "type" ], "type": "object" }, "InstanceLabelOverride": { "additionalProperties": false, "description": "Instance label override rule provides a way to set instance label to one of its property values,\nother attributes and/or combination of them.", "properties": { "class": { "$ref": "#/definitions/SingleSchemaClassSpecification", "description": "Specifies the ECClass to apply this rule to." }, "onlyIfNotHandled": { "description": "Tells the library that the rule should only be handled if no other rule of the same type was handled previously (based on rule\npriorities and definition order). This allows adding fallback rules which can be overriden by higher-priority rules.", "type": "boolean" }, "priority": { "description": "Defines the order in which rules are handled, higher number means the rule is handled first. If priorities are\nequal, the rules are handled in the order they're defined.", "type": "integer" }, "requiredSchemas": { "description": "A list of ECSchema requirements that need to be met for the rule to be used.", "items": { "$ref": "#/definitions/RequiredSchemaSpecification" }, "type": "array" }, "ruleType": { "description": "Used for serializing to JSON.", "enum": [ "InstanceLabelOverride" ], "type": "string" }, "values": { "description": "Specifications of values used to override label. The first non-empty value is used as the actual label.", "items": { "$ref": "#/definitions/InstanceLabelOverrideValueSpecification" }, "type": "array" } }, "required": [ "class", "ruleType", "values" ], "type": "object" }, "InstanceLabelOverrideBriefcaseIdSpecification": { "additionalProperties": false, "description": "Specification returns ECInstance's briefcase ID in base36 format.", "properties": { "specType": { "description": "Type of the specification", "enum": [ "BriefcaseId" ], "type": "string" } }, "required": [ "specType" ], "type": "object" }, "InstanceLabelOverrideClassLabelSpecification": { "additionalProperties": false, "description": "Specification uses ECClass display label as the label content.", "properties": { "specType": { "description": "Type of the specification", "enum": [ "ClassLabel" ], "type": "string" } }, "required": [ "specType" ], "type": "object" }, "InstanceLabelOverrideClassNameSpecification": { "additionalProperties": false, "description": "Specification uses ECClass name as the label content.", "properties": { "full": { "description": "Should full (`{schemaName}.{className}`) class name be used", "type": "boolean" }, "specType": { "description": "Type of the specification", "enum": [ "ClassName" ], "type": "string" } }, "required": [ "specType" ], "type": "object" }, "InstanceLabelOverrideCompositeValueSpecification": { "additionalProperties": false, "description": "Specification allows creating a label value composited using multiple other specifications.", "properties": { "parts": { "description": "Parts of the value.\n\nIf any of the parts with `isRequired` flag evaluate to an empty string, the\nresult of this specification is also an empty string.", "items": { "additionalProperties": false, "properties": { "isRequired": { "type": "boolean" }, "spec": { "$ref": "#/definitions/InstanceLabelOverrideValueSpecification" } }, "required": [ "spec" ], "type": "object" }, "type": "array" }, "separator": { "description": "Separator to use when joining the parts. Defaults to a space character.", "type": "string" }, "specType": { "description": "Type of the specification", "enum": [ "Composite" ], "type": "string" } }, "required": [ "parts", "specType" ], "type": "object" }, "InstanceLabelOverrideLocalIdSpecification": { "additionalProperties": false, "description": "Specification returns ECInstance's local ID in base36 format.", "properties": { "specType": { "description": "Type of the specification", "enum": [ "LocalId" ], "type": "string" } }, "required": [ "specType" ], "type": "object" }, "InstanceLabelOverridePropertyValueSpecification": { "additionalProperties": false, "description": "Specification uses property value as the label content.", "properties": { "propertyName": { "description": "Name of the property whose value should be used.", "type": "string" }, "propertySource": { "anyOf": [ { "$ref": "#/definitions/RelationshipStepSpecification" }, { "items": { "$ref": "#/definitions/RelationshipStepSpecification" }, "type": "array" } ], "description": "Specification of the relationship path from `InstanceLabelOverride.class`\nto class of the property. If omitted, `InstanceLabelOverride.class` is used as property class." }, "specType": { "description": "Type of the specification", "enum": [ "Property" ], "type": "string" } }, "required": [ "propertyName", "specType" ], "type": "object" }, "InstanceLabelOverrideRelatedInstanceLabelSpecification": { "additionalProperties": false, "description": "Specification uses label of another related instance as the label content.", "properties": { "pathToRelatedInstance": { "$ref": "#/definitions/RelationshipPathSpecification", "description": "Specification of the relationship path from `InstanceLabelOverride.class`\nto class of the related instance." }, "specType": { "description": "Type of the specification", "enum": [ "RelatedInstanceLabel" ], "type": "string" } }, "required": [ "pathToRelatedInstance", "specType" ], "type": "object" }, "InstanceLabelOverrideStringValueSpecification": { "additionalProperties": false, "description": "Specification uses the specified value as the label content.", "properties": { "specType": { "description": "Type of the specification", "enum": [ "String" ], "type": "string" }, "value": { "description": "The value to use as the label content.", "type": "string" } }, "required": [ "specType", "value" ], "type": "object" }, "InstanceLabelOverrideValueSpecification": { "anyOf": [ { "$ref": "#/definitions/InstanceLabelOverrideCompositeValueSpecification" }, { "$ref": "#/definitions/InstanceLabelOverridePropertyValueSpecification" }, { "$ref": "#/definitions/InstanceLabelOverrideStringValueSpecification" }, { "$ref": "#/definitions/InstanceLabelOverrideClassNameSpecification" }, { "$ref": "#/definitions/InstanceLabelOverrideClassLabelSpecification" }, { "$ref": "#/definitions/InstanceLabelOverrideBriefcaseIdSpecification" }, { "$ref": "#/definitions/InstanceLabelOverrideLocalIdSpecification" }, { "$ref": "#/definitions/InstanceLabelOverrideRelatedInstanceLabelSpecification" } ], "description": "Specification to define how the label for `InstanceLabelOverride` should be created." }, "InstanceNodesOfSpecificClassesSpecification": { "additionalProperties": false, "description": "Returns nodes for instances of specific ECClasses.", "properties": { "classes": { "anyOf": [ { "$ref": "#/definitions/MultiSchemaClassesSpecification" }, { "items": { "$ref": "#/definitions/MultiSchemaClassesSpecification" }, "type": "array" } ], "description": "Defines a set of multi schema classes that\nspecify which ECClasses need to be selected to form the result." }, "doNotSort": { "description": "Suppress sorting of nodes returned by this specification. With this attribute set to `true`, the order\nof returned nodes is undefined.", "type": "boolean" }, "excludedClasses": { "anyOf": [ { "$ref": "#/definitions/MultiSchemaClassesSpecification" }, { "items": { "$ref": "#/definitions/MultiSchemaClassesSpecification" }, "type": "array" } ], "description": "Defines a set of multi schema classes that\nprevents specified ECClasses and subclasses from being selected by `classes` attribute." }, "groupByClass": { "description": "Controls whether returned instances should be grouped by ECClass. Defaults to `true`.", "type": "boolean" }, "groupByLabel": { "description": "Controls whether returned instances should be grouped by label. Defaults to `true`.", "type": "boolean" }, "hasChildren": { "description": "This attribute allows telling the engine that nodes created by this specification always or never have children.", "enum":