code: def create_proxy_model(self, model, parent, name, multiplicity='ZERO_MANY', **kwargs):
          
          if model.category != Category.MODEL:
              raise IllegalArgumentError("The model should be of category MODEL")
          if parent.category != Category.MODEL:
              raise IllegalArgumentError("The parent should be of category MODEL")
  
          data = {
              "name": name,
              "model": model.id,
              "parent": parent.id,
              "multiplicity": multiplicity
          }
  
          return self._create_part(action='create_proxy_model', data=data, **kwargs)
docs: Add this model as a proxy to another parent model.
  
          This will add a model as a proxy model to another parent model. It ensure that it will copy the
          whole sub-assembly to the 'parent' model.
  
          In order to prevent the backend from updating the frontend you may add `suppress_kevents=True` as
          additional keyword=value argument to this method. This will improve performance of the backend
          against a trade-off that someone looking at the frontend won't notice any changes unless the page
          is refreshed.
  
          :param model: the catalog proxy model the new proxied model should be based upon
          :type model: :class:`models.Part`
          :param parent: parent part instance
          :type parent: :class:`models.Part`
          :param name: new part name
          :type name: basestring
          :param multiplicity: choose between ZERO_ONE, ONE, ZERO_MANY, ONE_MANY or M_N, default is `ZERO_MANY`
          :type multiplicity: basestring
          :param kwargs: (optional) additional keyword=value arguments
          :type kwargs: dict
          :return: the new proxy :class:`models.Part` with category `MODEL`
          :raises IllegalArgumentError: When the provided arguments are incorrect
          :raises APIError: if the `Part` could not be created