Skip to main content

Enums

Enums define a fixed set of allowed values for an attribute. Each enum value has a numeric key, a name, and an optional description.

List Enums

Retrieve all enums:

query getCkEnums($after: String, $first: Int, $ckModelIds: [String]) {
constructionKit {
enums(after: $after, first: $first, ckModelIds: $ckModelIds) {
totalCount
items {
ckEnumId {
fullName
semanticVersionedFullName
}
useFlags
}
}
}
}

Response

{
"data": {
"constructionKit": {
"enums": {
"totalCount": 8,
"items": [
{
"ckEnumId": {
"fullName": "Industry.Energy-1.0.0/EnergyMeterState-1",
"semanticVersionedFullName": "Industry.Energy/EnergyMeterState"
},
"useFlags": false
},
{
"ckEnumId": {
"fullName": "EnergyCommunity-1.0.0/CustomerState-1",
"semanticVersionedFullName": "EnergyCommunity/CustomerState"
},
"useFlags": false
}
]
}
}
}
}

Filter by Model

Retrieve enums from specific models:

query {
constructionKit {
enums(ckModelIds: ["Industry.Energy-1"]) {
totalCount
items {
ckEnumId {
fullName
}
useFlags
}
}
}
}

Enum Details

Retrieve detailed information about a specific enum including its values:

query getCkEnumDetails($ckId: String) {
constructionKit {
enums(ckId: $ckId) {
items {
ckEnumId {
fullName
semanticVersionedFullName
}
useFlags
isExtensible
values {
key
name
description
isExtension
}
}
}
}
}

Variables:

{
"ckId": "Industry.Energy-1.0.0/EnergyMeterState-1"
}

Response

{
"data": {
"constructionKit": {
"enums": {
"items": [
{
"ckEnumId": {
"fullName": "Industry.Energy-1.0.0/EnergyMeterState-1",
"semanticVersionedFullName": "Industry.Energy/EnergyMeterState"
},
"useFlags": false,
"isExtensible": false,
"values": [
{
"key": 0,
"name": "OFF",
"description": "Meter is turned off",
"isExtension": false
},
{
"key": 1,
"name": "ON",
"description": "Meter is operational",
"isExtension": false
},
{
"key": 2,
"name": "STANDBY",
"description": "Meter is in standby mode",
"isExtension": false
},
{
"key": 3,
"name": "ERROR",
"description": "Meter has an error",
"isExtension": false
}
]
}
]
}
}
}
}

Flag Enums

When useFlags is true, the enum values can be combined as bit flags:

query {
constructionKit {
enums(ckId: "System-1.0.3/Permissions-1") {
items {
ckEnumId {
fullName
}
useFlags
values {
key
name
description
}
}
}
}
}

Response

{
"data": {
"constructionKit": {
"enums": {
"items": [
{
"ckEnumId": {
"fullName": "System-1.0.3/Permissions-1"
},
"useFlags": true,
"values": [
{ "key": 1, "name": "READ", "description": "Read permission" },
{ "key": 2, "name": "WRITE", "description": "Write permission" },
{ "key": 4, "name": "DELETE", "description": "Delete permission" },
{ "key": 8, "name": "ADMIN", "description": "Admin permission" }
]
}
]
}
}
}
}

With flag enums, a value of 3 represents READ | WRITE (1 + 2).

Extensible Enums

When isExtensible is true, additional values can be added at runtime. Extended values have isExtension: true:

{
"values": [
{ "key": 0, "name": "STANDARD", "description": "Standard value", "isExtension": false },
{ "key": 100, "name": "CUSTOM", "description": "Custom extension", "isExtension": true }
]
}

Enum Fields

CkEnum

FieldTypeDescription
ckEnumIdCkEnumIdThe enum identifier
useFlagsBooleanWhether values can be combined as bit flags
isExtensibleBooleanWhether additional values can be added at runtime
values[CkEnumValue]The defined enum values

CkEnumValue

FieldTypeDescription
keyIntNumeric value (stored in database)
nameStringDisplay name
descriptionStringDescription of the value
isExtensionBooleanWhether this is a runtime extension