/*
 * Warframe.market API
 *
 * ## Documentation is under very slow and heavy development  This document will gradually be supplemented and updated over some extended period of time.  ## Unstable endpoints Endpoint that is not stable and probably will be changed in the future will be marked with exclamation sign -> ⚠ 
 *
 * The version of the OpenAPI document: 1.14.0
 * Generated by: https://github.com/openapitools/openapi-generator.git
 */


using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Net;
using System.Net.Mime;
using WarframeMarket.Client;
using WarframeMarket.Model;

namespace WarframeMarket.Api
{

    /// <summary>
    /// Represents a collection of functions to interact with the API endpoints
    /// </summary>
    public interface IAuctionsApiSync : IApiAccessor
    {
        #region Synchronous Operations
        /// <summary>
        /// ⚠ Auction creation.
        /// </summary>
        /// <remarks>
        /// Create auction, for riven or lich item types.
        /// </remarks>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="auctionsCreatePostRequest">Info about auction and item</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <returns>AuctionsCreatePost200Response</returns>
        AuctionsCreatePost200Response AuctionsCreatePost(AuctionsCreatePostRequest auctionsCreatePostRequest, int operationIndex = 0);

        /// <summary>
        /// ⚠ Auction creation.
        /// </summary>
        /// <remarks>
        /// Create auction, for riven or lich item types.
        /// </remarks>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="auctionsCreatePostRequest">Info about auction and item</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <returns>ApiResponse of AuctionsCreatePost200Response</returns>
        ApiResponse<AuctionsCreatePost200Response> AuctionsCreatePostWithHttpInfo(AuctionsCreatePostRequest auctionsCreatePostRequest, int operationIndex = 0);
        /// <summary>
        /// Get a list of lich auctions by given search params.
        /// </summary>
        /// <remarks>
        /// Auctions from banned users will be excluded. 
        /// </remarks>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">lich weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="element">lich element (optional)</param>
        /// <param name="ephemera">lich is having ephemera   ephemera is based on lich element.  (optional)</param>
        /// <param name="damageMin">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="damageMax">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="quirk">Lich quirk &#x60;url_name&#x60; property (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by weapon damage bonus value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <returns>AuctionsSearchTypeRivenGet200Response</returns>
        AuctionsSearchTypeRivenGet200Response AuctionsSearchtypelichGet(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), Element? element = default(Element?), bool? ephemera = default(bool?), int? damageMin = default(int?), int? damageMax = default(int?), string? quirk = default(string?), string? sortBy = default(string?), int operationIndex = 0);

