docs: def node_transmit(node_id):
      """Transmit to another node.
  
      The sender's node id must be specified in the url.
  
      As with node.transmit() the key parameters are what and to_whom.
      However, the values these accept are more limited than for the back end
      due to the necessity of serialization.
  
      If what and to_whom are not specified they will default to None.
      Alternatively you can pass an int (e.g. '5') or a class name (e.g.
      'Info' or 'Agent'). Passing an int will get that info/node, passing
      a class name will pass the class. Note that if the class you are specifying
      is a custom class it will need to be added to the dictionary of
      known_classes in your experiment code.
  
      You may also pass the values property1, property2, property3, property4
      and property5. If passed this will fill in the relevant values of the
      transmissions created with the values you specified.
  
      For example, to transmit all infos of type Meme to the node with id 10:
      reqwest({
          url: "/node/" + my_node_id + "/transmit",
          method: 'post',
          type: 'json',
          data: {
              what: "Meme",
              to_whom: 10,
          },
      });
      """
      exp = experiment(session)
  
      what = request_parameter(parameter="what", optional=True)
      to_whom = request_parameter(parameter="to_whom", optional=True)
  
      # check the node exists
      node = models.Node.query.get(node_id)
      if node is None:
          return error_response(error_type="/node/transmit, node does not exist")
  
      # create what
      if what is not None:
          try:
              what = int(what)
              what = models.Info.get(what)
              if what is None:
                  return error_response(
                      error_type="/node/transmit POST, info does not exist",
                      participant=node.participant)
          except:
              try:
                  what = exp.known_classes[what]
              except:
                  return error_response(
                      error_type="/node/transmit POST, info does not exist",
                      participant=node.participant)
  
      # create to_whom
      if to_whom is not None:
          try:
              to_whom = int(to_whom)
              to_whom = models.Node.get(to_whom)
              if what is None:
                  return error_response(
                      error_type="/node/transmit POST, info does not exist",
                      participant=node.participant)
          except:
              try:
                  to_whom = exp.known_classes[to_whom]
              except:
                  return error_response(
                      error_type="/node/transmit POST, info does not exist",
                      participant=node.participant)
  
      # execute the request
      try:
          transmissions = node.transmit(what=what, to_whom=to_whom)
          for t in transmissions:
              assign_properties(t)
          session.commit()
          # ping the experiment
          exp.transmission_post_request(
              node=node,
              transmissions=transmissions)
          session.commit()
      except:
          return error_response(error_type="/node/transmit POST, server error",
                                participant=node.participant)
  
      # return the data
      return success_response(field="transmissions",
                              data=[t.__json__() for t in transmissions],
                              request_type="transmit")