<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def run_jog(data):
 """ Allow the user to jog the selected pipette around the deck map :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': 'jog' 'axis': The current axis you wish to move 'direction': The direction you wish to move (+ or -) 'step': The increment you wish to move } :return: The position you are moving to based on axis, direction, step given by the user. """

    axis = data.get('axis')
    direction = data.get('direction')
    step = data.get('step')

    if axis not in ('x', 'y', 'z'):
        message = '"axis" must be "x", "y", or "z"'
        status = 400
    elif direction not in (-1, 1):
        message = '"direction" must be -1 or 1'
        status = 400
    elif step is None:
        message = '"step" must be specified'
        status = 400
    else:
        position = jog(
            axis,
            direction,
            step,
            session.adapter,
            session.current_mount,
            session.cp)
        message = 'Jogged to {}'.format(position)
        status = 200

    return web.json_response({'message': message}, status=status)