{
  "$schema": "http://json-schema.org/draft-04/schema",
  "definitions": {
    "UserDefinedPropertyUserId": {
      "type": "object",
      "description": "The unique identifier of a User-Defined Property, identified by its name.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "UserDefined" ]
        },
        "localizedName": {
          "type": "array",
          "description": "A two-element list of the localized name parts. The first element is the name of the group the property belongs to, and the second element is the actual name of the property.",
          "items": {
            "type": "string"
          },
          "minItems": 2,
          "maxItems": 2
        }
      },
      "additionalProperties": false,
      "required": [ "type", "localizedName" ]
    },
    "BuiltInPropertyUserId": {
      "type": "object",
      "description": "The unique identifier of a Built-In Property, identified by its name.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "BuiltIn" ]
        },
        "nonLocalizedName": {
          "type": "string",
          "description": "The non-localized name of the Built-In Property."
        }
      },
      "additionalProperties": false,
      "required": [ "type", "nonLocalizedName" ]
    },
    "PropertyUserId": {
      "type": "object",
      "description": "The unique identifier of a Property, identified by its name. May represent a User-Defined or a Built-In Property.",
      "oneOf": [
        {
          "$ref": "#/definitions/UserDefinedPropertyUserId"
        },
        {
          "$ref": "#/definitions/BuiltInPropertyUserId"
        }
      ]
    },
    "PropertyUserIds": {
      "type": "array",
      "description": "A list of PropertyUserId objects.",
      "items": {
        "$ref": "#/definitions/PropertyUserId"
      }
    },
    "PropertyType": {
      "type": "string",
      "description": "The type of a property group or a property definition.",
      "enum": [
        "UserDefined",
        "BuiltIn"
      ]
    },
    "PropertyId": {
      "type": "object",
      "description": "The identifier of a property.",
      "properties": {
        "guid": {
          "$ref": "APITypes.json#/definitions/Guid"
        }
      },
      "additionalProperties": false,
      "required": [
        "guid"
      ]
    },
    "PropertyIdArrayItem": {
      "type": "object",
      "properties": {
        "propertyId": {
          "$ref": "#/definitions/PropertyId"
        }
      },
      "additionalProperties": false,
      "required": [
        "propertyId"
      ]
    },
    "PropertyIds": {
      "type": "array",
      "description": "A list of property identifiers.",
      "items": {
        "$ref": "#/definitions/PropertyIdArrayItem"
      }
    },
    "PropertyGroupId": {
      "type": "object",
      "description": "The identifier of a property group.",
      "properties": {
        "guid": {
          "$ref": "APITypes.json#/definitions/Guid"
        }
      },
      "additionalProperties": false,
      "required": [
        "guid"
      ]
    },
    "PropertyGroupIdArrayItem": {
      "type": "object",
      "properties": {
        "propertyGroupId": {
          "$ref": "#/definitions/PropertyGroupId"
        }
      },
      "additionalProperties": false,
      "required": [
        "propertyGroupId"
      ]
    },
    "PropertyGroupIds": {
      "type": "array",
      "description": "A list of property group identifiers.",
      "items": {
        "$ref": "#/definitions/PropertyGroupIdArrayItem"
      }
    },
    "PropertyIdOrError": {
      "type": "object",
      "description": "A property identifier or an error.",
      "oneOf": [
        {
          "title": "propertyId",
          "$ref": "#/definitions/PropertyIdArrayItem"
        },
        {
          "title": "error",
          "$ref": "APITypes.json#/definitions/ErrorItem"
        }
      ]
    },
    "PropertyIdsOrErrors": {
      "type": "array",
      "description": "A list of property identifiers or errors.",
      "items": {
        "$ref": "#/definitions/PropertyIdOrError"
      }
    },
    "PropertyGroup": {
      "type": "object",
      "description": "A property group.",
      "properties": {
        "propertyGroupId": {
          "$ref": "#/definitions/PropertyGroupId"
        },
        "name": {
          "type": "string",
          "description": "The property group name."
        }
      },
      "additionalProperties": false,
      "required": [
        "propertyGroupId",
        "name"
      ]
    },
    "PropertyBasicDefaultValue": {
      "type": "object",
      "properties": {
        "basicDefaultValue": {
          "$ref": "#/definitions/PropertyValue"
        }
      },
      "description": "Default value of the property in case of a basic property value (ie. not an expression).",
      "additionalProperties": false,
      "required": [
        "basicDefaultValue"
      ]
    },
    "PropertyDefaultValue" : {
      "type": "object",
      "description": "Default value of the property.",
      "oneOf": [
        {
           "$ref": "#/definitions/PropertyBasicDefaultValue"
        }
      ]
    },    
    "PropertyGroupOrError": {
      "type": "object",
      "description": "A property group or an error.",
      "oneOf": [
        {
          "title": "propertyGroup",
          "properties": {
            "propertyGroup": {
              "$ref": "#/definitions/PropertyGroup"
            }
          },
          "additionalProperties": false,
          "required": [ "propertyGroup" ]
        },
        {
          "title": "error",
          "$ref": "APITypes.json#/definitions/ErrorItem"
        }
      ]
    },
    "PropertyGroupsOrErrors": {
      "type": "array",
      "description": "A list of property groups or errors.",
      "items": {
        "$ref": "#/definitions/PropertyGroupOrError"
      }
    },
    "PropertyDefinition": {
      "type": "object",
      "description": "A property definition. The default value of a property appears if and only if it is a custom property and is not an expression type property. (This may change in the future.)",
      "properties": {
        "propertyId": {
          "$ref": "#/definitions/PropertyId"
        },
        "group": {
          "$ref": "#/definitions/PropertyGroup"
        },
        "name": {
          "type": "string",
          "description": "The localized name of the property."
        },
        "description": {
          "type": "string",
          "description": "The description of the property."
        },
        "isEditable": {
          "type": "boolean",
          "description": "Defines whether the property is editable or not."
        },
        "type": {
          "type": "string",
          "description": "Defines the type of the property's value."
        },
        "possibleEnumValues": {
          "$ref": "#/definitions/PossibleEnumValues",
          "description": "The possible enum values of the property when the property type is enumeration."
        },
        "defaultValue": {
          "$ref": "#/definitions/PropertyDefaultValue"
        }
      },
      "additionalProperties": false,
      "required": [
        "group",
        "name",
        "description",
        "isEditable",
        "type"
      ]
    },
    "PropertyDefinitionOrError": {
      "type": "object",
      "description": "A property definition or an error.",
      "oneOf": [
        {
          "title": "propertyDefinition",
          "properties": {
            "propertyDefinition": {
              "$ref": "#/definitions/PropertyDefinition"
            }
          },
          "additionalProperties": false,
          "required": [ "propertyDefinition" ]
        },
        {
          "title": "error",
          "$ref": "APITypes.json#/definitions/ErrorItem"
        }
      ]
    },
    "PropertyDefinitionsOrErrors": {
      "type": "array",
      "description": "A list of property definitions or errors.",
      "items": {
        "$ref": "#/definitions/PropertyDefinitionOrError"
      }
    },
    "NormalNumberPropertyValue": {
      "type": "object",
      "description": "A number property value containing a valid numeric value.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "number" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "number"
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalIntegerPropertyValue": {
      "type": "object",
      "description": "An integer property value containing a valid integer number.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "integer" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "integer"
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalStringPropertyValue": {
      "type": "object",
      "description": "A string property value containing a valid string.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "string" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalBooleanPropertyValue": {
      "type": "object",
      "description": "A boolean property value containing a valid boolean value.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "boolean" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "boolean"
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalLengthPropertyValue": {
      "type": "object",
      "description": "A length property value containing a real length value. The value is measured in SI (meters).",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "length" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "number"
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalAreaPropertyValue": {
      "type": "object",
      "description": "An area property value containing a real area. The value is measured in SI (square meters).",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "area" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "number"
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalVolumePropertyValue": {
      "type": "object",
      "description": "A volume property value containing a real volume. The value is measured in SI (cubic meters).",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "volume" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "number"
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalAnglePropertyValue": {
      "type": "object",
      "description": "An angle property value containing a real angle. The value is measured in SI (radians).",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "angle" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "number"
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalNumberListPropertyValue": {
      "type": "object",
      "description": "A number list property value containing numbers in an array.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "numberList" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalIntegerListPropertyValue": {
      "type": "object",
      "description": "An integer list property value containing integers in an array.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "integerList" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalStringListPropertyValue": {
      "type": "object",
      "description": "A string list property value containing strings in an array.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "stringList" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalBooleanListPropertyValue": {
      "type": "object",
      "description": "A boolean list property value containing boolean values in an array.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "booleanList" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "array",
          "items": {
            "type": "boolean"
          }
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalLengthListPropertyValue": {
      "type": "object",
      "description": "A length list property value containing length values in an array. The values are measured in SI (meters).",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "lengthList" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalAreaListPropertyValue": {
      "type": "object",
      "description": "An area list property value containing areas in an array. The values are measured in SI (square meters).",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "areaList" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalVolumeListPropertyValue": {
      "type": "object",
      "description": "A volume list property value containing volumes in an array. The values are measured in SI (cubic meters).",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "volumeList" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalAngleListPropertyValue": {
      "type": "object",
      "description": "An angle list property value containing angles in an array. The values are measured in SI (radians).",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "angleList" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "type": "array",
          "items": {
            "type": "number"
          }
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalSingleEnumPropertyValue": {
      "type": "object",
      "description": "A single enumeration property value containing the ID of the selected enum value.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "singleEnum" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "$ref": "#/definitions/EnumValueId"
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "NormalMultiEnumPropertyValue": {
      "type": "object",
      "description": "A multiple choice enumeration property value containing the IDs of the selected enum values in an array.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "multiEnum" ]
        },
        "status": {
          "type": "string",
          "enum": [ "normal" ]
        },
        "value": {
          "$ref": "#/definitions/EnumValueIds"
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status", "value" ]
    },
    "PropertyValueType": {
      "type": "string",
      "enum": [
        "number",
        "integer",
        "string",
        "boolean",
        "length",
        "area",
        "volume",
        "angle",
        "numberList",
        "integerList",
        "stringList",
        "booleanList",
        "lengthList",
        "areaList",
        "volumeList",
        "angleList",
        "singleEnum",
        "multiEnum"
      ]
    },
    "UserUndefinedPropertyValue": {
      "type": "object",
      "description": "A userUndefined value means that there is no actual number/string/etc. value, but the user deliberately set an Undefined value: this is a valid value, too.",
      "properties": {
        "type": {
          "$ref": "#/definitions/PropertyValueType"
        },
        "status": {
          "type": "string",
          "enum": [
            "userUndefined"
          ]
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status" ]
    },
    "NotAvailablePropertyValue": {
      "type": "object",
      "description": "A notAvailable value means that the property is not available for the property owner (and therefore it has no property value for it).",
      "properties": {
        "type": {
          "$ref": "#/definitions/PropertyValueType"
        },
        "status": {
          "type": "string",
          "enum": [
            "notAvailable"
          ]
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status" ]
    },
    "NotEvaluatedPropertyValue": {
      "type": "object",
      "description": "A notEvaluated value means that the property could not be evaluated for the property owner for some reason.",
      "properties": {
        "type": {
          "$ref": "#/definitions/PropertyValueType"
        },
        "status": {
          "type": "string",
          "enum": [
            "notEvaluated"
          ]
        }
      },
      "additionalProperties": false,
      "required": [ "type", "status" ]
    },
    "NormalPropertyValue": {
      "type": "object",
      "description": "A normal property value.",
      "oneOf": [
        {
          "$ref": "#/definitions/NormalNumberPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalIntegerPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalStringPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalBooleanPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalLengthPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalAreaPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalVolumePropertyValue"
        },
        {
          "$ref": "#/definitions/NormalAnglePropertyValue"
        },
        {
          "$ref": "#/definitions/NormalNumberListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalIntegerListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalStringListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalBooleanListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalLengthListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalAreaListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalVolumeListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalAngleListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalSingleEnumPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalMultiEnumPropertyValue"
        }
      ]
    },
    "NormalOrUserUndefinedPropertyValue": {
      "type": "object",
      "description": "A normal or a userUndefined property value.",
      "oneOf": [
        {
          "$ref": "#/definitions/NormalNumberPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalIntegerPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalStringPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalBooleanPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalLengthPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalAreaPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalVolumePropertyValue"
        },
        {
          "$ref": "#/definitions/NormalAnglePropertyValue"
        },
        {
          "$ref": "#/definitions/NormalNumberListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalIntegerListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalStringListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalBooleanListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalLengthListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalAreaListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalVolumeListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalAngleListPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalSingleEnumPropertyValue"
        },
        {
          "$ref": "#/definitions/NormalMultiEnumPropertyValue"
        },
        {
          "$ref": "#/definitions/UserUndefinedPropertyValue"
        }
      ]
    },
    "PropertyValue": {
      "type": "object",
      "description": "A normal, userUndefined, notAvailable or notEvaluated property value.",
      "oneOf": [
        {
          "$ref": "#/definitions/NormalOrUserUndefinedPropertyValue"
        },
        {
          "$ref": "#/definitions/NotAvailablePropertyValue"
        },
        {
          "$ref": "#/definitions/NotEvaluatedPropertyValue"
        }
      ]
    },
    "DisplayValueEnumId": {
      "type": "object",
      "description": "An enumeration value identifier using the displayed value.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "displayValue" ]
        },
        "displayValue": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "displayValue"
      ]
    },
    "NonLocalizedValueEnumId": {
      "type": "object",
      "description": "An enumeration value identifier using the nonlocalized value.",
      "properties": {
        "type": {
          "type": "string",
          "enum": [ "nonLocalizedValue" ]
        },
        "nonLocalizedValue": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": [
        "type",
        "nonLocalizedValue"
      ]
    },
    "EnumValueId": {
      "type": "object",
      "description": "The identifier of a property enumeration value.",
      "oneOf": [
        {
          "$ref": "#/definitions/DisplayValueEnumId"
        },
        {
          "$ref": "#/definitions/NonLocalizedValueEnumId"
        }
      ]
    },
    "EnumValueIds": {
      "type": "array",
      "description": "A list of enumeration identifiers.",
      "items": {
        "type": "object",
        "properties": {
          "enumValueId": {
            "$ref": "#/definitions/EnumValueId"
          }
        },
        "additionalProperties": false,
        "required": [ "enumValueId" ]
      }
    },
    "PossibleEnumValue": {
      "type": "object",
      "description": "The description of an enumeration value.",
      "properties": {
        "enumValueId": {
          "$ref": "#/definitions/EnumValueId"
        },
        "displayValue": {
          "type": "string",
          "description": "Displayed value of the enumeration."
        },
        "nonLocalizedValue": {
          "type": "string",
          "description": "Nonlocalized value of the enumeration if there is one."
        }
      },
      "additionalProperties": false,
      "required": [
        "enumValueId",
        "displayValue"
      ]
    },
    "PossibleEnumValuesArrayItem": {
      "type": "object",
      "properties": {
        "enumValue": {
          "$ref": "#/definitions/PossibleEnumValue"
        }
      },
      "additionalProperties": false,
      "required": [
        "enumValue"
      ]
    },
    "PossibleEnumValues": {
      "type": "array",
      "description": "A list of enumeration values.",
      "items": {
        "$ref": "#/definitions/PossibleEnumValuesArrayItem"
      },
      "additionalProperties": false
    },
    "PropertyValueOrErrorItem": {
      "type": "object",
      "description": "A property value or an error",
      "oneOf": [
        {
          "title": "propertyValue",
          "properties": {
            "propertyValue": {
              "$ref": "#/definitions/PropertyValue"
            }
          },
          "additionalProperties": false,
          "required": [ "propertyValue" ]
        },
        {
          "title": "error",
          "$ref": "APITypes.json#/definitions/ErrorItem"
        }
      ]
    },
    "PropertyValues": {
      "type": "array",
      "description": "A list of property values.",
      "items": {
        "$ref": "#/definitions/PropertyValueOrErrorItem"
      }
    },
    "PropertyValuesOrError": {
      "type": "object",
      "description": "A list of property values or an error.",
      "oneOf": [
        {
          "title": "propertyValues",
          "properties": {
            "propertyValues": {
              "$ref": "#/definitions/PropertyValues"
            }
          },
          "additionalProperties": false,
          "required": [ "propertyValues" ]
        },
        {
          "title": "error",
          "$ref": "APITypes.json#/definitions/ErrorItem"
        }
      ]
    },
    "PropertyValuesOrErrorArray": {
      "type": "array",
      "description": "A list of property value lists.",
      "items": {
        "$ref": "#/definitions/PropertyValuesOrError"
      }
    },
    "ElementPropertyValue": {
      "type": "object",
      "description": "A property value with the identifiers of the property and its owner element.",
      "properties": {
        "elementId": {
          "$ref": "APITypes.json#/definitions/ElementId"
        },
        "propertyId": {
          "$ref": "#/definitions/PropertyId"
        },
        "propertyValue": {
          "$ref": "#/definitions/NormalOrUserUndefinedPropertyValue"
        }
      },
      "additionalProperties": false,
      "required": [
        "elementId",
        "propertyId",
        "propertyValue"
      ]
    },
    "ElementPropertyValues": {
      "type": "array",
      "description": "A list of element property values.",
      "items": {
        "$ref": "#/definitions/ElementPropertyValue"
      }
    },
    "PropertyIdsOfElement": {
      "type": "object",
      "description": "A list property identifiers of an owner element.",
      "properties": {
        "elementId": {
          "$ref": "APITypes.json#/definitions/ElementId"
        },
        "propertyIds": {
          "$ref": "#/definitions/PropertyIds"
        }
      },
      "additionalProperties": false,
      "required": [
        "elementId",
        "propertyIds"
      ]
    },
    "PropertyIdsOfElementOrError": {
      "type": "object",
      "description": "A list property identifiers of an owner element or an error.",
      "oneOf": [
        {
          "title": "propertyIdsOfElement",
          "properties": {
            "propertyIdsOfElement": {
              "$ref": "#/definitions/PropertyIdsOfElement"
            }
          },
          "additionalProperties": false,
          "required": [ "propertyIdsOfElement" ]
        },
        {
          "title": "error",
          "$ref": "APITypes.json#/definitions/ErrorItem"
        }
      ]
    },
    "PropertyIdsOfElementOrErrorArray": {
      "type": "array",
      "description": "A list of property identifiers of elements or errors.",
      "items": {
        "$ref": "#/definitions/PropertyIdsOfElementOrError"
      }
    }
  }
}
