def create_property(self, model, name, description=None, property_type=PropertyType.CHAR_VALUE, default_value=None,
                        unit=None, options=None):
        if model.category != Category.MODEL:
            raise IllegalArgumentError("The model should be of category MODEL")
        if not property_type.endswith('_VALUE'):
            warnings.warn("Please use the `PropertyType` enumeration to ensure providing correct "
                          "values to the backend.", UserWarning)
            property_type = '{}_VALUE'.format(property_type.upper())
        if property_type not in PropertyType.values():
            raise IllegalArgumentError("Please provide a valid propertytype, please use one of `enums.PropertyType`. "
                                       "Got: '{}'".format(property_type))
        if property_type in (PropertyType.REFERENCE_VALUE, PropertyType.REFERENCES_VALUE) and \
                isinstance(default_value, (list, tuple)) and default_value:
            default_value = default_value[0]
        data = {
            "name": name,
            "part": model.id,
            "description": description or '',
            "property_type": property_type.upper(),
            "value": default_value,
            "unit": unit or '',
            "options": options or {}
        }
        response = self._request('POST', self._build_url('properties'),
                                 json=data)
        if response.status_code != requests.codes.created:
            raise APIError("Could not create property")
        prop = Property.create(response.json()['results'][0], client=self)
        model.properties.append(prop)
        return prop