anchor.diff:  
   % Private stuff
   
  +validate_request(Req) ->
  +    { Command, NodeNames, _RunTimeout, _Quorum } = parse_post_body(Req),
  +    validate_command(Command),
  +    validate_nodes(NodeNames).
  +
  +validate_command(Command) ->
  +    case Command of
  +        undefined ->
  +            throw(bad_command);
  +        _ ->
  +            true
  +    end.
  +
  +validate_nodes(Nodes) ->
  +    if
  +        length(Nodes) =:= 0 -> throw(no_nodes);
  +        true -> true
  +    end.
  +
  +
   parse_post_body(Req) ->
       Body = wrq:req_body(Req),
       JobJson = jiffy:decode(Body),
  
positive.code: % This creates the job record
  create_path(Req, #config_state{organization_guid = OrgId} = State) ->
      {Command, NodeNames, RunTimeout, Quorum} = parse_post_body(Req),
      RunTimeout2 = case RunTimeout of
          undefined -> envy:get(pushy, default_running_timeout, 3600, integer);
          Value -> Value
  
negative.code: %% then go to localhost:WXYZ/wmtrace
  
  malformed_request(Req, State) ->
      try
          validate_request(Req),
          pushy_wm_base:malformed_request(Req, State)
      catch
          throw:bad_command ->
              Msg = <<"invalid command supplied">>,
              Req1 = wrq:set_resp_body(jiffy:encode({[{<<"error">>, Msg}]}), Req),
              {{halt, 400}, Req1, State};
          throw:no_nodes ->
              Msg = <<"at least one node must be supplied">>,
              Req1 = wrq:set_resp_body(jiffy:encode({[{<<"error">>, Msg}]}), Req),
              {{halt, 400}, Req1, State}
      end.
  
  is_authorized(Req, State) ->
      pushy_wm_base:is_authorized(Req, State).
  