code: async def save_xy(data):
      
      global session
      valid_points = list(session.points.keys())
      point = data.get('point')
      if point not in valid_points:
          message = 'point must be one of {}'.format(valid_points)
          status = 400
      elif not session.current_mount:
          message = "Mount must be set before calibrating"
          status = 400
      else:
          if not feature_flags.use_protocol_api_v2():
              mount = 'Z' if session.current_mount == 'left' else 'A'
              x, y, _ = position(mount, session.adapter)
              if session.pipettes[session.current_mount].channels != 1:
                  # See note in `move`
                  y = y - pipette_config.Y_OFFSET_MULTI
              if session.current_mount == 'left':
                  dx, dy, _ = session.adapter.config.mount_offset
                  x = x + dx
                  y = y + dy
          else:
              x, y, _ = position(
                  session.current_mount, session.adapter, session.cp)
  
          session.points[point] = (x, y)
          message = "Saved point {} value: {}".format(
              point, session.points[point])
          status = 200
      return web.json_response({'message': message}, status=status)
docs: Save the current XY values for the calibration data
  
      :param data: Information obtained from a POST request.
      The content type is application/json.
      The correct packet form should be as follows:
      {
        'token': UUID token from current session start
        'command': 'save xy'
        'point': a string ID ['1', '2', or '3'] of the calibration point to save
      }