        /// <summary>
        /// Get a list of lich auctions by given search params.
        /// </summary>
        /// <remarks>
        /// Auctions from banned users will be excluded. 
        /// </remarks>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">lich weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="element">lich element (optional)</param>
        /// <param name="ephemera">lich is having ephemera   ephemera is based on lich element.  (optional)</param>
        /// <param name="damageMin">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="damageMax">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="quirk">Lich quirk &#x60;url_name&#x60; property (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by weapon damage bonus value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <returns>ApiResponse of AuctionsSearchTypeRivenGet200Response</returns>
        ApiResponse<AuctionsSearchTypeRivenGet200Response> AuctionsSearchtypelichGetWithHttpInfo(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), Element? element = default(Element?), bool? ephemera = default(bool?), int? damageMin = default(int?), int? damageMax = default(int?), string? quirk = default(string?), string? sortBy = default(string?), int operationIndex = 0);
        /// <summary>
        /// Get a list of riven auctions by given search params.
        /// </summary>
        /// <remarks>
        /// Auctions from banned users will be excluded.   You must specify weapon or one positive atttribute, at least. 
        /// </remarks>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">riven weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="positiveStats">Positive attributes in for of string: &#x60;attr1,attr2,attr3&#x60;  (optional)</param>
        /// <param name="negativeStats">Negative attributes in for of string: &#x60;attr1,attr2,attr3&#x60; For None use the string: &#x60;None&#x60;  (optional)</param>
        /// <param name="operation">Not used on the frontend right now, becuse this is not a very usefull flag. Used in conjuction with positive stats, like:  - &#x60;allOf&#x60; will get riven auction that contains all of defined positive attributes - &#x60;anyOf&#x60; will get riven auction that contains any of defined positive attributes  Default value is &#x60;allOf&#x60;  (optional)</param>
        /// <param name="masteryRankMin">Minimum rank value of riven mod (optional)</param>
        /// <param name="masteryRankMax">Maximum rank value of riven mod (optional)</param>
        /// <param name="reRollsMin">Minimum amount of rolls (optional)</param>
        /// <param name="reRollsMax">Maximum amount of rolls (optional)</param>
        /// <param name="modRank">Should mod be maxed or whatever. (optional)</param>
        /// <param name="polarity"> (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by attributes value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <returns>AuctionsSearchTypeRivenGet200Response</returns>
        AuctionsSearchTypeRivenGet200Response AuctionsSearchtyperivenGet(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), string? positiveStats = default(string?), string? negativeStats = default(string?), string? operation = default(string?), int? masteryRankMin = default(int?), int? masteryRankMax = default(int?), int? reRollsMin = default(int?), int? reRollsMax = default(int?), string? modRank = default(string?), string? polarity = default(string?), string? sortBy = default(string?), int operationIndex = 0);

        /// <summary>
        /// Get a list of riven auctions by given search params.
        /// </summary>
        /// <remarks>
        /// Auctions from banned users will be excluded.   You must specify weapon or one positive atttribute, at least. 
        /// </remarks>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">riven weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="positiveStats">Positive attributes in for of string: &#x60;attr1,attr2,attr3&#x60;  (optional)</param>
        /// <param name="negativeStats">Negative attributes in for of string: &#x60;attr1,attr2,attr3&#x60; For None use the string: &#x60;None&#x60;  (optional)</param>
        /// <param name="operation">Not used on the frontend right now, becuse this is not a very usefull flag. Used in conjuction with positive stats, like:  - &#x60;allOf&#x60; will get riven auction that contains all of defined positive attributes - &#x60;anyOf&#x60; will get riven auction that contains any of defined positive attributes  Default value is &#x60;allOf&#x60;  (optional)</param>
        /// <param name="masteryRankMin">Minimum rank value of riven mod (optional)</param>
        /// <param name="masteryRankMax">Maximum rank value of riven mod (optional)</param>
        /// <param name="reRollsMin">Minimum amount of rolls (optional)</param>
        /// <param name="reRollsMax">Maximum amount of rolls (optional)</param>
        /// <param name="modRank">Should mod be maxed or whatever. (optional)</param>
        /// <param name="polarity"> (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by attributes value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <returns>ApiResponse of AuctionsSearchTypeRivenGet200Response</returns>
        ApiResponse<AuctionsSearchTypeRivenGet200Response> AuctionsSearchtyperivenGetWithHttpInfo(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), string? positiveStats = default(string?), string? negativeStats = default(string?), string? operation = default(string?), int? masteryRankMin = default(int?), int? masteryRankMax = default(int?), int? reRollsMin = default(int?), int? reRollsMax = default(int?), string? modRank = default(string?), string? polarity = default(string?), string? sortBy = default(string?), int operationIndex = 0);
        #endregion Synchronous Operations
    }

    /// <summary>
    /// Represents a collection of functions to interact with the API endpoints
    /// </summary>
    public interface IAuctionsApiAsync : IApiAccessor
    {
        #region Asynchronous Operations
        /// <summary>
        /// ⚠ Auction creation.
        /// </summary>
        /// <remarks>
        /// Create auction, for riven or lich item types.
        /// </remarks>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="auctionsCreatePostRequest">Info about auction and item</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
        /// <returns>Task of AuctionsCreatePost200Response</returns>
        System.Threading.Tasks.Task<AuctionsCreatePost200Response> AuctionsCreatePostAsync(AuctionsCreatePostRequest auctionsCreatePostRequest, int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));

        /// <summary>
        /// ⚠ Auction creation.
        /// </summary>
        /// <remarks>
        /// Create auction, for riven or lich item types.
        /// </remarks>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="auctionsCreatePostRequest">Info about auction and item</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
        /// <returns>Task of ApiResponse (AuctionsCreatePost200Response)</returns>
        System.Threading.Tasks.Task<ApiResponse<AuctionsCreatePost200Response>> AuctionsCreatePostWithHttpInfoAsync(AuctionsCreatePostRequest auctionsCreatePostRequest, int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));
        /// <summary>
        /// Get a list of lich auctions by given search params.
        /// </summary>
        /// <remarks>
        /// Auctions from banned users will be excluded. 
        /// </remarks>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">lich weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="element">lich element (optional)</param>
        /// <param name="ephemera">lich is having ephemera   ephemera is based on lich element.  (optional)</param>
        /// <param name="damageMin">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="damageMax">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="quirk">Lich quirk &#x60;url_name&#x60; property (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by weapon damage bonus value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
        /// <returns>Task of AuctionsSearchTypeRivenGet200Response</returns>
        System.Threading.Tasks.Task<AuctionsSearchTypeRivenGet200Response> AuctionsSearchtypelichGetAsync(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), Element? element = default(Element?), bool? ephemera = default(bool?), int? damageMin = default(int?), int? damageMax = default(int?), string? quirk = default(string?), string? sortBy = default(string?), int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));

        /// <summary>
        /// Get a list of lich auctions by given search params.
        /// </summary>
        /// <remarks>
        /// Auctions from banned users will be excluded. 
        /// </remarks>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">lich weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="element">lich element (optional)</param>
        /// <param name="ephemera">lich is having ephemera   ephemera is based on lich element.  (optional)</param>
        /// <param name="damageMin">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="damageMax">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="quirk">Lich quirk &#x60;url_name&#x60; property (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by weapon damage bonus value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
        /// <returns>Task of ApiResponse (AuctionsSearchTypeRivenGet200Response)</returns>
        System.Threading.Tasks.Task<ApiResponse<AuctionsSearchTypeRivenGet200Response>> AuctionsSearchtypelichGetWithHttpInfoAsync(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), Element? element = default(Element?), bool? ephemera = default(bool?), int? damageMin = default(int?), int? damageMax = default(int?), string? quirk = default(string?), string? sortBy = default(string?), int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));
        /// <summary>
        /// Get a list of riven auctions by given search params.
        /// </summary>
        /// <remarks>
        /// Auctions from banned users will be excluded.   You must specify weapon or one positive atttribute, at least. 
        /// </remarks>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">riven weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="positiveStats">Positive attributes in for of string: &#x60;attr1,attr2,attr3&#x60;  (optional)</param>
        /// <param name="negativeStats">Negative attributes in for of string: &#x60;attr1,attr2,attr3&#x60; For None use the string: &#x60;None&#x60;  (optional)</param>
        /// <param name="operation">Not used on the frontend right now, becuse this is not a very usefull flag. Used in conjuction with positive stats, like:  - &#x60;allOf&#x60; will get riven auction that contains all of defined positive attributes - &#x60;anyOf&#x60; will get riven auction that contains any of defined positive attributes  Default value is &#x60;allOf&#x60;  (optional)</param>
        /// <param name="masteryRankMin">Minimum rank value of riven mod (optional)</param>
        /// <param name="masteryRankMax">Maximum rank value of riven mod (optional)</param>
        /// <param name="reRollsMin">Minimum amount of rolls (optional)</param>
        /// <param name="reRollsMax">Maximum amount of rolls (optional)</param>
        /// <param name="modRank">Should mod be maxed or whatever. (optional)</param>
        /// <param name="polarity"> (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by attributes value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
        /// <returns>Task of AuctionsSearchTypeRivenGet200Response</returns>
        System.Threading.Tasks.Task<AuctionsSearchTypeRivenGet200Response> AuctionsSearchtyperivenGetAsync(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), string? positiveStats = default(string?), string? negativeStats = default(string?), string? operation = default(string?), int? masteryRankMin = default(int?), int? masteryRankMax = default(int?), int? reRollsMin = default(int?), int? reRollsMax = default(int?), string? modRank = default(string?), string? polarity = default(string?), string? sortBy = default(string?), int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));

        /// <summary>
        /// Get a list of riven auctions by given search params.
        /// </summary>
        /// <remarks>
        /// Auctions from banned users will be excluded.   You must specify weapon or one positive atttribute, at least. 
        /// </remarks>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">riven weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="positiveStats">Positive attributes in for of string: &#x60;attr1,attr2,attr3&#x60;  (optional)</param>
        /// <param name="negativeStats">Negative attributes in for of string: &#x60;attr1,attr2,attr3&#x60; For None use the string: &#x60;None&#x60;  (optional)</param>
        /// <param name="operation">Not used on the frontend right now, becuse this is not a very usefull flag. Used in conjuction with positive stats, like:  - &#x60;allOf&#x60; will get riven auction that contains all of defined positive attributes - &#x60;anyOf&#x60; will get riven auction that contains any of defined positive attributes  Default value is &#x60;allOf&#x60;  (optional)</param>
        /// <param name="masteryRankMin">Minimum rank value of riven mod (optional)</param>
        /// <param name="masteryRankMax">Maximum rank value of riven mod (optional)</param>
        /// <param name="reRollsMin">Minimum amount of rolls (optional)</param>
        /// <param name="reRollsMax">Maximum amount of rolls (optional)</param>
        /// <param name="modRank">Should mod be maxed or whatever. (optional)</param>
        /// <param name="polarity"> (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by attributes value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
        /// <returns>Task of ApiResponse (AuctionsSearchTypeRivenGet200Response)</returns>
        System.Threading.Tasks.Task<ApiResponse<AuctionsSearchTypeRivenGet200Response>> AuctionsSearchtyperivenGetWithHttpInfoAsync(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), string? positiveStats = default(string?), string? negativeStats = default(string?), string? operation = default(string?), int? masteryRankMin = default(int?), int? masteryRankMax = default(int?), int? reRollsMin = default(int?), int? reRollsMax = default(int?), string? modRank = default(string?), string? polarity = default(string?), string? sortBy = default(string?), int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));
        #endregion Asynchronous Operations
    }

    /// <summary>
    /// Represents a collection of functions to interact with the API endpoints
    /// </summary>
    public interface IAuctionsApi : IAuctionsApiSync, IAuctionsApiAsync
    {

    }

    /// <summary>
    /// Represents a collection of functions to interact with the API endpoints
    /// </summary>
    public partial class AuctionsApi : IAuctionsApi
    {
        private WarframeMarket.Client.ExceptionFactory _exceptionFactory = (name, response) => null;

        /// <summary>
        /// Initializes a new instance of the <see cref="AuctionsApi"/> class.
        /// </summary>
        /// <returns></returns>
        public AuctionsApi() : this((string)null)
        {
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="AuctionsApi"/> class.
        /// </summary>
        /// <returns></returns>
        public AuctionsApi(string basePath)
        {
            this.Configuration = WarframeMarket.Client.Configuration.MergeConfigurations(
                WarframeMarket.Client.GlobalConfiguration.Instance,
                new WarframeMarket.Client.Configuration { BasePath = basePath }
            );
            this.Client = new WarframeMarket.Client.ApiClient(this.Configuration.BasePath);
            this.AsynchronousClient = new WarframeMarket.Client.ApiClient(this.Configuration.BasePath);
            this.ExceptionFactory = WarframeMarket.Client.Configuration.DefaultExceptionFactory;
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="AuctionsApi"/> class
        /// using Configuration object
        /// </summary>
        /// <param name="configuration">An instance of Configuration</param>
        /// <returns></returns>
        public AuctionsApi(WarframeMarket.Client.Configuration configuration)
        {
            if (configuration == null) throw new ArgumentNullException("configuration");

            this.Configuration = WarframeMarket.Client.Configuration.MergeConfigurations(
                WarframeMarket.Client.GlobalConfiguration.Instance,
                configuration
            );
            this.Client = new WarframeMarket.Client.ApiClient(this.Configuration.BasePath);
            this.AsynchronousClient = new WarframeMarket.Client.ApiClient(this.Configuration.BasePath);
            ExceptionFactory = WarframeMarket.Client.Configuration.DefaultExceptionFactory;
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="AuctionsApi"/> class
        /// using a Configuration object and client instance.
        /// </summary>
        /// <param name="client">The client interface for synchronous API access.</param>
        /// <param name="asyncClient">The client interface for asynchronous API access.</param>
        /// <param name="configuration">The configuration object.</param>
        public AuctionsApi(WarframeMarket.Client.ISynchronousClient client, WarframeMarket.Client.IAsynchronousClient asyncClient, WarframeMarket.Client.IReadableConfiguration configuration)
        {
            if (client == null) throw new ArgumentNullException("client");
            if (asyncClient == null) throw new ArgumentNullException("asyncClient");
            if (configuration == null) throw new ArgumentNullException("configuration");

            this.Client = client;
            this.AsynchronousClient = asyncClient;
            this.Configuration = configuration;
            this.ExceptionFactory = WarframeMarket.Client.Configuration.DefaultExceptionFactory;
        }

        /// <summary>
        /// The client for accessing this underlying API asynchronously.
        /// </summary>
        public WarframeMarket.Client.IAsynchronousClient AsynchronousClient { get; set; }

        /// <summary>
        /// The client for accessing this underlying API synchronously.
        /// </summary>
        public WarframeMarket.Client.ISynchronousClient Client { get; set; }

        /// <summary>
        /// Gets the base path of the API client.
        /// </summary>
        /// <value>The base path</value>
        public string GetBasePath()
        {
            return this.Configuration.BasePath;
        }

        /// <summary>
        /// Gets or sets the configuration object
        /// </summary>
        /// <value>An instance of the Configuration</value>
        public WarframeMarket.Client.IReadableConfiguration Configuration { get; set; }

        /// <summary>
        /// Provides a factory method hook for the creation of exceptions.
        /// </summary>
        public WarframeMarket.Client.ExceptionFactory ExceptionFactory
        {
            get
            {
                if (_exceptionFactory != null && _exceptionFactory.GetInvocationList().Length > 1)
                {
                    throw new InvalidOperationException("Multicast delegate for ExceptionFactory is unsupported.");
                }
                return _exceptionFactory;
            }
            set { _exceptionFactory = value; }
        }

        /// <summary>
        /// ⚠ Auction creation. Create auction, for riven or lich item types.
        /// </summary>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="auctionsCreatePostRequest">Info about auction and item</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <returns>AuctionsCreatePost200Response</returns>
        public AuctionsCreatePost200Response AuctionsCreatePost(AuctionsCreatePostRequest auctionsCreatePostRequest, int operationIndex = 0)
        {
            WarframeMarket.Client.ApiResponse<AuctionsCreatePost200Response> localVarResponse = AuctionsCreatePostWithHttpInfo(auctionsCreatePostRequest);
            return localVarResponse.Data;
        }

        /// <summary>
        /// ⚠ Auction creation. Create auction, for riven or lich item types.
        /// </summary>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="auctionsCreatePostRequest">Info about auction and item</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <returns>ApiResponse of AuctionsCreatePost200Response</returns>
        public WarframeMarket.Client.ApiResponse<AuctionsCreatePost200Response> AuctionsCreatePostWithHttpInfo(AuctionsCreatePostRequest auctionsCreatePostRequest, int operationIndex = 0)
        {
            // verify the required parameter 'auctionsCreatePostRequest' is set
            if (auctionsCreatePostRequest == null)
            {
                throw new WarframeMarket.Client.ApiException(400, "Missing required parameter 'auctionsCreatePostRequest' when calling AuctionsApi->AuctionsCreatePost");
            }

            WarframeMarket.Client.RequestOptions localVarRequestOptions = new WarframeMarket.Client.RequestOptions();

            string[] _contentTypes = new string[] {
                "application/json"
            };

            // to determine the Accept header
            string[] _accepts = new string[] {
                "application/json"
            };

            var localVarContentType = WarframeMarket.Client.ClientUtils.SelectHeaderContentType(_contentTypes);
            if (localVarContentType != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType);
            }

            var localVarAccept = WarframeMarket.Client.ClientUtils.SelectHeaderAccept(_accepts);
            if (localVarAccept != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept);
            }

            localVarRequestOptions.Data = auctionsCreatePostRequest;

            localVarRequestOptions.Operation = "AuctionsApi.AuctionsCreatePost";
            localVarRequestOptions.OperationIndex = operationIndex;

            // authentication (CookieAuth) required
            // cookie parameter support
            if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("JWT")))
            {
                localVarRequestOptions.Cookies.Add(new Cookie("JWT", this.Configuration.GetApiKeyWithPrefix("JWT")));
            }
            // authentication (JWTHeader) required
            if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("Authorization")))
            {
                localVarRequestOptions.HeaderParameters.Add("Authorization", this.Configuration.GetApiKeyWithPrefix("Authorization"));
            }

            // make the HTTP request
            var localVarResponse = this.Client.Post<AuctionsCreatePost200Response>("/auctions/create", localVarRequestOptions, this.Configuration);
            if (this.ExceptionFactory != null)
            {
                Exception _exception = this.ExceptionFactory("AuctionsCreatePost", localVarResponse);
                if (_exception != null)
                {
                    throw _exception;
                }
            }

            return localVarResponse;
        }

        /// <summary>
        /// ⚠ Auction creation. Create auction, for riven or lich item types.
        /// </summary>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="auctionsCreatePostRequest">Info about auction and item</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
        /// <returns>Task of AuctionsCreatePost200Response</returns>
        public async System.Threading.Tasks.Task<AuctionsCreatePost200Response> AuctionsCreatePostAsync(AuctionsCreatePostRequest auctionsCreatePostRequest, int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))
        {
            WarframeMarket.Client.ApiResponse<AuctionsCreatePost200Response> localVarResponse = await AuctionsCreatePostWithHttpInfoAsync(auctionsCreatePostRequest, operationIndex, cancellationToken).ConfigureAwait(false);
            return localVarResponse.Data;
        }

        /// <summary>
        /// ⚠ Auction creation. Create auction, for riven or lich item types.
        /// </summary>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="auctionsCreatePostRequest">Info about auction and item</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
        /// <returns>Task of ApiResponse (AuctionsCreatePost200Response)</returns>
        public async System.Threading.Tasks.Task<WarframeMarket.Client.ApiResponse<AuctionsCreatePost200Response>> AuctionsCreatePostWithHttpInfoAsync(AuctionsCreatePostRequest auctionsCreatePostRequest, int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))
        {
            // verify the required parameter 'auctionsCreatePostRequest' is set
            if (auctionsCreatePostRequest == null)
            {
                throw new WarframeMarket.Client.ApiException(400, "Missing required parameter 'auctionsCreatePostRequest' when calling AuctionsApi->AuctionsCreatePost");
            }


            WarframeMarket.Client.RequestOptions localVarRequestOptions = new WarframeMarket.Client.RequestOptions();

            string[] _contentTypes = new string[] {
                "application/json"
            };

            // to determine the Accept header
            string[] _accepts = new string[] {
                "application/json"
            };

            var localVarContentType = WarframeMarket.Client.ClientUtils.SelectHeaderContentType(_contentTypes);
            if (localVarContentType != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType);
            }

            var localVarAccept = WarframeMarket.Client.ClientUtils.SelectHeaderAccept(_accepts);
            if (localVarAccept != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept);
            }

            localVarRequestOptions.Data = auctionsCreatePostRequest;

            localVarRequestOptions.Operation = "AuctionsApi.AuctionsCreatePost";
            localVarRequestOptions.OperationIndex = operationIndex;

            // authentication (CookieAuth) required
            // cookie parameter support
            if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("JWT")))
            {
                localVarRequestOptions.Cookies.Add(new Cookie("JWT", this.Configuration.GetApiKeyWithPrefix("JWT")));
            }
            // authentication (JWTHeader) required
            if (!string.IsNullOrEmpty(this.Configuration.GetApiKeyWithPrefix("Authorization")))
            {
                localVarRequestOptions.HeaderParameters.Add("Authorization", this.Configuration.GetApiKeyWithPrefix("Authorization"));
            }

            // make the HTTP request
            var localVarResponse = await this.AsynchronousClient.PostAsync<AuctionsCreatePost200Response>("/auctions/create", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false);

            if (this.ExceptionFactory != null)
            {
                Exception _exception = this.ExceptionFactory("AuctionsCreatePost", localVarResponse);
                if (_exception != null)
                {
                    throw _exception;
                }
            }

            return localVarResponse;
        }

        /// <summary>
        /// Get a list of lich auctions by given search params. Auctions from banned users will be excluded. 
        /// </summary>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">lich weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="element">lich element (optional)</param>
        /// <param name="ephemera">lich is having ephemera   ephemera is based on lich element.  (optional)</param>
        /// <param name="damageMin">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="damageMax">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="quirk">Lich quirk &#x60;url_name&#x60; property (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by weapon damage bonus value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <returns>AuctionsSearchTypeRivenGet200Response</returns>
        public AuctionsSearchTypeRivenGet200Response AuctionsSearchtypelichGet(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), Element? element = default(Element?), bool? ephemera = default(bool?), int? damageMin = default(int?), int? damageMax = default(int?), string? quirk = default(string?), string? sortBy = default(string?), int operationIndex = 0)
        {
            WarframeMarket.Client.ApiResponse<AuctionsSearchTypeRivenGet200Response> localVarResponse = AuctionsSearchtypelichGetWithHttpInfo(platform, buyoutPolicy, weaponUrlName, element, ephemera, damageMin, damageMax, quirk, sortBy);
            return localVarResponse.Data;
        }

        /// <summary>
        /// Get a list of lich auctions by given search params. Auctions from banned users will be excluded. 
        /// </summary>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">lich weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="element">lich element (optional)</param>
        /// <param name="ephemera">lich is having ephemera   ephemera is based on lich element.  (optional)</param>
        /// <param name="damageMin">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="damageMax">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="quirk">Lich quirk &#x60;url_name&#x60; property (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by weapon damage bonus value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <returns>ApiResponse of AuctionsSearchTypeRivenGet200Response</returns>
        public WarframeMarket.Client.ApiResponse<AuctionsSearchTypeRivenGet200Response> AuctionsSearchtypelichGetWithHttpInfo(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), Element? element = default(Element?), bool? ephemera = default(bool?), int? damageMin = default(int?), int? damageMax = default(int?), string? quirk = default(string?), string? sortBy = default(string?), int operationIndex = 0)
        {
            WarframeMarket.Client.RequestOptions localVarRequestOptions = new WarframeMarket.Client.RequestOptions();

            string[] _contentTypes = new string[] {
            };

            // to determine the Accept header
            string[] _accepts = new string[] {
                "application/json"
            };

            var localVarContentType = WarframeMarket.Client.ClientUtils.SelectHeaderContentType(_contentTypes);
            if (localVarContentType != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType);
            }

            var localVarAccept = WarframeMarket.Client.ClientUtils.SelectHeaderAccept(_accepts);
            if (localVarAccept != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept);
            }

            if (buyoutPolicy != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "buyout_policy", buyoutPolicy));
            }
            if (weaponUrlName != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "weapon_url_name", weaponUrlName));
            }
            if (element != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "element", element));
            }
            if (ephemera != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "ephemera", ephemera));
            }
            if (damageMin != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "damage_min", damageMin));
            }
            if (damageMax != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "damage_max", damageMax));
            }
            if (quirk != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "quirk", quirk));
            }
            if (sortBy != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "sort_by", sortBy));
            }
            if (platform != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Platform", WarframeMarket.Client.ClientUtils.ParameterToString(platform)); // header parameter
            }

            localVarRequestOptions.Operation = "AuctionsApi.AuctionsSearchtypelichGet";
            localVarRequestOptions.OperationIndex = operationIndex;


            // make the HTTP request
            var localVarResponse = this.Client.Get<AuctionsSearchTypeRivenGet200Response>("/auctions/search?type=lich", localVarRequestOptions, this.Configuration);
            if (this.ExceptionFactory != null)
            {
                Exception _exception = this.ExceptionFactory("AuctionsSearchtypelichGet", localVarResponse);
                if (_exception != null)
                {
                    throw _exception;
                }
            }

            return localVarResponse;
        }

        /// <summary>
        /// Get a list of lich auctions by given search params. Auctions from banned users will be excluded. 
        /// </summary>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">lich weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="element">lich element (optional)</param>
        /// <param name="ephemera">lich is having ephemera   ephemera is based on lich element.  (optional)</param>
        /// <param name="damageMin">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="damageMax">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="quirk">Lich quirk &#x60;url_name&#x60; property (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by weapon damage bonus value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
        /// <returns>Task of AuctionsSearchTypeRivenGet200Response</returns>
        public async System.Threading.Tasks.Task<AuctionsSearchTypeRivenGet200Response> AuctionsSearchtypelichGetAsync(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), Element? element = default(Element?), bool? ephemera = default(bool?), int? damageMin = default(int?), int? damageMax = default(int?), string? quirk = default(string?), string? sortBy = default(string?), int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))
        {
            WarframeMarket.Client.ApiResponse<AuctionsSearchTypeRivenGet200Response> localVarResponse = await AuctionsSearchtypelichGetWithHttpInfoAsync(platform, buyoutPolicy, weaponUrlName, element, ephemera, damageMin, damageMax, quirk, sortBy, operationIndex, cancellationToken).ConfigureAwait(false);
            return localVarResponse.Data;
        }

        /// <summary>
        /// Get a list of lich auctions by given search params. Auctions from banned users will be excluded. 
        /// </summary>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">lich weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="element">lich element (optional)</param>
        /// <param name="ephemera">lich is having ephemera   ephemera is based on lich element.  (optional)</param>
        /// <param name="damageMin">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="damageMax">Minimum bonus damage value of desirable lich (optional)</param>
        /// <param name="quirk">Lich quirk &#x60;url_name&#x60; property (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by weapon damage bonus value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
        /// <returns>Task of ApiResponse (AuctionsSearchTypeRivenGet200Response)</returns>
        public async System.Threading.Tasks.Task<WarframeMarket.Client.ApiResponse<AuctionsSearchTypeRivenGet200Response>> AuctionsSearchtypelichGetWithHttpInfoAsync(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), Element? element = default(Element?), bool? ephemera = default(bool?), int? damageMin = default(int?), int? damageMax = default(int?), string? quirk = default(string?), string? sortBy = default(string?), int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))
        {

            WarframeMarket.Client.RequestOptions localVarRequestOptions = new WarframeMarket.Client.RequestOptions();

            string[] _contentTypes = new string[] {
            };

            // to determine the Accept header
            string[] _accepts = new string[] {
                "application/json"
            };

            var localVarContentType = WarframeMarket.Client.ClientUtils.SelectHeaderContentType(_contentTypes);
            if (localVarContentType != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType);
            }

            var localVarAccept = WarframeMarket.Client.ClientUtils.SelectHeaderAccept(_accepts);
            if (localVarAccept != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept);
            }

            if (buyoutPolicy != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "buyout_policy", buyoutPolicy));
            }
            if (weaponUrlName != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "weapon_url_name", weaponUrlName));
            }
            if (element != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "element", element));
            }
            if (ephemera != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "ephemera", ephemera));
            }
            if (damageMin != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "damage_min", damageMin));
            }
            if (damageMax != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "damage_max", damageMax));
            }
            if (quirk != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "quirk", quirk));
            }
            if (sortBy != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "sort_by", sortBy));
            }
            if (platform != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Platform", WarframeMarket.Client.ClientUtils.ParameterToString(platform)); // header parameter
            }

            localVarRequestOptions.Operation = "AuctionsApi.AuctionsSearchtypelichGet";
            localVarRequestOptions.OperationIndex = operationIndex;


            // make the HTTP request
            var localVarResponse = await this.AsynchronousClient.GetAsync<AuctionsSearchTypeRivenGet200Response>("/auctions/search?type=lich", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false);

            if (this.ExceptionFactory != null)
            {
                Exception _exception = this.ExceptionFactory("AuctionsSearchtypelichGet", localVarResponse);
                if (_exception != null)
                {
                    throw _exception;
                }
            }

            return localVarResponse;
        }

        /// <summary>
        /// Get a list of riven auctions by given search params. Auctions from banned users will be excluded.   You must specify weapon or one positive atttribute, at least. 
        /// </summary>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">riven weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="positiveStats">Positive attributes in for of string: &#x60;attr1,attr2,attr3&#x60;  (optional)</param>
        /// <param name="negativeStats">Negative attributes in for of string: &#x60;attr1,attr2,attr3&#x60; For None use the string: &#x60;None&#x60;  (optional)</param>
        /// <param name="operation">Not used on the frontend right now, becuse this is not a very usefull flag. Used in conjuction with positive stats, like:  - &#x60;allOf&#x60; will get riven auction that contains all of defined positive attributes - &#x60;anyOf&#x60; will get riven auction that contains any of defined positive attributes  Default value is &#x60;allOf&#x60;  (optional)</param>
        /// <param name="masteryRankMin">Minimum rank value of riven mod (optional)</param>
        /// <param name="masteryRankMax">Maximum rank value of riven mod (optional)</param>
        /// <param name="reRollsMin">Minimum amount of rolls (optional)</param>
        /// <param name="reRollsMax">Maximum amount of rolls (optional)</param>
        /// <param name="modRank">Should mod be maxed or whatever. (optional)</param>
        /// <param name="polarity"> (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by attributes value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <returns>AuctionsSearchTypeRivenGet200Response</returns>
        public AuctionsSearchTypeRivenGet200Response AuctionsSearchtyperivenGet(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), string? positiveStats = default(string?), string? negativeStats = default(string?), string? operation = default(string?), int? masteryRankMin = default(int?), int? masteryRankMax = default(int?), int? reRollsMin = default(int?), int? reRollsMax = default(int?), string? modRank = default(string?), string? polarity = default(string?), string? sortBy = default(string?), int operationIndex = 0)
        {
            WarframeMarket.Client.ApiResponse<AuctionsSearchTypeRivenGet200Response> localVarResponse = AuctionsSearchtyperivenGetWithHttpInfo(platform, buyoutPolicy, weaponUrlName, positiveStats, negativeStats, operation, masteryRankMin, masteryRankMax, reRollsMin, reRollsMax, modRank, polarity, sortBy);
            return localVarResponse.Data;
        }

        /// <summary>
        /// Get a list of riven auctions by given search params. Auctions from banned users will be excluded.   You must specify weapon or one positive atttribute, at least. 
        /// </summary>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">riven weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="positiveStats">Positive attributes in for of string: &#x60;attr1,attr2,attr3&#x60;  (optional)</param>
        /// <param name="negativeStats">Negative attributes in for of string: &#x60;attr1,attr2,attr3&#x60; For None use the string: &#x60;None&#x60;  (optional)</param>
        /// <param name="operation">Not used on the frontend right now, becuse this is not a very usefull flag. Used in conjuction with positive stats, like:  - &#x60;allOf&#x60; will get riven auction that contains all of defined positive attributes - &#x60;anyOf&#x60; will get riven auction that contains any of defined positive attributes  Default value is &#x60;allOf&#x60;  (optional)</param>
        /// <param name="masteryRankMin">Minimum rank value of riven mod (optional)</param>
        /// <param name="masteryRankMax">Maximum rank value of riven mod (optional)</param>
        /// <param name="reRollsMin">Minimum amount of rolls (optional)</param>
        /// <param name="reRollsMax">Maximum amount of rolls (optional)</param>
        /// <param name="modRank">Should mod be maxed or whatever. (optional)</param>
        /// <param name="polarity"> (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by attributes value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <returns>ApiResponse of AuctionsSearchTypeRivenGet200Response</returns>
        public WarframeMarket.Client.ApiResponse<AuctionsSearchTypeRivenGet200Response> AuctionsSearchtyperivenGetWithHttpInfo(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), string? positiveStats = default(string?), string? negativeStats = default(string?), string? operation = default(string?), int? masteryRankMin = default(int?), int? masteryRankMax = default(int?), int? reRollsMin = default(int?), int? reRollsMax = default(int?), string? modRank = default(string?), string? polarity = default(string?), string? sortBy = default(string?), int operationIndex = 0)
        {
            WarframeMarket.Client.RequestOptions localVarRequestOptions = new WarframeMarket.Client.RequestOptions();

            string[] _contentTypes = new string[] {
            };

            // to determine the Accept header
            string[] _accepts = new string[] {
                "application/json"
            };

            var localVarContentType = WarframeMarket.Client.ClientUtils.SelectHeaderContentType(_contentTypes);
            if (localVarContentType != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType);
            }

            var localVarAccept = WarframeMarket.Client.ClientUtils.SelectHeaderAccept(_accepts);
            if (localVarAccept != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept);
            }

            if (buyoutPolicy != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "buyout_policy", buyoutPolicy));
            }
            if (weaponUrlName != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "weapon_url_name", weaponUrlName));
            }
            if (positiveStats != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "positive_stats", positiveStats));
            }
            if (negativeStats != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "negative_stats", negativeStats));
            }
            if (operation != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "operation", operation));
            }
            if (masteryRankMin != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "mastery_rank_min", masteryRankMin));
            }
            if (masteryRankMax != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "mastery_rank_max", masteryRankMax));
            }
            if (reRollsMin != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "re_rolls_min", reRollsMin));
            }
            if (reRollsMax != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "re_rolls_max", reRollsMax));
            }
            if (modRank != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "mod_rank", modRank));
            }
            if (polarity != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "polarity", polarity));
            }
            if (sortBy != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "sort_by", sortBy));
            }
            if (platform != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Platform", WarframeMarket.Client.ClientUtils.ParameterToString(platform)); // header parameter
            }

            localVarRequestOptions.Operation = "AuctionsApi.AuctionsSearchtyperivenGet";
            localVarRequestOptions.OperationIndex = operationIndex;


            // make the HTTP request
            var localVarResponse = this.Client.Get<AuctionsSearchTypeRivenGet200Response>("/auctions/search?type=riven", localVarRequestOptions, this.Configuration);
            if (this.ExceptionFactory != null)
            {
                Exception _exception = this.ExceptionFactory("AuctionsSearchtyperivenGet", localVarResponse);
                if (_exception != null)
                {
                    throw _exception;
                }
            }

            return localVarResponse;
        }

        /// <summary>
        /// Get a list of riven auctions by given search params. Auctions from banned users will be excluded.   You must specify weapon or one positive atttribute, at least. 
        /// </summary>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">riven weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="positiveStats">Positive attributes in for of string: &#x60;attr1,attr2,attr3&#x60;  (optional)</param>
        /// <param name="negativeStats">Negative attributes in for of string: &#x60;attr1,attr2,attr3&#x60; For None use the string: &#x60;None&#x60;  (optional)</param>
        /// <param name="operation">Not used on the frontend right now, becuse this is not a very usefull flag. Used in conjuction with positive stats, like:  - &#x60;allOf&#x60; will get riven auction that contains all of defined positive attributes - &#x60;anyOf&#x60; will get riven auction that contains any of defined positive attributes  Default value is &#x60;allOf&#x60;  (optional)</param>
        /// <param name="masteryRankMin">Minimum rank value of riven mod (optional)</param>
        /// <param name="masteryRankMax">Maximum rank value of riven mod (optional)</param>
        /// <param name="reRollsMin">Minimum amount of rolls (optional)</param>
        /// <param name="reRollsMax">Maximum amount of rolls (optional)</param>
        /// <param name="modRank">Should mod be maxed or whatever. (optional)</param>
        /// <param name="polarity"> (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by attributes value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
        /// <returns>Task of AuctionsSearchTypeRivenGet200Response</returns>
        public async System.Threading.Tasks.Task<AuctionsSearchTypeRivenGet200Response> AuctionsSearchtyperivenGetAsync(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), string? positiveStats = default(string?), string? negativeStats = default(string?), string? operation = default(string?), int? masteryRankMin = default(int?), int? masteryRankMax = default(int?), int? reRollsMin = default(int?), int? reRollsMax = default(int?), string? modRank = default(string?), string? polarity = default(string?), string? sortBy = default(string?), int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))
        {
            WarframeMarket.Client.ApiResponse<AuctionsSearchTypeRivenGet200Response> localVarResponse = await AuctionsSearchtyperivenGetWithHttpInfoAsync(platform, buyoutPolicy, weaponUrlName, positiveStats, negativeStats, operation, masteryRankMin, masteryRankMax, reRollsMin, reRollsMax, modRank, polarity, sortBy, operationIndex, cancellationToken).ConfigureAwait(false);
            return localVarResponse.Data;
        }

        /// <summary>
        /// Get a list of riven auctions by given search params. Auctions from banned users will be excluded.   You must specify weapon or one positive atttribute, at least. 
        /// </summary>
        /// <exception cref="WarframeMarket.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="platform">Asks the server to return content for specified platform, default: &#x60;pc&#x60;.  (optional)</param>
        /// <param name="buyoutPolicy">auction type, if not specified implied: all (optional)</param>
        /// <param name="weaponUrlName">riven weapon &#x60;url_name&#x60; property (optional)</param>
        /// <param name="positiveStats">Positive attributes in for of string: &#x60;attr1,attr2,attr3&#x60;  (optional)</param>
        /// <param name="negativeStats">Negative attributes in for of string: &#x60;attr1,attr2,attr3&#x60; For None use the string: &#x60;None&#x60;  (optional)</param>
        /// <param name="operation">Not used on the frontend right now, becuse this is not a very usefull flag. Used in conjuction with positive stats, like:  - &#x60;allOf&#x60; will get riven auction that contains all of defined positive attributes - &#x60;anyOf&#x60; will get riven auction that contains any of defined positive attributes  Default value is &#x60;allOf&#x60;  (optional)</param>
        /// <param name="masteryRankMin">Minimum rank value of riven mod (optional)</param>
        /// <param name="masteryRankMax">Maximum rank value of riven mod (optional)</param>
        /// <param name="reRollsMin">Minimum amount of rolls (optional)</param>
        /// <param name="reRollsMax">Maximum amount of rolls (optional)</param>
        /// <param name="modRank">Should mod be maxed or whatever. (optional)</param>
        /// <param name="polarity"> (optional)</param>
        /// <param name="sortBy">Sorting, by prices or by attributes value, ascending and descending. (optional)</param>
        /// <param name="operationIndex">Index associated with the operation.</param>
        /// <param name="cancellationToken">Cancellation Token to cancel the request.</param>
        /// <returns>Task of ApiResponse (AuctionsSearchTypeRivenGet200Response)</returns>
        public async System.Threading.Tasks.Task<WarframeMarket.Client.ApiResponse<AuctionsSearchTypeRivenGet200Response>> AuctionsSearchtyperivenGetWithHttpInfoAsync(string? platform = default(string?), string? buyoutPolicy = default(string?), string? weaponUrlName = default(string?), string? positiveStats = default(string?), string? negativeStats = default(string?), string? operation = default(string?), int? masteryRankMin = default(int?), int? masteryRankMax = default(int?), int? reRollsMin = default(int?), int? reRollsMax = default(int?), string? modRank = default(string?), string? polarity = default(string?), string? sortBy = default(string?), int operationIndex = 0, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))
        {

            WarframeMarket.Client.RequestOptions localVarRequestOptions = new WarframeMarket.Client.RequestOptions();

            string[] _contentTypes = new string[] {
            };

            // to determine the Accept header
            string[] _accepts = new string[] {
                "application/json"
            };

            var localVarContentType = WarframeMarket.Client.ClientUtils.SelectHeaderContentType(_contentTypes);
            if (localVarContentType != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Content-Type", localVarContentType);
            }

            var localVarAccept = WarframeMarket.Client.ClientUtils.SelectHeaderAccept(_accepts);
            if (localVarAccept != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Accept", localVarAccept);
            }

            if (buyoutPolicy != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "buyout_policy", buyoutPolicy));
            }
            if (weaponUrlName != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "weapon_url_name", weaponUrlName));
            }
            if (positiveStats != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "positive_stats", positiveStats));
            }
            if (negativeStats != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "negative_stats", negativeStats));
            }
            if (operation != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "operation", operation));
            }
            if (masteryRankMin != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "mastery_rank_min", masteryRankMin));
            }
            if (masteryRankMax != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "mastery_rank_max", masteryRankMax));
            }
            if (reRollsMin != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "re_rolls_min", reRollsMin));
            }
            if (reRollsMax != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "re_rolls_max", reRollsMax));
            }
            if (modRank != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "mod_rank", modRank));
            }
            if (polarity != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "polarity", polarity));
            }
            if (sortBy != null)
            {
                localVarRequestOptions.QueryParameters.Add(WarframeMarket.Client.ClientUtils.ParameterToMultiMap("", "sort_by", sortBy));
            }
            if (platform != null)
            {
                localVarRequestOptions.HeaderParameters.Add("Platform", WarframeMarket.Client.ClientUtils.ParameterToString(platform)); // header parameter
            }

            localVarRequestOptions.Operation = "AuctionsApi.AuctionsSearchtyperivenGet";
            localVarRequestOptions.OperationIndex = operationIndex;


            // make the HTTP request
            var localVarResponse = await this.AsynchronousClient.GetAsync<AuctionsSearchTypeRivenGet200Response>("/auctions/search?type=riven", localVarRequestOptions, this.Configuration, cancellationToken).ConfigureAwait(false);

            if (this.ExceptionFactory != null)
            {
                Exception _exception = this.ExceptionFactory("AuctionsSearchtyperivenGet", localVarResponse);
                if (_exception != null)
                {
                    throw _exception;
                }
            }

            return localVarResponse;
        }

    }
}
