def copy_or_move(action, destination, options = {})
      params = {}.tap do |param|
        param[:to]              = destination
        param[:failFast]        = 1 if options[:fail_fast]
        param[:suppressLayouts] = 1 if options[:suppress_layouts]
        param[:dry]             = 1 if options[:dry_run]
      end

      endpoint = File.join("/api", action.to_s, relative_path) + "?#{to_query_string_parameters(params)}"

      client.post(endpoint, {})
    end
def copy_or_move(action, destination, options = {})
      params = {}.tap do |param|
        param[:to]              = destination
        param[:failFast]        = 1 if options[:fail_fast]
        param[:suppressLayouts] = 1 if options[:suppress_layouts]
        param[:dry]             = 1 if options[:dry_run]
      end

      endpoint = File.join("/api", action.to_s, relative_path) + "?#{to_query_string_parameters(params)}"

      client.post(endpoint, {})
    end
Copy or move current artifact to a new destination.

 @example Move the current artifact to +ext-releases-local+
   artifact.move(to: '/ext-releaes-local/org/acme')
 @example Copy the current artifact to +ext-releases-local+
   artifact.move(to: '/ext-releaes-local/org/acme')

 @param [Symbol] action
   the action (+:move+ or +:copy+)
 @param [String] destination
   the server-side destination to move or copy the artifact
 @param [Hash] options
   the list of options to pass

 @option options [Boolean] :fail_fast (default: +false+)
   fail on the first failure
 @option options [Boolean] :suppress_layouts (default: +false+)
   suppress cross-layout module path translation during copying or moving
 @option options [Boolean] :dry_run (default: +false+)
   pretend to do the copy or move

 @return [Hash]
   the parsed JSON response from the server