code: def create_node(participant_id):
      
      exp = experiment(session)
  
      # Get the participant.
      try:
          participant = models.Participant.\
              query.filter_by(id=participant_id).one()
      except NoResultFound:
          return error_response(error_type="/node POST no participant found",
                                status=403)
  
      # replace any duplicate assignments
      check_for_duplicate_assignments(participant)
  
      # Make sure the participant status is working
      if participant.status != "working":
          error_type = "/node POST, status = {}".format(participant.status)
          return error_response(error_type=error_type,
                                participant=participant)
  
      try:
          # execute the request
          network = exp.get_network_for_participant(participant=participant)
  
          if network is None:
              return Response(dumps({"status": "error"}), status=403)
  
          node = exp.create_node(
              participant=participant,
              network=network)
  
          assign_properties(node)
  
          exp.add_node_to_network(
              node=node,
              network=network)
  
          session.commit()
  
          # ping the experiment
          exp.node_post_request(participant=participant, node=node)
          session.commit()
      except:
          return error_response(error_type="/node POST server error",
                                status=403,
                                participant=participant)
  
      # return the data
      return success_response(field="node",
                              data=node.__json__(),
                              request_type="/node POST")
docs: Send a POST request to the node table.
  
      This makes a new node for the participant, it calls:
          1. exp.get_network_for_participant
          2. exp.create_node
          3. exp.add_node_to_network
          4. exp.node_post_request