def build_request(**args)
      params = {}

      self.class.parameter_validations.each do |validation|
        validation.call(args, params)
      end

      if self.class.parameter_formatter
        params = self.class.parameter_formatter.call(params)
      else
        params.except!(*self.class.parameters_to_filter)
      end

      request = Apidiesel::Request.new(action: self, action_arguments: args, parameters: params)
      request.url = build_url(args, request)

      request
    end
def build_request(**args)
      params = {}

      self.class.parameter_validations.each do |validation|
        validation.call(args, params)
      end

      if self.class.parameter_formatter
        params = self.class.parameter_formatter.call(params)
      else
        params.except!(*self.class.parameters_to_filter)
      end

      request = Apidiesel::Request.new(action: self, action_arguments: args, parameters: params)
      request.url = build_url(args, request)

      request
    end
Performs the action-specific input validations on `*args` according to the actions
 `expects` block, executes the API request and prepares the data according to the
 actions `responds_with` block.

 @option **args see specific, non-abstract `Apidiesel::Action`
 @return [Apidiesel::Request]