Creates a GroupProperty for a Group. Each GroupProperty defines a column of mapped data.
Mapping ECProperties
GroupProperties define mappings from ECProperties on an iModel to columns. They allow mapping the queried, element, element aspect, or related element properties.
Content of the columns depend on the ecProperties
field. The ecProperties
field is a prioritized array which contains ECProperty
entities. The closer the ECProperty
is to the array's start, the higher the priority. The priority of ECProperty
can be changed by reordering the ecProperties
array. Reading of the ecProperties
array stops when a valid value is found. For example, if the ecProperties
array contains two entries and the first entry results in a null or undefined value, it will take the second entry. The value can be undefined if the given ECProperty does not exist. The result column will be filled with a null value if no valid value was found.
Evaluating ecProperties
is prioritized by:
- Queried properties
- Element properties
- Element aspect properties
Having queried properties as the highest priority allows for constant or complex values to be added to a mapping.
ECProperty
lookup is defined by four values - ECSchemaName
, ECClassName
, ECPropertyName
and ECPropertyType
.
ECSchemaName
and ECClassName
are used together to create a ECClassId which is the ECClassId of the current row when selecting a property. If the ECClassId of a selected row does not match the ECSchemaName
and ECClassName
pair, the value for this ECProperty
is considered undefined. If the formed ECClassId is of an element aspect, the current selected row is an element and there is only one instance of that element aspect related to the element, the property lookup is done on the element aspect.
ECSchemaName
and ECClassName
are case-insensitive.
ECSchemaName
and ECClassName
can be set to a wildcard value *
.
- If the value of
ECSchemaName
is*
and the value ofECClassName
isBeam
, then it will match anyBeam
class from any schema (e.g.Building.Beam
,Structural.Beam
, etc.) - If the value of
ECSchemaName
isBuilding
and the value ofECClassName
is*
, then it will match any class from the schemaBuilding
(e.g.Building.Beam
,Building.CurtainWall
, etc.) - If values of
ECSchemaName
andECClassName
are*
, then it will match any ECClassId (e.g.Building.Beam
,Structural.Column
, etc.) - If either value of
ECSchemaName
orECClassName
are*
, then no element aspect lookup is done
Class inheritance is checked if there is no wildcard value.
- If the value of
ECSchemaName
isBuilding
and the value ofECClassName
isStructuralMember
, then it will match any ECClassId which inheritsBuilding.StructuralMember
(e.g.Building.Beam
which inheritsBuilding.StructuralMember
,Building.Column
which inheritsBuilding.StructuralMember
, etc) - If
ECSchemaName
orECClassName
is a wildcard, then inheritance will not be checked
Set ECPropertyName
to a property name that you want to select. The value of ECPropertyName
can also be a path defining how to find a property. The path segments must be separated by a period (.
). The path can contain the names of:
- A navigation property
- A struct property
- A string property that happens to contain a string representation of a json object
- A property inside the selected json
Names of properties are not case sensitive. If json object does not have duplicate property names which only differ in letter casing, then those json properties are not case sensitive. We recommend treating json properties as case sensitive.
- If
Category
property is a navigation property with a value of{"id":"0x2000000000b","relClassName":"BisCore.GeometricElement3dIsInCategory"}
and theECPropertyName
is set toCategory
orcategory
, then the whole value{"id":"0x2000000000b","relClassName":"BisCore.GeometricElement3dIsInCategory"}
will be selected - If
Category
property is a navigation property with a value of{"id":"0x2000000000b","relClassName":"BisCore.GeometricElement3dIsInCategory"}
and theECPropertyName
is set toCategory.id
, then only theid
value0x2000000000b
will be selected - If
Category
property is a navigation property and it points to a row that has a propertyCodeValue
that we want to select, theECPropertyName
should be set toCategory.CodeValue
- If
Model
property is a navigation property and it points to a row that has a propertyJsonProperties
with a value{"formatter":{"mastUnit":{"label":"m"}}}
and we want to select the master unit label, theECPropertyName
should be set toModel.JsonProperties.formatter.mastUnit.label
. The result will bem
ECPropertyType
is case sensitive and corresponds to the data type of a ECProperty
you want to select. Supported Type values are:
Boolean
- describes a logical value which is either true or false,Number
- treated the same as Double,Integer
- describes a whole number,Double
- describes a real number,String
- describes text.
Authentication
Requires Authorization
header with valid Bearer token for scope itwin-platform
.
For more documentation on authorization and how to get access token visit OAUTH2 Authorization page.
Authorization
User must have imodels_write
permission(s) assigned at the Project level. iModel specific permissions may also be applied at the iModel level if iModel level permissions are enabled.
Alternatively the user should be an Organization Administrator for the Organization that owns a given Project or iModel.
An Organization Administrator must have at least one of the following roles assigned in User Management: Account Administrator, Co-Administrator, or CONNECT Services Administrator. For more information about User Management please visit our Bentley Communities Licensing, Cloud, and Web Services wiki page.
Rate limits
All iTwin Platform API operations have a rate limit. For more documentation on that visit Rate limits and quotas page.
"Try it out" Limitations
When you run an Extraction with the "Try it out" function on a Mapping that was created or modified by using the "Try it out" function, you are limited to 100 extracted rows for each group. Mapping modification is any POST/DELETE/PATCH/PUT request to any endpoint with the tag "Mappings" or if the URL contains {mappingId}.