=begin
#Pulp 3 API

#Fetch, Upload, Organize, and Distribute Software Packages

The version of the OpenAPI document: v3
Contact: pulp-list@redhat.com
Generated by: https://openapi-generator.tech
OpenAPI Generator version: 4.3.1

=end

require 'cgi'

module PulpcoreClient
  class TasksApi
    attr_accessor :api_client

    def initialize(api_client = ApiClient.default)
      @api_client = api_client
    end
    # Add a role for this object to users/groups.
    # @param task_href [String] 
    # @param nested_role [NestedRole] 
    # @param [Hash] opts the optional parameters
    # @return [NestedRoleResponse]
    def add_role(task_href, nested_role, opts = {})
      data, _status_code, _headers = add_role_with_http_info(task_href, nested_role, opts)
      data
    end

    # Add a role for this object to users/groups.
    # @param task_href [String] 
    # @param nested_role [NestedRole] 
    # @param [Hash] opts the optional parameters
    # @return [Array<(NestedRoleResponse, Integer, Hash)>] NestedRoleResponse data, response status code and response headers
    def add_role_with_http_info(task_href, nested_role, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: TasksApi.add_role ...'
      end
      # verify the required parameter 'task_href' is set
      if @api_client.config.client_side_validation && task_href.nil?
        fail ArgumentError, "Missing the required parameter 'task_href' when calling TasksApi.add_role"
      end
      # verify the required parameter 'nested_role' is set
      if @api_client.config.client_side_validation && nested_role.nil?
        fail ArgumentError, "Missing the required parameter 'nested_role' when calling TasksApi.add_role"
      end
      # resource path
      local_var_path = '{task_href}add_role/'.sub('{' + 'task_href' + '}', CGI.escape(task_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json', 'application/x-www-form-urlencoded', 'multipart/form-data'])

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:body] || @api_client.object_to_http_body(nested_role) 

      # return_type
      return_type = opts[:return_type] || 'NestedRoleResponse' 

      # auth_names
      auth_names = opts[:auth_names] || ['basicAuth']

      new_options = opts.merge(
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: TasksApi#add_role\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Delete a task
    # A customized named ModelViewSet that knows how to register itself with the Pulp API router.  This viewset is discoverable by its name. \"Normal\" Django Models and Master/Detail models are supported by the ``register_with`` method.  Attributes:     lookup_field (str): The name of the field by which an object should be looked up, in         addition to any parent lookups if this ViewSet is nested. Defaults to 'pk'     endpoint_name (str): The name of the final path segment that should identify the ViewSet's         collection endpoint.     nest_prefix (str): Optional prefix under which this ViewSet should be nested. This must         correspond to the \"parent_prefix\" of a router with rest_framework_nested.NestedMixin.         None indicates this ViewSet should not be nested.     parent_lookup_kwargs (dict): Optional mapping of key names that would appear in self.kwargs         to django model filter expressions that can be used with the corresponding value from         self.kwargs, used only by a nested ViewSet to filter based on the parent object's         identity.     schema (DefaultSchema): The schema class to use by default in a viewset.
    # @param task_href [String] 
    # @param [Hash] opts the optional parameters
    # @return [nil]
    def delete(task_href, opts = {})
      delete_with_http_info(task_href, opts)
      nil
    end

    # Delete a task
    # A customized named ModelViewSet that knows how to register itself with the Pulp API router.  This viewset is discoverable by its name. \&quot;Normal\&quot; Django Models and Master/Detail models are supported by the &#x60;&#x60;register_with&#x60;&#x60; method.  Attributes:     lookup_field (str): The name of the field by which an object should be looked up, in         addition to any parent lookups if this ViewSet is nested. Defaults to &#39;pk&#39;     endpoint_name (str): The name of the final path segment that should identify the ViewSet&#39;s         collection endpoint.     nest_prefix (str): Optional prefix under which this ViewSet should be nested. This must         correspond to the \&quot;parent_prefix\&quot; of a router with rest_framework_nested.NestedMixin.         None indicates this ViewSet should not be nested.     parent_lookup_kwargs (dict): Optional mapping of key names that would appear in self.kwargs         to django model filter expressions that can be used with the corresponding value from         self.kwargs, used only by a nested ViewSet to filter based on the parent object&#39;s         identity.     schema (DefaultSchema): The schema class to use by default in a viewset.
    # @param task_href [String] 
    # @param [Hash] opts the optional parameters
    # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
    def delete_with_http_info(task_href, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: TasksApi.delete ...'
      end
      # verify the required parameter 'task_href' is set
      if @api_client.config.client_side_validation && task_href.nil?
        fail ArgumentError, "Missing the required parameter 'task_href' when calling TasksApi.delete"
      end
      # resource path
      local_var_path = '{task_href}'.sub('{' + 'task_href' + '}', CGI.escape(task_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:body] 

      # return_type
      return_type = opts[:return_type] 

      # auth_names
      auth_names = opts[:auth_names] || ['basicAuth']

      new_options = opts.merge(
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: TasksApi#delete\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # List tasks
    # A customized named ModelViewSet that knows how to register itself with the Pulp API router.  This viewset is discoverable by its name. \"Normal\" Django Models and Master/Detail models are supported by the ``register_with`` method.  Attributes:     lookup_field (str): The name of the field by which an object should be looked up, in         addition to any parent lookups if this ViewSet is nested. Defaults to 'pk'     endpoint_name (str): The name of the final path segment that should identify the ViewSet's         collection endpoint.     nest_prefix (str): Optional prefix under which this ViewSet should be nested. This must         correspond to the \"parent_prefix\" of a router with rest_framework_nested.NestedMixin.         None indicates this ViewSet should not be nested.     parent_lookup_kwargs (dict): Optional mapping of key names that would appear in self.kwargs         to django model filter expressions that can be used with the corresponding value from         self.kwargs, used only by a nested ViewSet to filter based on the parent object's         identity.     schema (DefaultSchema): The schema class to use by default in a viewset.
    # @param [Hash] opts the optional parameters
    # @option opts [String] :child_tasks Filter results where child_tasks matches value
    # @option opts [String] :created_resources 
    # @option opts [String] :exclusive_resources 
    # @option opts [Array<String>] :exclusive_resources__in Multiple values may be separated by commas.
    # @option opts [DateTime] :finished_at Filter results where finished_at matches value
    # @option opts [DateTime] :finished_at__gt Filter results where finished_at is greater than value
    # @option opts [DateTime] :finished_at__gte Filter results where finished_at is greater than or equal to value
    # @option opts [DateTime] :finished_at__lt Filter results where finished_at is less than value
    # @option opts [DateTime] :finished_at__lte Filter results where finished_at is less than or equal to value
    # @option opts [Array<DateTime>] :finished_at__range Filter results where finished_at is between two comma separated values
    # @option opts [Integer] :limit Number of results to return per page.
    # @option opts [String] :logging_cid Filter results where logging_cid matches value
    # @option opts [String] :logging_cid__contains Filter results where logging_cid contains value
    # @option opts [String] :name Filter results where name matches value
    # @option opts [String] :name__contains Filter results where name contains value
    # @option opts [Array<String>] :name__in Filter results where name is in a comma-separated list of values
    # @option opts [Integer] :offset The initial index from which to return the results.
    # @option opts [Array<String>] :ordering Ordering  * &#x60;pulp_id&#x60; - Pulp id * &#x60;-pulp_id&#x60; - Pulp id (descending) * &#x60;pulp_created&#x60; - Pulp created * &#x60;-pulp_created&#x60; - Pulp created (descending) * &#x60;pulp_last_updated&#x60; - Pulp last updated * &#x60;-pulp_last_updated&#x60; - Pulp last updated (descending) * &#x60;state&#x60; - State * &#x60;-state&#x60; - State (descending) * &#x60;name&#x60; - Name * &#x60;-name&#x60; - Name (descending) * &#x60;logging_cid&#x60; - Logging cid * &#x60;-logging_cid&#x60; - Logging cid (descending) * &#x60;started_at&#x60; - Started at * &#x60;-started_at&#x60; - Started at (descending) * &#x60;finished_at&#x60; - Finished at * &#x60;-finished_at&#x60; - Finished at (descending) * &#x60;error&#x60; - Error * &#x60;-error&#x60; - Error (descending) * &#x60;args&#x60; - Args * &#x60;-args&#x60; - Args (descending) * &#x60;kwargs&#x60; - Kwargs * &#x60;-kwargs&#x60; - Kwargs (descending) * &#x60;reserved_resources_record&#x60; - Reserved resources record * &#x60;-reserved_resources_record&#x60; - Reserved resources record (descending) * &#x60;pk&#x60; - Pk * &#x60;-pk&#x60; - Pk (descending)
    # @option opts [String] :parent_task Filter results where parent_task matches value
    # @option opts [Array<String>] :pulp_href__in Multiple values may be separated by commas.
    # @option opts [Array<String>] :pulp_id__in Multiple values may be separated by commas.
    # @option opts [String] :reserved_resources 
    # @option opts [Array<String>] :reserved_resources__in Multiple values may be separated by commas.
    # @option opts [Array<String>] :reserved_resources_record 
    # @option opts [String] :shared_resources 
    # @option opts [Array<String>] :shared_resources__in Multiple values may be separated by commas.
    # @option opts [DateTime] :started_at Filter results where started_at matches value
    # @option opts [DateTime] :started_at__gt Filter results where started_at is greater than value
    # @option opts [DateTime] :started_at__gte Filter results where started_at is greater than or equal to value
    # @option opts [DateTime] :started_at__lt Filter results where started_at is less than value
    # @option opts [DateTime] :started_at__lte Filter results where started_at is less than or equal to value
    # @option opts [Array<DateTime>] :started_at__range Filter results where started_at is between two comma separated values
    # @option opts [String] :state Filter results where state matches value  * &#x60;waiting&#x60; - Waiting * &#x60;skipped&#x60; - Skipped * &#x60;running&#x60; - Running * &#x60;completed&#x60; - Completed * &#x60;failed&#x60; - Failed * &#x60;canceled&#x60; - Canceled * &#x60;canceling&#x60; - Canceling
    # @option opts [Array<String>] :state__in Filter results where state is in a comma-separated list of values
    # @option opts [String] :task_group Filter results where task_group matches value
    # @option opts [String] :worker Filter results where worker matches value
    # @option opts [Array<String>] :worker__in Filter results where worker is in a comma-separated list of values
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [PaginatedTaskResponseList]
    def list(opts = {})
      data, _status_code, _headers = list_with_http_info(opts)
      data
    end

    # List tasks
    # A customized named ModelViewSet that knows how to register itself with the Pulp API router.  This viewset is discoverable by its name. \&quot;Normal\&quot; Django Models and Master/Detail models are supported by the &#x60;&#x60;register_with&#x60;&#x60; method.  Attributes:     lookup_field (str): The name of the field by which an object should be looked up, in         addition to any parent lookups if this ViewSet is nested. Defaults to &#39;pk&#39;     endpoint_name (str): The name of the final path segment that should identify the ViewSet&#39;s         collection endpoint.     nest_prefix (str): Optional prefix under which this ViewSet should be nested. This must         correspond to the \&quot;parent_prefix\&quot; of a router with rest_framework_nested.NestedMixin.         None indicates this ViewSet should not be nested.     parent_lookup_kwargs (dict): Optional mapping of key names that would appear in self.kwargs         to django model filter expressions that can be used with the corresponding value from         self.kwargs, used only by a nested ViewSet to filter based on the parent object&#39;s         identity.     schema (DefaultSchema): The schema class to use by default in a viewset.
    # @param [Hash] opts the optional parameters
    # @option opts [String] :child_tasks Filter results where child_tasks matches value
    # @option opts [String] :created_resources 
    # @option opts [String] :exclusive_resources 
    # @option opts [Array<String>] :exclusive_resources__in Multiple values may be separated by commas.
    # @option opts [DateTime] :finished_at Filter results where finished_at matches value
    # @option opts [DateTime] :finished_at__gt Filter results where finished_at is greater than value
    # @option opts [DateTime] :finished_at__gte Filter results where finished_at is greater than or equal to value
    # @option opts [DateTime] :finished_at__lt Filter results where finished_at is less than value
    # @option opts [DateTime] :finished_at__lte Filter results where finished_at is less than or equal to value
    # @option opts [Array<DateTime>] :finished_at__range Filter results where finished_at is between two comma separated values
    # @option opts [Integer] :limit Number of results to return per page.
    # @option opts [String] :logging_cid Filter results where logging_cid matches value
    # @option opts [String] :logging_cid__contains Filter results where logging_cid contains value
    # @option opts [String] :name Filter results where name matches value
    # @option opts [String] :name__contains Filter results where name contains value
    # @option opts [Array<String>] :name__in Filter results where name is in a comma-separated list of values
    # @option opts [Integer] :offset The initial index from which to return the results.
    # @option opts [Array<String>] :ordering Ordering  * &#x60;pulp_id&#x60; - Pulp id * &#x60;-pulp_id&#x60; - Pulp id (descending) * &#x60;pulp_created&#x60; - Pulp created * &#x60;-pulp_created&#x60; - Pulp created (descending) * &#x60;pulp_last_updated&#x60; - Pulp last updated * &#x60;-pulp_last_updated&#x60; - Pulp last updated (descending) * &#x60;state&#x60; - State * &#x60;-state&#x60; - State (descending) * &#x60;name&#x60; - Name * &#x60;-name&#x60; - Name (descending) * &#x60;logging_cid&#x60; - Logging cid * &#x60;-logging_cid&#x60; - Logging cid (descending) * &#x60;started_at&#x60; - Started at * &#x60;-started_at&#x60; - Started at (descending) * &#x60;finished_at&#x60; - Finished at * &#x60;-finished_at&#x60; - Finished at (descending) * &#x60;error&#x60; - Error * &#x60;-error&#x60; - Error (descending) * &#x60;args&#x60; - Args * &#x60;-args&#x60; - Args (descending) * &#x60;kwargs&#x60; - Kwargs * &#x60;-kwargs&#x60; - Kwargs (descending) * &#x60;reserved_resources_record&#x60; - Reserved resources record * &#x60;-reserved_resources_record&#x60; - Reserved resources record (descending) * &#x60;pk&#x60; - Pk * &#x60;-pk&#x60; - Pk (descending)
    # @option opts [String] :parent_task Filter results where parent_task matches value
    # @option opts [Array<String>] :pulp_href__in Multiple values may be separated by commas.
    # @option opts [Array<String>] :pulp_id__in Multiple values may be separated by commas.
    # @option opts [String] :reserved_resources 
    # @option opts [Array<String>] :reserved_resources__in Multiple values may be separated by commas.
    # @option opts [Array<String>] :reserved_resources_record 
    # @option opts [String] :shared_resources 
    # @option opts [Array<String>] :shared_resources__in Multiple values may be separated by commas.
    # @option opts [DateTime] :started_at Filter results where started_at matches value
    # @option opts [DateTime] :started_at__gt Filter results where started_at is greater than value
    # @option opts [DateTime] :started_at__gte Filter results where started_at is greater than or equal to value
    # @option opts [DateTime] :started_at__lt Filter results where started_at is less than value
    # @option opts [DateTime] :started_at__lte Filter results where started_at is less than or equal to value
    # @option opts [Array<DateTime>] :started_at__range Filter results where started_at is between two comma separated values
    # @option opts [String] :state Filter results where state matches value  * &#x60;waiting&#x60; - Waiting * &#x60;skipped&#x60; - Skipped * &#x60;running&#x60; - Running * &#x60;completed&#x60; - Completed * &#x60;failed&#x60; - Failed * &#x60;canceled&#x60; - Canceled * &#x60;canceling&#x60; - Canceling
    # @option opts [Array<String>] :state__in Filter results where state is in a comma-separated list of values
    # @option opts [String] :task_group Filter results where task_group matches value
    # @option opts [String] :worker Filter results where worker matches value
    # @option opts [Array<String>] :worker__in Filter results where worker is in a comma-separated list of values
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [Array<(PaginatedTaskResponseList, Integer, Hash)>] PaginatedTaskResponseList data, response status code and response headers
    def list_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: TasksApi.list ...'
      end
      allowable_values = ["-args", "-error", "-finished_at", "-kwargs", "-logging_cid", "-name", "-pk", "-pulp_created", "-pulp_id", "-pulp_last_updated", "-reserved_resources_record", "-started_at", "-state", "args", "error", "finished_at", "kwargs", "logging_cid", "name", "pk", "pulp_created", "pulp_id", "pulp_last_updated", "reserved_resources_record", "started_at", "state"]
      if @api_client.config.client_side_validation && opts[:'ordering'] && !opts[:'ordering'].all? { |item| allowable_values.include?(item) }
        fail ArgumentError, "invalid value for \"ordering\", must include one of #{allowable_values}"
      end
      allowable_values = ["canceled", "canceling", "completed", "failed", "running", "skipped", "waiting"]
      if @api_client.config.client_side_validation && opts[:'state'] && !allowable_values.include?(opts[:'state'])
        fail ArgumentError, "invalid value for \"state\", must be one of #{allowable_values}"
      end
      # resource path
      local_var_path = '/pulp/api/v3/tasks/'

      # query parameters
      query_params = opts[:query_params] || {}
      query_params[:'child_tasks'] = opts[:'child_tasks'] if !opts[:'child_tasks'].nil?
      query_params[:'created_resources'] = opts[:'created_resources'] if !opts[:'created_resources'].nil?
      query_params[:'exclusive_resources'] = opts[:'exclusive_resources'] if !opts[:'exclusive_resources'].nil?
      query_params[:'exclusive_resources__in'] = @api_client.build_collection_param(opts[:'exclusive_resources__in'], :csv) if !opts[:'exclusive_resources__in'].nil?
      query_params[:'finished_at'] = opts[:'finished_at'] if !opts[:'finished_at'].nil?
      query_params[:'finished_at__gt'] = opts[:'finished_at__gt'] if !opts[:'finished_at__gt'].nil?
      query_params[:'finished_at__gte'] = opts[:'finished_at__gte'] if !opts[:'finished_at__gte'].nil?
      query_params[:'finished_at__lt'] = opts[:'finished_at__lt'] if !opts[:'finished_at__lt'].nil?
      query_params[:'finished_at__lte'] = opts[:'finished_at__lte'] if !opts[:'finished_at__lte'].nil?
      query_params[:'finished_at__range'] = @api_client.build_collection_param(opts[:'finished_at__range'], :csv) if !opts[:'finished_at__range'].nil?
      query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].nil?
      query_params[:'logging_cid'] = opts[:'logging_cid'] if !opts[:'logging_cid'].nil?
      query_params[:'logging_cid__contains'] = opts[:'logging_cid__contains'] if !opts[:'logging_cid__contains'].nil?
      query_params[:'name'] = opts[:'name'] if !opts[:'name'].nil?
      query_params[:'name__contains'] = opts[:'name__contains'] if !opts[:'name__contains'].nil?
      query_params[:'name__in'] = @api_client.build_collection_param(opts[:'name__in'], :csv) if !opts[:'name__in'].nil?
      query_params[:'offset'] = opts[:'offset'] if !opts[:'offset'].nil?
      query_params[:'ordering'] = @api_client.build_collection_param(opts[:'ordering'], :csv) if !opts[:'ordering'].nil?
      query_params[:'parent_task'] = opts[:'parent_task'] if !opts[:'parent_task'].nil?
      query_params[:'pulp_href__in'] = @api_client.build_collection_param(opts[:'pulp_href__in'], :csv) if !opts[:'pulp_href__in'].nil?
      query_params[:'pulp_id__in'] = @api_client.build_collection_param(opts[:'pulp_id__in'], :csv) if !opts[:'pulp_id__in'].nil?
      query_params[:'reserved_resources'] = opts[:'reserved_resources'] if !opts[:'reserved_resources'].nil?
      query_params[:'reserved_resources__in'] = @api_client.build_collection_param(opts[:'reserved_resources__in'], :csv) if !opts[:'reserved_resources__in'].nil?
      query_params[:'reserved_resources_record'] = @api_client.build_collection_param(opts[:'reserved_resources_record'], :multi) if !opts[:'reserved_resources_record'].nil?
      query_params[:'shared_resources'] = opts[:'shared_resources'] if !opts[:'shared_resources'].nil?
      query_params[:'shared_resources__in'] = @api_client.build_collection_param(opts[:'shared_resources__in'], :csv) if !opts[:'shared_resources__in'].nil?
      query_params[:'started_at'] = opts[:'started_at'] if !opts[:'started_at'].nil?
      query_params[:'started_at__gt'] = opts[:'started_at__gt'] if !opts[:'started_at__gt'].nil?
      query_params[:'started_at__gte'] = opts[:'started_at__gte'] if !opts[:'started_at__gte'].nil?
      query_params[:'started_at__lt'] = opts[:'started_at__lt'] if !opts[:'started_at__lt'].nil?
      query_params[:'started_at__lte'] = opts[:'started_at__lte'] if !opts[:'started_at__lte'].nil?
      query_params[:'started_at__range'] = @api_client.build_collection_param(opts[:'started_at__range'], :csv) if !opts[:'started_at__range'].nil?
      query_params[:'state'] = opts[:'state'] if !opts[:'state'].nil?
      query_params[:'state__in'] = @api_client.build_collection_param(opts[:'state__in'], :csv) if !opts[:'state__in'].nil?
      query_params[:'task_group'] = opts[:'task_group'] if !opts[:'task_group'].nil?
      query_params[:'worker'] = opts[:'worker'] if !opts[:'worker'].nil?
      query_params[:'worker__in'] = @api_client.build_collection_param(opts[:'worker__in'], :csv) if !opts[:'worker__in'].nil?
      query_params[:'fields'] = @api_client.build_collection_param(opts[:'fields'], :multi) if !opts[:'fields'].nil?
      query_params[:'exclude_fields'] = @api_client.build_collection_param(opts[:'exclude_fields'], :multi) if !opts[:'exclude_fields'].nil?

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:body] 

      # return_type
      return_type = opts[:return_type] || 'PaginatedTaskResponseList' 

      # auth_names
      auth_names = opts[:auth_names] || ['basicAuth']

      new_options = opts.merge(
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: TasksApi#list\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # List roles assigned to this object.
    # @param task_href [String] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [ObjectRolesResponse]
    def list_roles(task_href, opts = {})
      data, _status_code, _headers = list_roles_with_http_info(task_href, opts)
      data
    end

    # List roles assigned to this object.
    # @param task_href [String] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [Array<(ObjectRolesResponse, Integer, Hash)>] ObjectRolesResponse data, response status code and response headers
    def list_roles_with_http_info(task_href, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: TasksApi.list_roles ...'
      end
      # verify the required parameter 'task_href' is set
      if @api_client.config.client_side_validation && task_href.nil?
        fail ArgumentError, "Missing the required parameter 'task_href' when calling TasksApi.list_roles"
      end
      # resource path
      local_var_path = '{task_href}list_roles/'.sub('{' + 'task_href' + '}', CGI.escape(task_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}
      query_params[:'fields'] = @api_client.build_collection_param(opts[:'fields'], :multi) if !opts[:'fields'].nil?
      query_params[:'exclude_fields'] = @api_client.build_collection_param(opts[:'exclude_fields'], :multi) if !opts[:'exclude_fields'].nil?

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:body] 

      # return_type
      return_type = opts[:return_type] || 'ObjectRolesResponse' 

      # auth_names
      auth_names = opts[:auth_names] || ['basicAuth']

      new_options = opts.merge(
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: TasksApi#list_roles\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # List permissions available to the current user on this object.
    # @param task_href [String] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [MyPermissionsResponse]
    def my_permissions(task_href, opts = {})
      data, _status_code, _headers = my_permissions_with_http_info(task_href, opts)
      data
    end

    # List permissions available to the current user on this object.
    # @param task_href [String] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [Array<(MyPermissionsResponse, Integer, Hash)>] MyPermissionsResponse data, response status code and response headers
    def my_permissions_with_http_info(task_href, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: TasksApi.my_permissions ...'
      end
      # verify the required parameter 'task_href' is set
      if @api_client.config.client_side_validation && task_href.nil?
        fail ArgumentError, "Missing the required parameter 'task_href' when calling TasksApi.my_permissions"
      end
      # resource path
      local_var_path = '{task_href}my_permissions/'.sub('{' + 'task_href' + '}', CGI.escape(task_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}
      query_params[:'fields'] = @api_client.build_collection_param(opts[:'fields'], :multi) if !opts[:'fields'].nil?
      query_params[:'exclude_fields'] = @api_client.build_collection_param(opts[:'exclude_fields'], :multi) if !opts[:'exclude_fields'].nil?

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:body] 

      # return_type
      return_type = opts[:return_type] || 'MyPermissionsResponse' 

      # auth_names
      auth_names = opts[:auth_names] || ['basicAuth']

      new_options = opts.merge(
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: TasksApi#my_permissions\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Purge Completed Tasks
    # Trigger an asynchronous task that deletes completed tasks that finished prior to a specified timestamp.
    # @param purge [Purge] 
    # @param [Hash] opts the optional parameters
    # @return [AsyncOperationResponse]
    def purge(purge, opts = {})
      data, _status_code, _headers = purge_with_http_info(purge, opts)
      data
    end

    # Purge Completed Tasks
    # Trigger an asynchronous task that deletes completed tasks that finished prior to a specified timestamp.
    # @param purge [Purge] 
    # @param [Hash] opts the optional parameters
    # @return [Array<(AsyncOperationResponse, Integer, Hash)>] AsyncOperationResponse data, response status code and response headers
    def purge_with_http_info(purge, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: TasksApi.purge ...'
      end
      # verify the required parameter 'purge' is set
      if @api_client.config.client_side_validation && purge.nil?
        fail ArgumentError, "Missing the required parameter 'purge' when calling TasksApi.purge"
      end
      # resource path
      local_var_path = '/pulp/api/v3/tasks/purge/'

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json', 'application/x-www-form-urlencoded', 'multipart/form-data'])

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:body] || @api_client.object_to_http_body(purge) 

      # return_type
      return_type = opts[:return_type] || 'AsyncOperationResponse' 

      # auth_names
      auth_names = opts[:auth_names] || ['basicAuth']

      new_options = opts.merge(
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: TasksApi#purge\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Inspect a task
    # A customized named ModelViewSet that knows how to register itself with the Pulp API router.  This viewset is discoverable by its name. \"Normal\" Django Models and Master/Detail models are supported by the ``register_with`` method.  Attributes:     lookup_field (str): The name of the field by which an object should be looked up, in         addition to any parent lookups if this ViewSet is nested. Defaults to 'pk'     endpoint_name (str): The name of the final path segment that should identify the ViewSet's         collection endpoint.     nest_prefix (str): Optional prefix under which this ViewSet should be nested. This must         correspond to the \"parent_prefix\" of a router with rest_framework_nested.NestedMixin.         None indicates this ViewSet should not be nested.     parent_lookup_kwargs (dict): Optional mapping of key names that would appear in self.kwargs         to django model filter expressions that can be used with the corresponding value from         self.kwargs, used only by a nested ViewSet to filter based on the parent object's         identity.     schema (DefaultSchema): The schema class to use by default in a viewset.
    # @param task_href [String] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [TaskResponse]
    def read(task_href, opts = {})
      data, _status_code, _headers = read_with_http_info(task_href, opts)
      data
    end

    # Inspect a task
    # A customized named ModelViewSet that knows how to register itself with the Pulp API router.  This viewset is discoverable by its name. \&quot;Normal\&quot; Django Models and Master/Detail models are supported by the &#x60;&#x60;register_with&#x60;&#x60; method.  Attributes:     lookup_field (str): The name of the field by which an object should be looked up, in         addition to any parent lookups if this ViewSet is nested. Defaults to &#39;pk&#39;     endpoint_name (str): The name of the final path segment that should identify the ViewSet&#39;s         collection endpoint.     nest_prefix (str): Optional prefix under which this ViewSet should be nested. This must         correspond to the \&quot;parent_prefix\&quot; of a router with rest_framework_nested.NestedMixin.         None indicates this ViewSet should not be nested.     parent_lookup_kwargs (dict): Optional mapping of key names that would appear in self.kwargs         to django model filter expressions that can be used with the corresponding value from         self.kwargs, used only by a nested ViewSet to filter based on the parent object&#39;s         identity.     schema (DefaultSchema): The schema class to use by default in a viewset.
    # @param task_href [String] 
    # @param [Hash] opts the optional parameters
    # @option opts [Array<String>] :fields A list of fields to include in the response.
    # @option opts [Array<String>] :exclude_fields A list of fields to exclude from the response.
    # @return [Array<(TaskResponse, Integer, Hash)>] TaskResponse data, response status code and response headers
    def read_with_http_info(task_href, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: TasksApi.read ...'
      end
      # verify the required parameter 'task_href' is set
      if @api_client.config.client_side_validation && task_href.nil?
        fail ArgumentError, "Missing the required parameter 'task_href' when calling TasksApi.read"
      end
      # resource path
      local_var_path = '{task_href}'.sub('{' + 'task_href' + '}', CGI.escape(task_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}
      query_params[:'fields'] = @api_client.build_collection_param(opts[:'fields'], :multi) if !opts[:'fields'].nil?
      query_params[:'exclude_fields'] = @api_client.build_collection_param(opts[:'exclude_fields'], :multi) if !opts[:'exclude_fields'].nil?

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:body] 

      # return_type
      return_type = opts[:return_type] || 'TaskResponse' 

      # auth_names
      auth_names = opts[:auth_names] || ['basicAuth']

      new_options = opts.merge(
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: TasksApi#read\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Remove a role for this object from users/groups.
    # @param task_href [String] 
    # @param nested_role [NestedRole] 
    # @param [Hash] opts the optional parameters
    # @return [NestedRoleResponse]
    def remove_role(task_href, nested_role, opts = {})
      data, _status_code, _headers = remove_role_with_http_info(task_href, nested_role, opts)
      data
    end

    # Remove a role for this object from users/groups.
    # @param task_href [String] 
    # @param nested_role [NestedRole] 
    # @param [Hash] opts the optional parameters
    # @return [Array<(NestedRoleResponse, Integer, Hash)>] NestedRoleResponse data, response status code and response headers
    def remove_role_with_http_info(task_href, nested_role, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: TasksApi.remove_role ...'
      end
      # verify the required parameter 'task_href' is set
      if @api_client.config.client_side_validation && task_href.nil?
        fail ArgumentError, "Missing the required parameter 'task_href' when calling TasksApi.remove_role"
      end
      # verify the required parameter 'nested_role' is set
      if @api_client.config.client_side_validation && nested_role.nil?
        fail ArgumentError, "Missing the required parameter 'nested_role' when calling TasksApi.remove_role"
      end
      # resource path
      local_var_path = '{task_href}remove_role/'.sub('{' + 'task_href' + '}', CGI.escape(task_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json', 'application/x-www-form-urlencoded', 'multipart/form-data'])

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:body] || @api_client.object_to_http_body(nested_role) 

      # return_type
      return_type = opts[:return_type] || 'NestedRoleResponse' 

      # auth_names
      auth_names = opts[:auth_names] || ['basicAuth']

      new_options = opts.merge(
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: TasksApi#remove_role\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Cancel a task
    # This operation cancels a task.
    # @param task_href [String] 
    # @param patched_task_cancel [PatchedTaskCancel] 
    # @param [Hash] opts the optional parameters
    # @return [TaskResponse]
    def tasks_cancel(task_href, patched_task_cancel, opts = {})
      data, _status_code, _headers = tasks_cancel_with_http_info(task_href, patched_task_cancel, opts)
      data
    end

    # Cancel a task
    # This operation cancels a task.
    # @param task_href [String] 
    # @param patched_task_cancel [PatchedTaskCancel] 
    # @param [Hash] opts the optional parameters
    # @return [Array<(TaskResponse, Integer, Hash)>] TaskResponse data, response status code and response headers
    def tasks_cancel_with_http_info(task_href, patched_task_cancel, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: TasksApi.tasks_cancel ...'
      end
      # verify the required parameter 'task_href' is set
      if @api_client.config.client_side_validation && task_href.nil?
        fail ArgumentError, "Missing the required parameter 'task_href' when calling TasksApi.tasks_cancel"
      end
      # verify the required parameter 'patched_task_cancel' is set
      if @api_client.config.client_side_validation && patched_task_cancel.nil?
        fail ArgumentError, "Missing the required parameter 'patched_task_cancel' when calling TasksApi.tasks_cancel"
      end
      # resource path
      local_var_path = '{task_href}'.sub('{' + 'task_href' + '}', CGI.escape(task_href.to_s).gsub('%2F', '/'))

      # query parameters
      query_params = opts[:query_params] || {}

      # header parameters
      header_params = opts[:header_params] || {}
      # HTTP header 'Accept' (if needed)
      header_params['Accept'] = @api_client.select_header_accept(['application/json'])
      # HTTP header 'Content-Type'
      header_params['Content-Type'] = @api_client.select_header_content_type(['application/json', 'application/x-www-form-urlencoded', 'multipart/form-data'])

      # form parameters
      form_params = opts[:form_params] || {}

      # http body (model)
      post_body = opts[:body] || @api_client.object_to_http_body(patched_task_cancel) 

      # return_type
      return_type = opts[:return_type] || 'TaskResponse' 

      # auth_names
      auth_names = opts[:auth_names] || ['basicAuth']

      new_options = opts.merge(
        :header_params => header_params,
        :query_params => query_params,
        :form_params => form_params,
        :body => post_body,
        :auth_names => auth_names,
        :return_type => return_type
      )

      data, status_code, headers = @api_client.call_api(:PATCH, local_var_path, new_options)
      if @api_client.config.debugging
        @api_client.config.logger.debug "API called: TasksApi#tasks_cancel\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
  end
end