code: def create(self, data, **kwargs):
          
          self._check_missing_create_attrs(data)
          files = {}
  
          # We get the attributes that need some special transformation
          types = getattr(self, '_types', {})
          if types:
              # Duplicate data to avoid messing with what the user sent us
              data = data.copy()
              for attr_name, type_cls in types.items():
                  if attr_name in data.keys():
                      type_obj = type_cls(data[attr_name])
  
                      # if the type if FileAttribute we need to pass the data as
                      # file
                      if issubclass(type_cls, g_types.FileAttribute):
                          k = type_obj.get_file_name(attr_name)
                          files[attr_name] = (k, data.pop(attr_name))
                      else:
                          data[attr_name] = type_obj.get_for_api()
  
          # Handle specific URL for creation
          path = kwargs.pop('path', self.path)
          server_data = self.gitlab.http_post(path, post_data=data, files=files,
                                              **kwargs)
          return self._obj_cls(self, server_data)
docs: Create a new object.
  
          Args:
              data (dict): parameters to send to the server to create the
                           resource
              **kwargs: Extra options to send to the server (e.g. sudo)
  
          Returns:
              RESTObject: a new instance of the managed object class built with
                  the data sent by the server
  
          Raises:
              GitlabAuthenticationError: If authentication is not correct
              GitlabCreateError: If the server cannot perform the request