=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 PulpRpmClient
  class ContentAdvisoriesApi
    attr_accessor :api_client

    def initialize(api_client = ApiClient.default)
      @api_client = api_client
    end
    # Create an update record
    # Trigger an asynchronous task to create content,optionally create new repository version.
    # @param [Hash] opts the optional parameters
    # @option opts [String] :repository A URI of a repository the new content unit should be associated with.
    # @option opts [File] :file An uploaded file that may be turned into the artifact of the content unit.
    # @return [AsyncOperationResponse]
    def create(opts = {})
      data, _status_code, _headers = create_with_http_info(opts)
      data
    end

    # Create an update record
    # Trigger an asynchronous task to create content,optionally create new repository version.
    # @param [Hash] opts the optional parameters
    # @option opts [String] :repository A URI of a repository the new content unit should be associated with.
    # @option opts [File] :file An uploaded file that may be turned into the artifact of the content unit.
    # @return [Array<(AsyncOperationResponse, Integer, Hash)>] AsyncOperationResponse data, response status code and response headers
    def create_with_http_info(opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ContentAdvisoriesApi.create ...'
      end
      # resource path
      local_var_path = '/pulp/api/v3/content/rpm/advisories/'

      # 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(['multipart/form-data', 'application/x-www-form-urlencoded'])

      # form parameters
      form_params = opts[:form_params] || {}
      form_params['repository'] = opts[:'repository'] if !opts[:'repository'].nil?
      form_params['file'] = opts[:'file'] if !opts[:'file'].nil?

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

      # 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: ContentAdvisoriesApi#create\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # List update records
    # A ViewSet for UpdateRecord.  Define endpoint name which will appear in the API endpoint for this content type. For example::     http://pulp.example.com/pulp/api/v3/content/rpm/advisories/  Also specify queryset and serializer for UpdateRecord.
    # @param [Hash] opts the optional parameters
    # @option opts [String] :id Filter results where id matches value
    # @option opts [Array<String>] :id__in Filter results where id is in a comma-separated list of values
    # @option opts [Integer] :limit Number of results to return per page.
    # @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;pulp_type&#x60; - Pulp type * &#x60;-pulp_type&#x60; - Pulp type (descending) * &#x60;upstream_id&#x60; - Upstream id * &#x60;-upstream_id&#x60; - Upstream id (descending) * &#x60;timestamp_of_interest&#x60; - Timestamp of interest * &#x60;-timestamp_of_interest&#x60; - Timestamp of interest (descending) * &#x60;id&#x60; - Id * &#x60;-id&#x60; - Id (descending) * &#x60;updated_date&#x60; - Updated date * &#x60;-updated_date&#x60; - Updated date (descending) * &#x60;description&#x60; - Description * &#x60;-description&#x60; - Description (descending) * &#x60;issued_date&#x60; - Issued date * &#x60;-issued_date&#x60; - Issued date (descending) * &#x60;fromstr&#x60; - Fromstr * &#x60;-fromstr&#x60; - Fromstr (descending) * &#x60;status&#x60; - Status * &#x60;-status&#x60; - Status (descending) * &#x60;title&#x60; - Title * &#x60;-title&#x60; - Title (descending) * &#x60;summary&#x60; - Summary * &#x60;-summary&#x60; - Summary (descending) * &#x60;version&#x60; - Version * &#x60;-version&#x60; - Version (descending) * &#x60;type&#x60; - Type * &#x60;-type&#x60; - Type (descending) * &#x60;severity&#x60; - Severity * &#x60;-severity&#x60; - Severity (descending) * &#x60;solution&#x60; - Solution * &#x60;-solution&#x60; - Solution (descending) * &#x60;release&#x60; - Release * &#x60;-release&#x60; - Release (descending) * &#x60;rights&#x60; - Rights * &#x60;-rights&#x60; - Rights (descending) * &#x60;reboot_suggested&#x60; - Reboot suggested * &#x60;-reboot_suggested&#x60; - Reboot suggested (descending) * &#x60;pushcount&#x60; - Pushcount * &#x60;-pushcount&#x60; - Pushcount (descending) * &#x60;digest&#x60; - Digest * &#x60;-digest&#x60; - Digest (descending) * &#x60;pk&#x60; - Pk * &#x60;-pk&#x60; - Pk (descending)
    # @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] :repository_version Repository Version referenced by HREF
    # @option opts [String] :repository_version_added Repository Version referenced by HREF
    # @option opts [String] :repository_version_removed Repository Version referenced by HREF
    # @option opts [String] :severity Filter results where severity matches value
    # @option opts [Array<String>] :severity__in Filter results where severity is in a comma-separated list of values
    # @option opts [String] :severity__ne Filter results where severity not equal to value
    # @option opts [String] :status Filter results where status matches value
    # @option opts [Array<String>] :status__in Filter results where status is in a comma-separated list of values
    # @option opts [String] :status__ne Filter results where status not equal to value
    # @option opts [String] :type Filter results where type matches value
    # @option opts [Array<String>] :type__in Filter results where type is in a comma-separated list of values
    # @option opts [String] :type__ne Filter results where type not equal to value
    # @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 [PaginatedrpmUpdateRecordResponseList]
    def list(opts = {})
      data, _status_code, _headers = list_with_http_info(opts)
      data
    end

    # List update records
    # A ViewSet for UpdateRecord.  Define endpoint name which will appear in the API endpoint for this content type. For example::     http://pulp.example.com/pulp/api/v3/content/rpm/advisories/  Also specify queryset and serializer for UpdateRecord.
    # @param [Hash] opts the optional parameters
    # @option opts [String] :id Filter results where id matches value
    # @option opts [Array<String>] :id__in Filter results where id is in a comma-separated list of values
    # @option opts [Integer] :limit Number of results to return per page.
    # @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;pulp_type&#x60; - Pulp type * &#x60;-pulp_type&#x60; - Pulp type (descending) * &#x60;upstream_id&#x60; - Upstream id * &#x60;-upstream_id&#x60; - Upstream id (descending) * &#x60;timestamp_of_interest&#x60; - Timestamp of interest * &#x60;-timestamp_of_interest&#x60; - Timestamp of interest (descending) * &#x60;id&#x60; - Id * &#x60;-id&#x60; - Id (descending) * &#x60;updated_date&#x60; - Updated date * &#x60;-updated_date&#x60; - Updated date (descending) * &#x60;description&#x60; - Description * &#x60;-description&#x60; - Description (descending) * &#x60;issued_date&#x60; - Issued date * &#x60;-issued_date&#x60; - Issued date (descending) * &#x60;fromstr&#x60; - Fromstr * &#x60;-fromstr&#x60; - Fromstr (descending) * &#x60;status&#x60; - Status * &#x60;-status&#x60; - Status (descending) * &#x60;title&#x60; - Title * &#x60;-title&#x60; - Title (descending) * &#x60;summary&#x60; - Summary * &#x60;-summary&#x60; - Summary (descending) * &#x60;version&#x60; - Version * &#x60;-version&#x60; - Version (descending) * &#x60;type&#x60; - Type * &#x60;-type&#x60; - Type (descending) * &#x60;severity&#x60; - Severity * &#x60;-severity&#x60; - Severity (descending) * &#x60;solution&#x60; - Solution * &#x60;-solution&#x60; - Solution (descending) * &#x60;release&#x60; - Release * &#x60;-release&#x60; - Release (descending) * &#x60;rights&#x60; - Rights * &#x60;-rights&#x60; - Rights (descending) * &#x60;reboot_suggested&#x60; - Reboot suggested * &#x60;-reboot_suggested&#x60; - Reboot suggested (descending) * &#x60;pushcount&#x60; - Pushcount * &#x60;-pushcount&#x60; - Pushcount (descending) * &#x60;digest&#x60; - Digest * &#x60;-digest&#x60; - Digest (descending) * &#x60;pk&#x60; - Pk * &#x60;-pk&#x60; - Pk (descending)
    # @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] :repository_version Repository Version referenced by HREF
    # @option opts [String] :repository_version_added Repository Version referenced by HREF
    # @option opts [String] :repository_version_removed Repository Version referenced by HREF
    # @option opts [String] :severity Filter results where severity matches value
    # @option opts [Array<String>] :severity__in Filter results where severity is in a comma-separated list of values
    # @option opts [String] :severity__ne Filter results where severity not equal to value
    # @option opts [String] :status Filter results where status matches value
    # @option opts [Array<String>] :status__in Filter results where status is in a comma-separated list of values
    # @option opts [String] :status__ne Filter results where status not equal to value
    # @option opts [String] :type Filter results where type matches value
    # @option opts [Array<String>] :type__in Filter results where type is in a comma-separated list of values
    # @option opts [String] :type__ne Filter results where type not equal to value
    # @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<(PaginatedrpmUpdateRecordResponseList, Integer, Hash)>] PaginatedrpmUpdateRecordResponseList 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: ContentAdvisoriesApi.list ...'
      end
      allowable_values = ["-description", "-digest", "-fromstr", "-id", "-issued_date", "-pk", "-pulp_created", "-pulp_id", "-pulp_last_updated", "-pulp_type", "-pushcount", "-reboot_suggested", "-release", "-rights", "-severity", "-solution", "-status", "-summary", "-timestamp_of_interest", "-title", "-type", "-updated_date", "-upstream_id", "-version", "description", "digest", "fromstr", "id", "issued_date", "pk", "pulp_created", "pulp_id", "pulp_last_updated", "pulp_type", "pushcount", "reboot_suggested", "release", "rights", "severity", "solution", "status", "summary", "timestamp_of_interest", "title", "type", "updated_date", "upstream_id", "version"]
      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
      # resource path
      local_var_path = '/pulp/api/v3/content/rpm/advisories/'

      # query parameters
      query_params = opts[:query_params] || {}
      query_params[:'id'] = opts[:'id'] if !opts[:'id'].nil?
      query_params[:'id__in'] = @api_client.build_collection_param(opts[:'id__in'], :csv) if !opts[:'id__in'].nil?
      query_params[:'limit'] = opts[:'limit'] if !opts[:'limit'].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[:'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[:'repository_version'] = opts[:'repository_version'] if !opts[:'repository_version'].nil?
      query_params[:'repository_version_added'] = opts[:'repository_version_added'] if !opts[:'repository_version_added'].nil?
      query_params[:'repository_version_removed'] = opts[:'repository_version_removed'] if !opts[:'repository_version_removed'].nil?
      query_params[:'severity'] = opts[:'severity'] if !opts[:'severity'].nil?
      query_params[:'severity__in'] = @api_client.build_collection_param(opts[:'severity__in'], :csv) if !opts[:'severity__in'].nil?
      query_params[:'severity__ne'] = opts[:'severity__ne'] if !opts[:'severity__ne'].nil?
      query_params[:'status'] = opts[:'status'] if !opts[:'status'].nil?
      query_params[:'status__in'] = @api_client.build_collection_param(opts[:'status__in'], :csv) if !opts[:'status__in'].nil?
      query_params[:'status__ne'] = opts[:'status__ne'] if !opts[:'status__ne'].nil?
      query_params[:'type'] = opts[:'type'] if !opts[:'type'].nil?
      query_params[:'type__in'] = @api_client.build_collection_param(opts[:'type__in'], :csv) if !opts[:'type__in'].nil?
      query_params[:'type__ne'] = opts[:'type__ne'] if !opts[:'type__ne'].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] || 'PaginatedrpmUpdateRecordResponseList' 

      # 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: ContentAdvisoriesApi#list\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end

    # Inspect an update record
    # A ViewSet for UpdateRecord.  Define endpoint name which will appear in the API endpoint for this content type. For example::     http://pulp.example.com/pulp/api/v3/content/rpm/advisories/  Also specify queryset and serializer for UpdateRecord.
    # @param rpm_update_record_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 [RpmUpdateRecordResponse]
    def read(rpm_update_record_href, opts = {})
      data, _status_code, _headers = read_with_http_info(rpm_update_record_href, opts)
      data
    end

    # Inspect an update record
    # A ViewSet for UpdateRecord.  Define endpoint name which will appear in the API endpoint for this content type. For example::     http://pulp.example.com/pulp/api/v3/content/rpm/advisories/  Also specify queryset and serializer for UpdateRecord.
    # @param rpm_update_record_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<(RpmUpdateRecordResponse, Integer, Hash)>] RpmUpdateRecordResponse data, response status code and response headers
    def read_with_http_info(rpm_update_record_href, opts = {})
      if @api_client.config.debugging
        @api_client.config.logger.debug 'Calling API: ContentAdvisoriesApi.read ...'
      end
      # verify the required parameter 'rpm_update_record_href' is set
      if @api_client.config.client_side_validation && rpm_update_record_href.nil?
        fail ArgumentError, "Missing the required parameter 'rpm_update_record_href' when calling ContentAdvisoriesApi.read"
      end
      # resource path
      local_var_path = '{rpm_update_record_href}'.sub('{' + 'rpm_update_record_href' + '}', CGI.escape(rpm_update_record_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] || 'RpmUpdateRecordResponse' 

      # 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: ContentAdvisoriesApi#read\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
      end
      return data, status_code, headers
    end
  end
end