def get_type_properties(self, property_obj, name, additional_prop=False):
        """ Get internal properties of property (extended in schema)

        :param dict property_obj: raw property object
        :param str name: name of property
        :param bool additional_prop: recursion's param
        :return: Type, format and internal properties of property
        :rtype: tuple(str, str, dict)
        """
        property_type = property_obj.get('type', 'object')
        property_format = property_obj.get('format')
        property_dict = {}

        if property_type in ['object', 'array']:
            schema_type = SchemaTypes.MAPPED if additional_prop else SchemaTypes.INLINE
            schema_id = self._get_object_schema_id(property_obj, schema_type)
            if not ('$ref' in property_obj or self.storage.get(schema_id)):
                _schema = self.storage.create_schema(
                    property_obj, name, schema_type, root=self.root)
                self._after_create_schema(_schema)
            property_type = schema_id

        property_dict['default'] = property_obj.get('default')
        property_dict['maximum'] = property_obj.get('maximum')
        property_dict['exclusive_maximum'] = property_obj.get('exclusiveMaximum')
        property_dict['minimum'] = property_obj.get('minimum')
        property_dict['exclusive_minimum'] = property_obj.get('exclusiveMinimum')
        property_dict['max_length'] = property_obj.get('maxLength')
        property_dict['min_length'] = property_obj.get('minLength')

        #TODO: fixme. remove ugly convert. add property template renderer instead
        property_dict['enum'] = convert(property_obj.get('enum'))

        #TODO: fixme. cleanup empty properties. add configurable filter for properties instead
        property_dict = {k: v for k, v in property_dict.items() if v}

        return property_type, property_format, property_dict