github.com/vmpartner/bitmex@v1.1.0/swagger/user_api.go (about)

     1  /* 
     2   * BitMEX API
     3   *
     4   * ## REST API for the BitMEX Trading Platform  [View Changelog](/app/apiChangelog)    #### Getting Started   ##### Fetching Data  All REST endpoints are documented below. You can try out any query right from this interface.  Most table queries accept `count`, `start`, and `reverse` params. Set `reverse=true` to get rows newest-first.  Additional documentation regarding filters, timestamps, and authentication is available in [the main API documentation](https://www.bitmex.com/app/restAPI).  *All* table data is available via the [Websocket](/app/wsAPI). We highly recommend using the socket if you want to have the quickest possible data without being subject to ratelimits.  ##### Return Types  By default, all data is returned as JSON. Send `?_format=csv` to get CSV data or `?_format=xml` to get XML data.  ##### Trade Data Queries  *This is only a small subset of what is available, to get you started.*  Fill in the parameters and click the `Try it out!` button to try any of these queries.  * [Pricing Data](#!/Quote/Quote_get)  * [Trade Data](#!/Trade/Trade_get)  * [OrderBook Data](#!/OrderBook/OrderBook_getL2)  * [Settlement Data](#!/Settlement/Settlement_get)  * [Exchange Statistics](#!/Stats/Stats_history)  Every function of the BitMEX.com platform is exposed here and documented. Many more functions are available.  ##### Swagger Specification  [⇩ Download Swagger JSON](swagger.json)    ## All API Endpoints  Click to expand a section. 
     5   *
     6   * OpenAPI spec version: 1.2.0
     7   * Contact: support@bitmex.com
     8   * Generated by: https://github.com/swagger-api/swagger-codegen.git
     9   */
    10  
    11  package swagger
    12  
    13  import (
    14  	"net/url"
    15  	"net/http"
    16  	"strings"
    17  	"golang.org/x/net/context"
    18  	"encoding/json"
    19  )
    20  
    21  // Linger please
    22  var (
    23  	_ context.Context
    24  )
    25  
    26  type UserApiService service
    27  
    28  /* UserApiService Cancel a withdrawal.
    29  
    30   @param token 
    31   @return Transaction*/
    32  func (a *UserApiService) UserCancelWithdrawal(token string) (Transaction, *http.Response, error) {
    33  	var (
    34  		localVarHttpMethod = strings.ToUpper("Post")
    35  		localVarPostBody   interface{}
    36  		localVarFileName   string
    37  		localVarFileBytes  []byte
    38  		successPayload     Transaction
    39  	)
    40  
    41  	// create path and map variables
    42  	localVarPath := a.client.cfg.BasePath + "/user/cancelWithdrawal"
    43  
    44  	localVarHeaderParams := make(map[string]string)
    45  	localVarQueryParams := url.Values{}
    46  	localVarFormParams := url.Values{}
    47  
    48  	// to determine the Content-Type header
    49  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
    50  
    51  	// set Content-Type header
    52  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
    53  	if localVarHttpContentType != "" {
    54  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
    55  	}
    56  
    57  	// to determine the Accept header
    58  	localVarHttpHeaderAccepts := []string{
    59  		"application/json",
    60  		"application/xml",
    61  		"text/xml",
    62  		"application/javascript",
    63  		"text/javascript",
    64  	}
    65  
    66  	// set Accept header
    67  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
    68  	if localVarHttpHeaderAccept != "" {
    69  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
    70  	}
    71  	localVarFormParams.Add("token", parameterToString(token, ""))
    72  	r, err := a.client.prepareRequest(nil, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
    73  	if err != nil {
    74  		return successPayload, nil, err
    75  	}
    76  
    77  	localVarHttpResponse, err := a.client.callAPI(r)
    78  	if err != nil || localVarHttpResponse == nil {
    79  		return successPayload, localVarHttpResponse, err
    80  	}
    81  	defer localVarHttpResponse.Body.Close()
    82  	if localVarHttpResponse.StatusCode >= 300 {
    83  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
    84  	}
    85  
    86  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
    87  		return successPayload, localVarHttpResponse, err
    88  	}
    89  
    90  	return successPayload, localVarHttpResponse, err
    91  }
    92  
    93  /* UserApiService Check if a referral code is valid.
    94   If the code is valid, responds with the referral code's discount (e.g. `0.1` for 10%). Otherwise, will return a 404.
    95  
    96   @param optional (nil or map[string]interface{}) with one or more of:
    97       @param "referralCode" (string) 
    98   @return float64*/
    99  func (a *UserApiService) UserCheckReferralCode(localVarOptionals map[string]interface{}) (float64, *http.Response, error) {
   100  	var (
   101  		localVarHttpMethod = strings.ToUpper("Get")
   102  		localVarPostBody   interface{}
   103  		localVarFileName   string
   104  		localVarFileBytes  []byte
   105  		successPayload     float64
   106  	)
   107  
   108  	// create path and map variables
   109  	localVarPath := a.client.cfg.BasePath + "/user/checkReferralCode"
   110  
   111  	localVarHeaderParams := make(map[string]string)
   112  	localVarQueryParams := url.Values{}
   113  	localVarFormParams := url.Values{}
   114  
   115  	if err := typeCheckParameter(localVarOptionals["referralCode"], "string", "referralCode"); err != nil {
   116  		return successPayload, nil, err
   117  	}
   118  
   119  	if localVarTempParam, localVarOk := localVarOptionals["referralCode"].(string); localVarOk {
   120  		localVarQueryParams.Add("referralCode", parameterToString(localVarTempParam, ""))
   121  	}
   122  	// to determine the Content-Type header
   123  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
   124  
   125  	// set Content-Type header
   126  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   127  	if localVarHttpContentType != "" {
   128  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   129  	}
   130  
   131  	// to determine the Accept header
   132  	localVarHttpHeaderAccepts := []string{
   133  		"application/json",
   134  		"application/xml",
   135  		"text/xml",
   136  		"application/javascript",
   137  		"text/javascript",
   138  	}
   139  
   140  	// set Accept header
   141  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   142  	if localVarHttpHeaderAccept != "" {
   143  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   144  	}
   145  	r, err := a.client.prepareRequest(nil, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
   146  	if err != nil {
   147  		return successPayload, nil, err
   148  	}
   149  
   150  	localVarHttpResponse, err := a.client.callAPI(r)
   151  	if err != nil || localVarHttpResponse == nil {
   152  		return successPayload, localVarHttpResponse, err
   153  	}
   154  	defer localVarHttpResponse.Body.Close()
   155  	if localVarHttpResponse.StatusCode >= 300 {
   156  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
   157  	}
   158  
   159  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
   160  		return successPayload, localVarHttpResponse, err
   161  	}
   162  
   163  	return successPayload, localVarHttpResponse, err
   164  }
   165  
   166  /* UserApiService Confirm your email address with a token.
   167  
   168   @param token 
   169   @return AccessToken*/
   170  func (a *UserApiService) UserConfirm(token string) (AccessToken, *http.Response, error) {
   171  	var (
   172  		localVarHttpMethod = strings.ToUpper("Post")
   173  		localVarPostBody   interface{}
   174  		localVarFileName   string
   175  		localVarFileBytes  []byte
   176  		successPayload     AccessToken
   177  	)
   178  
   179  	// create path and map variables
   180  	localVarPath := a.client.cfg.BasePath + "/user/confirmEmail"
   181  
   182  	localVarHeaderParams := make(map[string]string)
   183  	localVarQueryParams := url.Values{}
   184  	localVarFormParams := url.Values{}
   185  
   186  	// to determine the Content-Type header
   187  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
   188  
   189  	// set Content-Type header
   190  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   191  	if localVarHttpContentType != "" {
   192  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   193  	}
   194  
   195  	// to determine the Accept header
   196  	localVarHttpHeaderAccepts := []string{
   197  		"application/json",
   198  		"application/xml",
   199  		"text/xml",
   200  		"application/javascript",
   201  		"text/javascript",
   202  	}
   203  
   204  	// set Accept header
   205  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   206  	if localVarHttpHeaderAccept != "" {
   207  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   208  	}
   209  	localVarFormParams.Add("token", parameterToString(token, ""))
   210  	r, err := a.client.prepareRequest(nil, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
   211  	if err != nil {
   212  		return successPayload, nil, err
   213  	}
   214  
   215  	localVarHttpResponse, err := a.client.callAPI(r)
   216  	if err != nil || localVarHttpResponse == nil {
   217  		return successPayload, localVarHttpResponse, err
   218  	}
   219  	defer localVarHttpResponse.Body.Close()
   220  	if localVarHttpResponse.StatusCode >= 300 {
   221  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
   222  	}
   223  
   224  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
   225  		return successPayload, localVarHttpResponse, err
   226  	}
   227  
   228  	return successPayload, localVarHttpResponse, err
   229  }
   230  
   231  /* UserApiService Confirm two-factor auth for this account. If using a Yubikey, simply send a token to this endpoint.
   232   * @param ctx context.Context Authentication Context 
   233   @param token Token from your selected TFA type.
   234   @param optional (nil or map[string]interface{}) with one or more of:
   235       @param "type_" (string) Two-factor auth type. Supported types: 'GA' (Google Authenticator), 'Yubikey'
   236   @return bool*/
   237  func (a *UserApiService) UserConfirmEnableTFA(ctx context.Context, token string, localVarOptionals map[string]interface{}) (bool, *http.Response, error) {
   238  	var (
   239  		localVarHttpMethod = strings.ToUpper("Post")
   240  		localVarPostBody   interface{}
   241  		localVarFileName   string
   242  		localVarFileBytes  []byte
   243  		successPayload     bool
   244  	)
   245  
   246  	// create path and map variables
   247  	localVarPath := a.client.cfg.BasePath + "/user/confirmEnableTFA"
   248  
   249  	localVarHeaderParams := make(map[string]string)
   250  	localVarQueryParams := url.Values{}
   251  	localVarFormParams := url.Values{}
   252  
   253  	if err := typeCheckParameter(localVarOptionals["type_"], "string", "type_"); err != nil {
   254  		return successPayload, nil, err
   255  	}
   256  
   257  	// to determine the Content-Type header
   258  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
   259  
   260  	// set Content-Type header
   261  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   262  	if localVarHttpContentType != "" {
   263  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   264  	}
   265  
   266  	// to determine the Accept header
   267  	localVarHttpHeaderAccepts := []string{
   268  		"application/json",
   269  		"application/xml",
   270  		"text/xml",
   271  		"application/javascript",
   272  		"text/javascript",
   273  	}
   274  
   275  	// set Accept header
   276  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   277  	if localVarHttpHeaderAccept != "" {
   278  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   279  	}
   280  	if localVarTempParam, localVarOk := localVarOptionals["type_"].(string); localVarOk {
   281  		localVarFormParams.Add("type", parameterToString(localVarTempParam, ""))
   282  	}
   283  	localVarFormParams.Add("token", parameterToString(token, ""))
   284  	if ctx != nil {
   285  		// API Key Authentication
   286  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   287  			var key string
   288  			if auth.Prefix != "" {
   289  				key = auth.Prefix + " " + auth.Key
   290  			} else {
   291  				key = auth.Key
   292  			}
   293  			localVarHeaderParams["api-key"] = key
   294  		}
   295  	}
   296  	if ctx != nil {
   297  		// API Key Authentication
   298  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   299  			var key string
   300  			if auth.Prefix != "" {
   301  				key = auth.Prefix + " " + auth.Key
   302  			} else {
   303  				key = auth.Key
   304  			}
   305  			localVarHeaderParams["api-nonce"] = key
   306  		}
   307  	}
   308  	if ctx != nil {
   309  		// API Key Authentication
   310  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   311  			var key string
   312  			if auth.Prefix != "" {
   313  				key = auth.Prefix + " " + auth.Key
   314  			} else {
   315  				key = auth.Key
   316  			}
   317  			localVarHeaderParams["api-signature"] = key
   318  		}
   319  	}
   320  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
   321  	if err != nil {
   322  		return successPayload, nil, err
   323  	}
   324  
   325  	localVarHttpResponse, err := a.client.callAPI(r)
   326  	if err != nil || localVarHttpResponse == nil {
   327  		return successPayload, localVarHttpResponse, err
   328  	}
   329  	defer localVarHttpResponse.Body.Close()
   330  	if localVarHttpResponse.StatusCode >= 300 {
   331  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
   332  	}
   333  
   334  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
   335  		return successPayload, localVarHttpResponse, err
   336  	}
   337  
   338  	return successPayload, localVarHttpResponse, err
   339  }
   340  
   341  /* UserApiService Confirm a withdrawal.
   342  
   343   @param token 
   344   @return Transaction*/
   345  func (a *UserApiService) UserConfirmWithdrawal(token string) (Transaction, *http.Response, error) {
   346  	var (
   347  		localVarHttpMethod = strings.ToUpper("Post")
   348  		localVarPostBody   interface{}
   349  		localVarFileName   string
   350  		localVarFileBytes  []byte
   351  		successPayload     Transaction
   352  	)
   353  
   354  	// create path and map variables
   355  	localVarPath := a.client.cfg.BasePath + "/user/confirmWithdrawal"
   356  
   357  	localVarHeaderParams := make(map[string]string)
   358  	localVarQueryParams := url.Values{}
   359  	localVarFormParams := url.Values{}
   360  
   361  	// to determine the Content-Type header
   362  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
   363  
   364  	// set Content-Type header
   365  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   366  	if localVarHttpContentType != "" {
   367  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   368  	}
   369  
   370  	// to determine the Accept header
   371  	localVarHttpHeaderAccepts := []string{
   372  		"application/json",
   373  		"application/xml",
   374  		"text/xml",
   375  		"application/javascript",
   376  		"text/javascript",
   377  	}
   378  
   379  	// set Accept header
   380  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   381  	if localVarHttpHeaderAccept != "" {
   382  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   383  	}
   384  	localVarFormParams.Add("token", parameterToString(token, ""))
   385  	r, err := a.client.prepareRequest(nil, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
   386  	if err != nil {
   387  		return successPayload, nil, err
   388  	}
   389  
   390  	localVarHttpResponse, err := a.client.callAPI(r)
   391  	if err != nil || localVarHttpResponse == nil {
   392  		return successPayload, localVarHttpResponse, err
   393  	}
   394  	defer localVarHttpResponse.Body.Close()
   395  	if localVarHttpResponse.StatusCode >= 300 {
   396  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
   397  	}
   398  
   399  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
   400  		return successPayload, localVarHttpResponse, err
   401  	}
   402  
   403  	return successPayload, localVarHttpResponse, err
   404  }
   405  
   406  /* UserApiService Disable two-factor auth for this account.
   407   * @param ctx context.Context Authentication Context 
   408   @param token Token from your selected TFA type.
   409   @param optional (nil or map[string]interface{}) with one or more of:
   410       @param "type_" (string) Two-factor auth type. Supported types: 'GA' (Google Authenticator)
   411   @return bool*/
   412  func (a *UserApiService) UserDisableTFA(ctx context.Context, token string, localVarOptionals map[string]interface{}) (bool, *http.Response, error) {
   413  	var (
   414  		localVarHttpMethod = strings.ToUpper("Post")
   415  		localVarPostBody   interface{}
   416  		localVarFileName   string
   417  		localVarFileBytes  []byte
   418  		successPayload     bool
   419  	)
   420  
   421  	// create path and map variables
   422  	localVarPath := a.client.cfg.BasePath + "/user/disableTFA"
   423  
   424  	localVarHeaderParams := make(map[string]string)
   425  	localVarQueryParams := url.Values{}
   426  	localVarFormParams := url.Values{}
   427  
   428  	if err := typeCheckParameter(localVarOptionals["type_"], "string", "type_"); err != nil {
   429  		return successPayload, nil, err
   430  	}
   431  
   432  	// to determine the Content-Type header
   433  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
   434  
   435  	// set Content-Type header
   436  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   437  	if localVarHttpContentType != "" {
   438  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   439  	}
   440  
   441  	// to determine the Accept header
   442  	localVarHttpHeaderAccepts := []string{
   443  		"application/json",
   444  		"application/xml",
   445  		"text/xml",
   446  		"application/javascript",
   447  		"text/javascript",
   448  	}
   449  
   450  	// set Accept header
   451  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   452  	if localVarHttpHeaderAccept != "" {
   453  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   454  	}
   455  	if localVarTempParam, localVarOk := localVarOptionals["type_"].(string); localVarOk {
   456  		localVarFormParams.Add("type", parameterToString(localVarTempParam, ""))
   457  	}
   458  	localVarFormParams.Add("token", parameterToString(token, ""))
   459  	if ctx != nil {
   460  		// API Key Authentication
   461  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   462  			var key string
   463  			if auth.Prefix != "" {
   464  				key = auth.Prefix + " " + auth.Key
   465  			} else {
   466  				key = auth.Key
   467  			}
   468  			localVarHeaderParams["api-key"] = key
   469  		}
   470  	}
   471  	if ctx != nil {
   472  		// API Key Authentication
   473  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   474  			var key string
   475  			if auth.Prefix != "" {
   476  				key = auth.Prefix + " " + auth.Key
   477  			} else {
   478  				key = auth.Key
   479  			}
   480  			localVarHeaderParams["api-nonce"] = key
   481  		}
   482  	}
   483  	if ctx != nil {
   484  		// API Key Authentication
   485  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   486  			var key string
   487  			if auth.Prefix != "" {
   488  				key = auth.Prefix + " " + auth.Key
   489  			} else {
   490  				key = auth.Key
   491  			}
   492  			localVarHeaderParams["api-signature"] = key
   493  		}
   494  	}
   495  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
   496  	if err != nil {
   497  		return successPayload, nil, err
   498  	}
   499  
   500  	localVarHttpResponse, err := a.client.callAPI(r)
   501  	if err != nil || localVarHttpResponse == nil {
   502  		return successPayload, localVarHttpResponse, err
   503  	}
   504  	defer localVarHttpResponse.Body.Close()
   505  	if localVarHttpResponse.StatusCode >= 300 {
   506  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
   507  	}
   508  
   509  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
   510  		return successPayload, localVarHttpResponse, err
   511  	}
   512  
   513  	return successPayload, localVarHttpResponse, err
   514  }
   515  
   516  /* UserApiService Get your user model.
   517   * @param ctx context.Context Authentication Context 
   518   @return User*/
   519  func (a *UserApiService) UserGet(ctx context.Context, ) (User, *http.Response, error) {
   520  	var (
   521  		localVarHttpMethod = strings.ToUpper("Get")
   522  		localVarPostBody   interface{}
   523  		localVarFileName   string
   524  		localVarFileBytes  []byte
   525  		successPayload     User
   526  	)
   527  
   528  	// create path and map variables
   529  	localVarPath := a.client.cfg.BasePath + "/user"
   530  
   531  	localVarHeaderParams := make(map[string]string)
   532  	localVarQueryParams := url.Values{}
   533  	localVarFormParams := url.Values{}
   534  
   535  	// to determine the Content-Type header
   536  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
   537  
   538  	// set Content-Type header
   539  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   540  	if localVarHttpContentType != "" {
   541  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   542  	}
   543  
   544  	// to determine the Accept header
   545  	localVarHttpHeaderAccepts := []string{
   546  		"application/json",
   547  		"application/xml",
   548  		"text/xml",
   549  		"application/javascript",
   550  		"text/javascript",
   551  	}
   552  
   553  	// set Accept header
   554  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   555  	if localVarHttpHeaderAccept != "" {
   556  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   557  	}
   558  	if ctx != nil {
   559  		// API Key Authentication
   560  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   561  			var key string
   562  			if auth.Prefix != "" {
   563  				key = auth.Prefix + " " + auth.Key
   564  			} else {
   565  				key = auth.Key
   566  			}
   567  			localVarHeaderParams["api-key"] = key
   568  		}
   569  	}
   570  	if ctx != nil {
   571  		// API Key Authentication
   572  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   573  			var key string
   574  			if auth.Prefix != "" {
   575  				key = auth.Prefix + " " + auth.Key
   576  			} else {
   577  				key = auth.Key
   578  			}
   579  			localVarHeaderParams["api-nonce"] = key
   580  		}
   581  	}
   582  	if ctx != nil {
   583  		// API Key Authentication
   584  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   585  			var key string
   586  			if auth.Prefix != "" {
   587  				key = auth.Prefix + " " + auth.Key
   588  			} else {
   589  				key = auth.Key
   590  			}
   591  			localVarHeaderParams["api-signature"] = key
   592  		}
   593  	}
   594  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
   595  	if err != nil {
   596  		return successPayload, nil, err
   597  	}
   598  
   599  	localVarHttpResponse, err := a.client.callAPI(r)
   600  	if err != nil || localVarHttpResponse == nil {
   601  		return successPayload, localVarHttpResponse, err
   602  	}
   603  	defer localVarHttpResponse.Body.Close()
   604  	if localVarHttpResponse.StatusCode >= 300 {
   605  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
   606  	}
   607  
   608  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
   609  		return successPayload, localVarHttpResponse, err
   610  	}
   611  
   612  	return successPayload, localVarHttpResponse, err
   613  }
   614  
   615  /* UserApiService Get your current affiliate/referral status.
   616   * @param ctx context.Context Authentication Context 
   617   @return Affiliate*/
   618  func (a *UserApiService) UserGetAffiliateStatus(ctx context.Context, ) (Affiliate, *http.Response, error) {
   619  	var (
   620  		localVarHttpMethod = strings.ToUpper("Get")
   621  		localVarPostBody   interface{}
   622  		localVarFileName   string
   623  		localVarFileBytes  []byte
   624  		successPayload     Affiliate
   625  	)
   626  
   627  	// create path and map variables
   628  	localVarPath := a.client.cfg.BasePath + "/user/affiliateStatus"
   629  
   630  	localVarHeaderParams := make(map[string]string)
   631  	localVarQueryParams := url.Values{}
   632  	localVarFormParams := url.Values{}
   633  
   634  	// to determine the Content-Type header
   635  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
   636  
   637  	// set Content-Type header
   638  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   639  	if localVarHttpContentType != "" {
   640  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   641  	}
   642  
   643  	// to determine the Accept header
   644  	localVarHttpHeaderAccepts := []string{
   645  		"application/json",
   646  		"application/xml",
   647  		"text/xml",
   648  		"application/javascript",
   649  		"text/javascript",
   650  	}
   651  
   652  	// set Accept header
   653  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   654  	if localVarHttpHeaderAccept != "" {
   655  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   656  	}
   657  	if ctx != nil {
   658  		// API Key Authentication
   659  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   660  			var key string
   661  			if auth.Prefix != "" {
   662  				key = auth.Prefix + " " + auth.Key
   663  			} else {
   664  				key = auth.Key
   665  			}
   666  			localVarHeaderParams["api-key"] = key
   667  		}
   668  	}
   669  	if ctx != nil {
   670  		// API Key Authentication
   671  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   672  			var key string
   673  			if auth.Prefix != "" {
   674  				key = auth.Prefix + " " + auth.Key
   675  			} else {
   676  				key = auth.Key
   677  			}
   678  			localVarHeaderParams["api-nonce"] = key
   679  		}
   680  	}
   681  	if ctx != nil {
   682  		// API Key Authentication
   683  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   684  			var key string
   685  			if auth.Prefix != "" {
   686  				key = auth.Prefix + " " + auth.Key
   687  			} else {
   688  				key = auth.Key
   689  			}
   690  			localVarHeaderParams["api-signature"] = key
   691  		}
   692  	}
   693  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
   694  	if err != nil {
   695  		return successPayload, nil, err
   696  	}
   697  
   698  	localVarHttpResponse, err := a.client.callAPI(r)
   699  	if err != nil || localVarHttpResponse == nil {
   700  		return successPayload, localVarHttpResponse, err
   701  	}
   702  	defer localVarHttpResponse.Body.Close()
   703  	if localVarHttpResponse.StatusCode >= 300 {
   704  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
   705  	}
   706  
   707  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
   708  		return successPayload, localVarHttpResponse, err
   709  	}
   710  
   711  	return successPayload, localVarHttpResponse, err
   712  }
   713  
   714  /* UserApiService Get your account's commission status.
   715   * @param ctx context.Context Authentication Context 
   716   @return []UserCommission*/
   717  func (a *UserApiService) UserGetCommission(ctx context.Context, ) ([]UserCommission, *http.Response, error) {
   718  	var (
   719  		localVarHttpMethod = strings.ToUpper("Get")
   720  		localVarPostBody   interface{}
   721  		localVarFileName   string
   722  		localVarFileBytes  []byte
   723  		successPayload     []UserCommission
   724  	)
   725  
   726  	// create path and map variables
   727  	localVarPath := a.client.cfg.BasePath + "/user/commission"
   728  
   729  	localVarHeaderParams := make(map[string]string)
   730  	localVarQueryParams := url.Values{}
   731  	localVarFormParams := url.Values{}
   732  
   733  	// to determine the Content-Type header
   734  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
   735  
   736  	// set Content-Type header
   737  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   738  	if localVarHttpContentType != "" {
   739  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   740  	}
   741  
   742  	// to determine the Accept header
   743  	localVarHttpHeaderAccepts := []string{
   744  		"application/json",
   745  		"application/xml",
   746  		"text/xml",
   747  		"application/javascript",
   748  		"text/javascript",
   749  	}
   750  
   751  	// set Accept header
   752  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   753  	if localVarHttpHeaderAccept != "" {
   754  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   755  	}
   756  	if ctx != nil {
   757  		// API Key Authentication
   758  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   759  			var key string
   760  			if auth.Prefix != "" {
   761  				key = auth.Prefix + " " + auth.Key
   762  			} else {
   763  				key = auth.Key
   764  			}
   765  			localVarHeaderParams["api-key"] = key
   766  		}
   767  	}
   768  	if ctx != nil {
   769  		// API Key Authentication
   770  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   771  			var key string
   772  			if auth.Prefix != "" {
   773  				key = auth.Prefix + " " + auth.Key
   774  			} else {
   775  				key = auth.Key
   776  			}
   777  			localVarHeaderParams["api-nonce"] = key
   778  		}
   779  	}
   780  	if ctx != nil {
   781  		// API Key Authentication
   782  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   783  			var key string
   784  			if auth.Prefix != "" {
   785  				key = auth.Prefix + " " + auth.Key
   786  			} else {
   787  				key = auth.Key
   788  			}
   789  			localVarHeaderParams["api-signature"] = key
   790  		}
   791  	}
   792  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
   793  	if err != nil {
   794  		return successPayload, nil, err
   795  	}
   796  
   797  	localVarHttpResponse, err := a.client.callAPI(r)
   798  	if err != nil || localVarHttpResponse == nil {
   799  		return successPayload, localVarHttpResponse, err
   800  	}
   801  	defer localVarHttpResponse.Body.Close()
   802  	if localVarHttpResponse.StatusCode >= 300 {
   803  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
   804  	}
   805  
   806  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
   807  		return successPayload, localVarHttpResponse, err
   808  	}
   809  
   810  	return successPayload, localVarHttpResponse, err
   811  }
   812  
   813  /* UserApiService Get a deposit address.
   814   * @param ctx context.Context Authentication Context 
   815   @param optional (nil or map[string]interface{}) with one or more of:
   816       @param "currency" (string) 
   817   @return string*/
   818  func (a *UserApiService) UserGetDepositAddress(ctx context.Context, localVarOptionals map[string]interface{}) (string, *http.Response, error) {
   819  	var (
   820  		localVarHttpMethod = strings.ToUpper("Get")
   821  		localVarPostBody   interface{}
   822  		localVarFileName   string
   823  		localVarFileBytes  []byte
   824  		successPayload     string
   825  	)
   826  
   827  	// create path and map variables
   828  	localVarPath := a.client.cfg.BasePath + "/user/depositAddress"
   829  
   830  	localVarHeaderParams := make(map[string]string)
   831  	localVarQueryParams := url.Values{}
   832  	localVarFormParams := url.Values{}
   833  
   834  	if err := typeCheckParameter(localVarOptionals["currency"], "string", "currency"); err != nil {
   835  		return successPayload, nil, err
   836  	}
   837  
   838  	if localVarTempParam, localVarOk := localVarOptionals["currency"].(string); localVarOk {
   839  		localVarQueryParams.Add("currency", parameterToString(localVarTempParam, ""))
   840  	}
   841  	// to determine the Content-Type header
   842  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
   843  
   844  	// set Content-Type header
   845  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   846  	if localVarHttpContentType != "" {
   847  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   848  	}
   849  
   850  	// to determine the Accept header
   851  	localVarHttpHeaderAccepts := []string{
   852  		"application/json",
   853  		"application/xml",
   854  		"text/xml",
   855  		"application/javascript",
   856  		"text/javascript",
   857  	}
   858  
   859  	// set Accept header
   860  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   861  	if localVarHttpHeaderAccept != "" {
   862  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   863  	}
   864  	if ctx != nil {
   865  		// API Key Authentication
   866  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   867  			var key string
   868  			if auth.Prefix != "" {
   869  				key = auth.Prefix + " " + auth.Key
   870  			} else {
   871  				key = auth.Key
   872  			}
   873  			localVarHeaderParams["api-key"] = key
   874  		}
   875  	}
   876  	if ctx != nil {
   877  		// API Key Authentication
   878  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   879  			var key string
   880  			if auth.Prefix != "" {
   881  				key = auth.Prefix + " " + auth.Key
   882  			} else {
   883  				key = auth.Key
   884  			}
   885  			localVarHeaderParams["api-nonce"] = key
   886  		}
   887  	}
   888  	if ctx != nil {
   889  		// API Key Authentication
   890  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   891  			var key string
   892  			if auth.Prefix != "" {
   893  				key = auth.Prefix + " " + auth.Key
   894  			} else {
   895  				key = auth.Key
   896  			}
   897  			localVarHeaderParams["api-signature"] = key
   898  		}
   899  	}
   900  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
   901  	if err != nil {
   902  		return successPayload, nil, err
   903  	}
   904  
   905  	localVarHttpResponse, err := a.client.callAPI(r)
   906  	if err != nil || localVarHttpResponse == nil {
   907  		return successPayload, localVarHttpResponse, err
   908  	}
   909  	defer localVarHttpResponse.Body.Close()
   910  	if localVarHttpResponse.StatusCode >= 300 {
   911  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
   912  	}
   913  
   914  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
   915  		return successPayload, localVarHttpResponse, err
   916  	}
   917  
   918  	return successPayload, localVarHttpResponse, err
   919  }
   920  
   921  /* UserApiService Get your account's margin status. Send a currency of \"all\" to receive an array of all supported currencies.
   922   * @param ctx context.Context Authentication Context 
   923   @param optional (nil or map[string]interface{}) with one or more of:
   924       @param "currency" (string) 
   925   @return Margin*/
   926  func (a *UserApiService) UserGetMargin(ctx context.Context, localVarOptionals map[string]interface{}) (Margin, *http.Response, error) {
   927  	var (
   928  		localVarHttpMethod = strings.ToUpper("Get")
   929  		localVarPostBody   interface{}
   930  		localVarFileName   string
   931  		localVarFileBytes  []byte
   932  		successPayload     Margin
   933  	)
   934  
   935  	// create path and map variables
   936  	localVarPath := a.client.cfg.BasePath + "/user/margin"
   937  
   938  	localVarHeaderParams := make(map[string]string)
   939  	localVarQueryParams := url.Values{}
   940  	localVarFormParams := url.Values{}
   941  
   942  	if err := typeCheckParameter(localVarOptionals["currency"], "string", "currency"); err != nil {
   943  		return successPayload, nil, err
   944  	}
   945  
   946  	if localVarTempParam, localVarOk := localVarOptionals["currency"].(string); localVarOk {
   947  		localVarQueryParams.Add("currency", parameterToString(localVarTempParam, ""))
   948  	}
   949  	// to determine the Content-Type header
   950  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
   951  
   952  	// set Content-Type header
   953  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
   954  	if localVarHttpContentType != "" {
   955  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
   956  	}
   957  
   958  	// to determine the Accept header
   959  	localVarHttpHeaderAccepts := []string{
   960  		"application/json",
   961  		"application/xml",
   962  		"text/xml",
   963  		"application/javascript",
   964  		"text/javascript",
   965  	}
   966  
   967  	// set Accept header
   968  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
   969  	if localVarHttpHeaderAccept != "" {
   970  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
   971  	}
   972  	if ctx != nil {
   973  		// API Key Authentication
   974  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   975  			var key string
   976  			if auth.Prefix != "" {
   977  				key = auth.Prefix + " " + auth.Key
   978  			} else {
   979  				key = auth.Key
   980  			}
   981  			localVarHeaderParams["api-key"] = key
   982  		}
   983  	}
   984  	if ctx != nil {
   985  		// API Key Authentication
   986  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   987  			var key string
   988  			if auth.Prefix != "" {
   989  				key = auth.Prefix + " " + auth.Key
   990  			} else {
   991  				key = auth.Key
   992  			}
   993  			localVarHeaderParams["api-nonce"] = key
   994  		}
   995  	}
   996  	if ctx != nil {
   997  		// API Key Authentication
   998  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
   999  			var key string
  1000  			if auth.Prefix != "" {
  1001  				key = auth.Prefix + " " + auth.Key
  1002  			} else {
  1003  				key = auth.Key
  1004  			}
  1005  			localVarHeaderParams["api-signature"] = key
  1006  		}
  1007  	}
  1008  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
  1009  	if err != nil {
  1010  		return successPayload, nil, err
  1011  	}
  1012  
  1013  	localVarHttpResponse, err := a.client.callAPI(r)
  1014  	if err != nil || localVarHttpResponse == nil {
  1015  		return successPayload, localVarHttpResponse, err
  1016  	}
  1017  	defer localVarHttpResponse.Body.Close()
  1018  	if localVarHttpResponse.StatusCode >= 300 {
  1019  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
  1020  	}
  1021  
  1022  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
  1023  		return successPayload, localVarHttpResponse, err
  1024  	}
  1025  
  1026  	return successPayload, localVarHttpResponse, err
  1027  }
  1028  
  1029  /* UserApiService Get your current wallet information.
  1030   * @param ctx context.Context Authentication Context 
  1031   @param optional (nil or map[string]interface{}) with one or more of:
  1032       @param "currency" (string) 
  1033   @return Wallet*/
  1034  func (a *UserApiService) UserGetWallet(ctx context.Context, localVarOptionals map[string]interface{}) (Wallet, *http.Response, error) {
  1035  	var (
  1036  		localVarHttpMethod = strings.ToUpper("Get")
  1037  		localVarPostBody   interface{}
  1038  		localVarFileName   string
  1039  		localVarFileBytes  []byte
  1040  		successPayload     Wallet
  1041  	)
  1042  
  1043  	// create path and map variables
  1044  	localVarPath := a.client.cfg.BasePath + "/user/wallet"
  1045  
  1046  	localVarHeaderParams := make(map[string]string)
  1047  	localVarQueryParams := url.Values{}
  1048  	localVarFormParams := url.Values{}
  1049  
  1050  	if err := typeCheckParameter(localVarOptionals["currency"], "string", "currency"); err != nil {
  1051  		return successPayload, nil, err
  1052  	}
  1053  
  1054  	if localVarTempParam, localVarOk := localVarOptionals["currency"].(string); localVarOk {
  1055  		localVarQueryParams.Add("currency", parameterToString(localVarTempParam, ""))
  1056  	}
  1057  	// to determine the Content-Type header
  1058  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
  1059  
  1060  	// set Content-Type header
  1061  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
  1062  	if localVarHttpContentType != "" {
  1063  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
  1064  	}
  1065  
  1066  	// to determine the Accept header
  1067  	localVarHttpHeaderAccepts := []string{
  1068  		"application/json",
  1069  		"application/xml",
  1070  		"text/xml",
  1071  		"application/javascript",
  1072  		"text/javascript",
  1073  	}
  1074  
  1075  	// set Accept header
  1076  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
  1077  	if localVarHttpHeaderAccept != "" {
  1078  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
  1079  	}
  1080  	if ctx != nil {
  1081  		// API Key Authentication
  1082  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1083  			var key string
  1084  			if auth.Prefix != "" {
  1085  				key = auth.Prefix + " " + auth.Key
  1086  			} else {
  1087  				key = auth.Key
  1088  			}
  1089  			localVarHeaderParams["api-key"] = key
  1090  		}
  1091  	}
  1092  	if ctx != nil {
  1093  		// API Key Authentication
  1094  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1095  			var key string
  1096  			if auth.Prefix != "" {
  1097  				key = auth.Prefix + " " + auth.Key
  1098  			} else {
  1099  				key = auth.Key
  1100  			}
  1101  			localVarHeaderParams["api-nonce"] = key
  1102  		}
  1103  	}
  1104  	if ctx != nil {
  1105  		// API Key Authentication
  1106  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1107  			var key string
  1108  			if auth.Prefix != "" {
  1109  				key = auth.Prefix + " " + auth.Key
  1110  			} else {
  1111  				key = auth.Key
  1112  			}
  1113  			localVarHeaderParams["api-signature"] = key
  1114  		}
  1115  	}
  1116  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
  1117  	if err != nil {
  1118  		return successPayload, nil, err
  1119  	}
  1120  
  1121  	localVarHttpResponse, err := a.client.callAPI(r)
  1122  	if err != nil || localVarHttpResponse == nil {
  1123  		return successPayload, localVarHttpResponse, err
  1124  	}
  1125  	defer localVarHttpResponse.Body.Close()
  1126  	if localVarHttpResponse.StatusCode >= 300 {
  1127  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
  1128  	}
  1129  
  1130  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
  1131  		return successPayload, localVarHttpResponse, err
  1132  	}
  1133  
  1134  	return successPayload, localVarHttpResponse, err
  1135  }
  1136  
  1137  /* UserApiService Get a history of all of your wallet transactions (deposits, withdrawals, PNL).
  1138   * @param ctx context.Context Authentication Context 
  1139   @param optional (nil or map[string]interface{}) with one or more of:
  1140       @param "currency" (string) 
  1141   @return []Transaction*/
  1142  func (a *UserApiService) UserGetWalletHistory(ctx context.Context, localVarOptionals map[string]interface{}) ([]Transaction, *http.Response, error) {
  1143  	var (
  1144  		localVarHttpMethod = strings.ToUpper("Get")
  1145  		localVarPostBody   interface{}
  1146  		localVarFileName   string
  1147  		localVarFileBytes  []byte
  1148  		successPayload     []Transaction
  1149  	)
  1150  
  1151  	// create path and map variables
  1152  	localVarPath := a.client.cfg.BasePath + "/user/walletHistory"
  1153  
  1154  	localVarHeaderParams := make(map[string]string)
  1155  	localVarQueryParams := url.Values{}
  1156  	localVarFormParams := url.Values{}
  1157  
  1158  	if err := typeCheckParameter(localVarOptionals["currency"], "string", "currency"); err != nil {
  1159  		return successPayload, nil, err
  1160  	}
  1161  
  1162  	if localVarTempParam, localVarOk := localVarOptionals["currency"].(string); localVarOk {
  1163  		localVarQueryParams.Add("currency", parameterToString(localVarTempParam, ""))
  1164  	}
  1165  	// to determine the Content-Type header
  1166  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
  1167  
  1168  	// set Content-Type header
  1169  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
  1170  	if localVarHttpContentType != "" {
  1171  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
  1172  	}
  1173  
  1174  	// to determine the Accept header
  1175  	localVarHttpHeaderAccepts := []string{
  1176  		"application/json",
  1177  		"application/xml",
  1178  		"text/xml",
  1179  		"application/javascript",
  1180  		"text/javascript",
  1181  	}
  1182  
  1183  	// set Accept header
  1184  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
  1185  	if localVarHttpHeaderAccept != "" {
  1186  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
  1187  	}
  1188  	if ctx != nil {
  1189  		// API Key Authentication
  1190  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1191  			var key string
  1192  			if auth.Prefix != "" {
  1193  				key = auth.Prefix + " " + auth.Key
  1194  			} else {
  1195  				key = auth.Key
  1196  			}
  1197  			localVarHeaderParams["api-key"] = key
  1198  		}
  1199  	}
  1200  	if ctx != nil {
  1201  		// API Key Authentication
  1202  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1203  			var key string
  1204  			if auth.Prefix != "" {
  1205  				key = auth.Prefix + " " + auth.Key
  1206  			} else {
  1207  				key = auth.Key
  1208  			}
  1209  			localVarHeaderParams["api-nonce"] = key
  1210  		}
  1211  	}
  1212  	if ctx != nil {
  1213  		// API Key Authentication
  1214  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1215  			var key string
  1216  			if auth.Prefix != "" {
  1217  				key = auth.Prefix + " " + auth.Key
  1218  			} else {
  1219  				key = auth.Key
  1220  			}
  1221  			localVarHeaderParams["api-signature"] = key
  1222  		}
  1223  	}
  1224  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
  1225  	if err != nil {
  1226  		return successPayload, nil, err
  1227  	}
  1228  
  1229  	localVarHttpResponse, err := a.client.callAPI(r)
  1230  	if err != nil || localVarHttpResponse == nil {
  1231  		return successPayload, localVarHttpResponse, err
  1232  	}
  1233  	defer localVarHttpResponse.Body.Close()
  1234  	if localVarHttpResponse.StatusCode >= 300 {
  1235  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
  1236  	}
  1237  
  1238  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
  1239  		return successPayload, localVarHttpResponse, err
  1240  	}
  1241  
  1242  	return successPayload, localVarHttpResponse, err
  1243  }
  1244  
  1245  /* UserApiService Get a summary of all of your wallet transactions (deposits, withdrawals, PNL).
  1246   * @param ctx context.Context Authentication Context 
  1247   @param optional (nil or map[string]interface{}) with one or more of:
  1248       @param "currency" (string) 
  1249   @return []Transaction*/
  1250  func (a *UserApiService) UserGetWalletSummary(ctx context.Context, localVarOptionals map[string]interface{}) ([]Transaction, *http.Response, error) {
  1251  	var (
  1252  		localVarHttpMethod = strings.ToUpper("Get")
  1253  		localVarPostBody   interface{}
  1254  		localVarFileName   string
  1255  		localVarFileBytes  []byte
  1256  		successPayload     []Transaction
  1257  	)
  1258  
  1259  	// create path and map variables
  1260  	localVarPath := a.client.cfg.BasePath + "/user/walletSummary"
  1261  
  1262  	localVarHeaderParams := make(map[string]string)
  1263  	localVarQueryParams := url.Values{}
  1264  	localVarFormParams := url.Values{}
  1265  
  1266  	if err := typeCheckParameter(localVarOptionals["currency"], "string", "currency"); err != nil {
  1267  		return successPayload, nil, err
  1268  	}
  1269  
  1270  	if localVarTempParam, localVarOk := localVarOptionals["currency"].(string); localVarOk {
  1271  		localVarQueryParams.Add("currency", parameterToString(localVarTempParam, ""))
  1272  	}
  1273  	// to determine the Content-Type header
  1274  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
  1275  
  1276  	// set Content-Type header
  1277  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
  1278  	if localVarHttpContentType != "" {
  1279  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
  1280  	}
  1281  
  1282  	// to determine the Accept header
  1283  	localVarHttpHeaderAccepts := []string{
  1284  		"application/json",
  1285  		"application/xml",
  1286  		"text/xml",
  1287  		"application/javascript",
  1288  		"text/javascript",
  1289  	}
  1290  
  1291  	// set Accept header
  1292  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
  1293  	if localVarHttpHeaderAccept != "" {
  1294  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
  1295  	}
  1296  	if ctx != nil {
  1297  		// API Key Authentication
  1298  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1299  			var key string
  1300  			if auth.Prefix != "" {
  1301  				key = auth.Prefix + " " + auth.Key
  1302  			} else {
  1303  				key = auth.Key
  1304  			}
  1305  			localVarHeaderParams["api-key"] = key
  1306  		}
  1307  	}
  1308  	if ctx != nil {
  1309  		// API Key Authentication
  1310  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1311  			var key string
  1312  			if auth.Prefix != "" {
  1313  				key = auth.Prefix + " " + auth.Key
  1314  			} else {
  1315  				key = auth.Key
  1316  			}
  1317  			localVarHeaderParams["api-nonce"] = key
  1318  		}
  1319  	}
  1320  	if ctx != nil {
  1321  		// API Key Authentication
  1322  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1323  			var key string
  1324  			if auth.Prefix != "" {
  1325  				key = auth.Prefix + " " + auth.Key
  1326  			} else {
  1327  				key = auth.Key
  1328  			}
  1329  			localVarHeaderParams["api-signature"] = key
  1330  		}
  1331  	}
  1332  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
  1333  	if err != nil {
  1334  		return successPayload, nil, err
  1335  	}
  1336  
  1337  	localVarHttpResponse, err := a.client.callAPI(r)
  1338  	if err != nil || localVarHttpResponse == nil {
  1339  		return successPayload, localVarHttpResponse, err
  1340  	}
  1341  	defer localVarHttpResponse.Body.Close()
  1342  	if localVarHttpResponse.StatusCode >= 300 {
  1343  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
  1344  	}
  1345  
  1346  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
  1347  		return successPayload, localVarHttpResponse, err
  1348  	}
  1349  
  1350  	return successPayload, localVarHttpResponse, err
  1351  }
  1352  
  1353  /* UserApiService Log out of BitMEX.
  1354  
  1355   @return */
  1356  func (a *UserApiService) UserLogout() (*http.Response, error) {
  1357  	var (
  1358  		localVarHttpMethod = strings.ToUpper("Post")
  1359  		localVarPostBody   interface{}
  1360  		localVarFileName   string
  1361  		localVarFileBytes  []byte
  1362  	)
  1363  
  1364  	// create path and map variables
  1365  	localVarPath := a.client.cfg.BasePath + "/user/logout"
  1366  
  1367  	localVarHeaderParams := make(map[string]string)
  1368  	localVarQueryParams := url.Values{}
  1369  	localVarFormParams := url.Values{}
  1370  
  1371  	// to determine the Content-Type header
  1372  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
  1373  
  1374  	// set Content-Type header
  1375  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
  1376  	if localVarHttpContentType != "" {
  1377  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
  1378  	}
  1379  
  1380  	// to determine the Accept header
  1381  	localVarHttpHeaderAccepts := []string{
  1382  		"application/json",
  1383  		"application/xml",
  1384  		"text/xml",
  1385  		"application/javascript",
  1386  		"text/javascript",
  1387  	}
  1388  
  1389  	// set Accept header
  1390  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
  1391  	if localVarHttpHeaderAccept != "" {
  1392  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
  1393  	}
  1394  	r, err := a.client.prepareRequest(nil, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
  1395  	if err != nil {
  1396  		return nil, err
  1397  	}
  1398  
  1399  	localVarHttpResponse, err := a.client.callAPI(r)
  1400  	if err != nil || localVarHttpResponse == nil {
  1401  		return localVarHttpResponse, err
  1402  	}
  1403  	defer localVarHttpResponse.Body.Close()
  1404  	if localVarHttpResponse.StatusCode >= 300 {
  1405  		return localVarHttpResponse, reportError(localVarHttpResponse.Status)
  1406  	}
  1407  
  1408  	return localVarHttpResponse, err
  1409  }
  1410  
  1411  /* UserApiService Log all systems out of BitMEX. This will revoke all of your account's access tokens, logging you out on all devices.
  1412   * @param ctx context.Context Authentication Context 
  1413   @return float64*/
  1414  func (a *UserApiService) UserLogoutAll(ctx context.Context, ) (float64, *http.Response, error) {
  1415  	var (
  1416  		localVarHttpMethod = strings.ToUpper("Post")
  1417  		localVarPostBody   interface{}
  1418  		localVarFileName   string
  1419  		localVarFileBytes  []byte
  1420  		successPayload     float64
  1421  	)
  1422  
  1423  	// create path and map variables
  1424  	localVarPath := a.client.cfg.BasePath + "/user/logoutAll"
  1425  
  1426  	localVarHeaderParams := make(map[string]string)
  1427  	localVarQueryParams := url.Values{}
  1428  	localVarFormParams := url.Values{}
  1429  
  1430  	// to determine the Content-Type header
  1431  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
  1432  
  1433  	// set Content-Type header
  1434  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
  1435  	if localVarHttpContentType != "" {
  1436  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
  1437  	}
  1438  
  1439  	// to determine the Accept header
  1440  	localVarHttpHeaderAccepts := []string{
  1441  		"application/json",
  1442  		"application/xml",
  1443  		"text/xml",
  1444  		"application/javascript",
  1445  		"text/javascript",
  1446  	}
  1447  
  1448  	// set Accept header
  1449  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
  1450  	if localVarHttpHeaderAccept != "" {
  1451  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
  1452  	}
  1453  	if ctx != nil {
  1454  		// API Key Authentication
  1455  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1456  			var key string
  1457  			if auth.Prefix != "" {
  1458  				key = auth.Prefix + " " + auth.Key
  1459  			} else {
  1460  				key = auth.Key
  1461  			}
  1462  			localVarHeaderParams["api-key"] = key
  1463  		}
  1464  	}
  1465  	if ctx != nil {
  1466  		// API Key Authentication
  1467  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1468  			var key string
  1469  			if auth.Prefix != "" {
  1470  				key = auth.Prefix + " " + auth.Key
  1471  			} else {
  1472  				key = auth.Key
  1473  			}
  1474  			localVarHeaderParams["api-nonce"] = key
  1475  		}
  1476  	}
  1477  	if ctx != nil {
  1478  		// API Key Authentication
  1479  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1480  			var key string
  1481  			if auth.Prefix != "" {
  1482  				key = auth.Prefix + " " + auth.Key
  1483  			} else {
  1484  				key = auth.Key
  1485  			}
  1486  			localVarHeaderParams["api-signature"] = key
  1487  		}
  1488  	}
  1489  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
  1490  	if err != nil {
  1491  		return successPayload, nil, err
  1492  	}
  1493  
  1494  	localVarHttpResponse, err := a.client.callAPI(r)
  1495  	if err != nil || localVarHttpResponse == nil {
  1496  		return successPayload, localVarHttpResponse, err
  1497  	}
  1498  	defer localVarHttpResponse.Body.Close()
  1499  	if localVarHttpResponse.StatusCode >= 300 {
  1500  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
  1501  	}
  1502  
  1503  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
  1504  		return successPayload, localVarHttpResponse, err
  1505  	}
  1506  
  1507  	return successPayload, localVarHttpResponse, err
  1508  }
  1509  
  1510  /* UserApiService Get the minimum withdrawal fee for a currency.
  1511   This is changed based on network conditions to ensure timely withdrawals. During network congestion, this may be high. The fee is returned in the same currency.
  1512  
  1513   @param optional (nil or map[string]interface{}) with one or more of:
  1514       @param "currency" (string) 
  1515   @return interface{}*/
  1516  func (a *UserApiService) UserMinWithdrawalFee(localVarOptionals map[string]interface{}) (interface{}, *http.Response, error) {
  1517  	var (
  1518  		localVarHttpMethod = strings.ToUpper("Get")
  1519  		localVarPostBody   interface{}
  1520  		localVarFileName   string
  1521  		localVarFileBytes  []byte
  1522  		successPayload     interface{}
  1523  	)
  1524  
  1525  	// create path and map variables
  1526  	localVarPath := a.client.cfg.BasePath + "/user/minWithdrawalFee"
  1527  
  1528  	localVarHeaderParams := make(map[string]string)
  1529  	localVarQueryParams := url.Values{}
  1530  	localVarFormParams := url.Values{}
  1531  
  1532  	if err := typeCheckParameter(localVarOptionals["currency"], "string", "currency"); err != nil {
  1533  		return successPayload, nil, err
  1534  	}
  1535  
  1536  	if localVarTempParam, localVarOk := localVarOptionals["currency"].(string); localVarOk {
  1537  		localVarQueryParams.Add("currency", parameterToString(localVarTempParam, ""))
  1538  	}
  1539  	// to determine the Content-Type header
  1540  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
  1541  
  1542  	// set Content-Type header
  1543  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
  1544  	if localVarHttpContentType != "" {
  1545  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
  1546  	}
  1547  
  1548  	// to determine the Accept header
  1549  	localVarHttpHeaderAccepts := []string{
  1550  		"application/json",
  1551  		"application/xml",
  1552  		"text/xml",
  1553  		"application/javascript",
  1554  		"text/javascript",
  1555  	}
  1556  
  1557  	// set Accept header
  1558  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
  1559  	if localVarHttpHeaderAccept != "" {
  1560  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
  1561  	}
  1562  	r, err := a.client.prepareRequest(nil, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
  1563  	if err != nil {
  1564  		return successPayload, nil, err
  1565  	}
  1566  
  1567  	localVarHttpResponse, err := a.client.callAPI(r)
  1568  	if err != nil || localVarHttpResponse == nil {
  1569  		return successPayload, localVarHttpResponse, err
  1570  	}
  1571  	defer localVarHttpResponse.Body.Close()
  1572  	if localVarHttpResponse.StatusCode >= 300 {
  1573  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
  1574  	}
  1575  
  1576  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
  1577  		return successPayload, localVarHttpResponse, err
  1578  	}
  1579  
  1580  	return successPayload, localVarHttpResponse, err
  1581  }
  1582  
  1583  /* UserApiService Get secret key for setting up two-factor auth.
  1584   Use /confirmEnableTFA directly for Yubikeys. This fails if TFA is already enabled.
  1585   * @param ctx context.Context Authentication Context 
  1586   @param optional (nil or map[string]interface{}) with one or more of:
  1587       @param "type_" (string) Two-factor auth type. Supported types: 'GA' (Google Authenticator)
  1588   @return bool*/
  1589  func (a *UserApiService) UserRequestEnableTFA(ctx context.Context, localVarOptionals map[string]interface{}) (bool, *http.Response, error) {
  1590  	var (
  1591  		localVarHttpMethod = strings.ToUpper("Post")
  1592  		localVarPostBody   interface{}
  1593  		localVarFileName   string
  1594  		localVarFileBytes  []byte
  1595  		successPayload     bool
  1596  	)
  1597  
  1598  	// create path and map variables
  1599  	localVarPath := a.client.cfg.BasePath + "/user/requestEnableTFA"
  1600  
  1601  	localVarHeaderParams := make(map[string]string)
  1602  	localVarQueryParams := url.Values{}
  1603  	localVarFormParams := url.Values{}
  1604  
  1605  	if err := typeCheckParameter(localVarOptionals["type_"], "string", "type_"); err != nil {
  1606  		return successPayload, nil, err
  1607  	}
  1608  
  1609  	// to determine the Content-Type header
  1610  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
  1611  
  1612  	// set Content-Type header
  1613  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
  1614  	if localVarHttpContentType != "" {
  1615  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
  1616  	}
  1617  
  1618  	// to determine the Accept header
  1619  	localVarHttpHeaderAccepts := []string{
  1620  		"application/json",
  1621  		"application/xml",
  1622  		"text/xml",
  1623  		"application/javascript",
  1624  		"text/javascript",
  1625  	}
  1626  
  1627  	// set Accept header
  1628  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
  1629  	if localVarHttpHeaderAccept != "" {
  1630  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
  1631  	}
  1632  	if localVarTempParam, localVarOk := localVarOptionals["type_"].(string); localVarOk {
  1633  		localVarFormParams.Add("type", parameterToString(localVarTempParam, ""))
  1634  	}
  1635  	if ctx != nil {
  1636  		// API Key Authentication
  1637  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1638  			var key string
  1639  			if auth.Prefix != "" {
  1640  				key = auth.Prefix + " " + auth.Key
  1641  			} else {
  1642  				key = auth.Key
  1643  			}
  1644  			localVarHeaderParams["api-key"] = key
  1645  		}
  1646  	}
  1647  	if ctx != nil {
  1648  		// API Key Authentication
  1649  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1650  			var key string
  1651  			if auth.Prefix != "" {
  1652  				key = auth.Prefix + " " + auth.Key
  1653  			} else {
  1654  				key = auth.Key
  1655  			}
  1656  			localVarHeaderParams["api-nonce"] = key
  1657  		}
  1658  	}
  1659  	if ctx != nil {
  1660  		// API Key Authentication
  1661  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1662  			var key string
  1663  			if auth.Prefix != "" {
  1664  				key = auth.Prefix + " " + auth.Key
  1665  			} else {
  1666  				key = auth.Key
  1667  			}
  1668  			localVarHeaderParams["api-signature"] = key
  1669  		}
  1670  	}
  1671  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
  1672  	if err != nil {
  1673  		return successPayload, nil, err
  1674  	}
  1675  
  1676  	localVarHttpResponse, err := a.client.callAPI(r)
  1677  	if err != nil || localVarHttpResponse == nil {
  1678  		return successPayload, localVarHttpResponse, err
  1679  	}
  1680  	defer localVarHttpResponse.Body.Close()
  1681  	if localVarHttpResponse.StatusCode >= 300 {
  1682  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
  1683  	}
  1684  
  1685  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
  1686  		return successPayload, localVarHttpResponse, err
  1687  	}
  1688  
  1689  	return successPayload, localVarHttpResponse, err
  1690  }
  1691  
  1692  /* UserApiService Request a withdrawal to an external wallet.
  1693   This will send a confirmation email to the email address on record, unless requested via an API Key with the `withdraw` permission.
  1694   * @param ctx context.Context Authentication Context 
  1695   @param currency Currency you're withdrawing. Options: `XBt`
  1696   @param amount Amount of withdrawal currency.
  1697   @param address Destination Address.
  1698   @param optional (nil or map[string]interface{}) with one or more of:
  1699       @param "otpToken" (string) 2FA token. Required if 2FA is enabled on your account.
  1700       @param "fee" (float64) Network fee for Bitcoin withdrawals. If not specified, a default value will be calculated based on Bitcoin network conditions. You will have a chance to confirm this via email.
  1701   @return Transaction*/
  1702  func (a *UserApiService) UserRequestWithdrawal(ctx context.Context, currency string, amount float32, address string, localVarOptionals map[string]interface{}) (Transaction, *http.Response, error) {
  1703  	var (
  1704  		localVarHttpMethod = strings.ToUpper("Post")
  1705  		localVarPostBody   interface{}
  1706  		localVarFileName   string
  1707  		localVarFileBytes  []byte
  1708  		successPayload     Transaction
  1709  	)
  1710  
  1711  	// create path and map variables
  1712  	localVarPath := a.client.cfg.BasePath + "/user/requestWithdrawal"
  1713  
  1714  	localVarHeaderParams := make(map[string]string)
  1715  	localVarQueryParams := url.Values{}
  1716  	localVarFormParams := url.Values{}
  1717  
  1718  	if err := typeCheckParameter(localVarOptionals["otpToken"], "string", "otpToken"); err != nil {
  1719  		return successPayload, nil, err
  1720  	}
  1721  	if err := typeCheckParameter(localVarOptionals["fee"], "float64", "fee"); err != nil {
  1722  		return successPayload, nil, err
  1723  	}
  1724  
  1725  	// to determine the Content-Type header
  1726  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
  1727  
  1728  	// set Content-Type header
  1729  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
  1730  	if localVarHttpContentType != "" {
  1731  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
  1732  	}
  1733  
  1734  	// to determine the Accept header
  1735  	localVarHttpHeaderAccepts := []string{
  1736  		"application/json",
  1737  		"application/xml",
  1738  		"text/xml",
  1739  		"application/javascript",
  1740  		"text/javascript",
  1741  	}
  1742  
  1743  	// set Accept header
  1744  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
  1745  	if localVarHttpHeaderAccept != "" {
  1746  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
  1747  	}
  1748  	if localVarTempParam, localVarOk := localVarOptionals["otpToken"].(string); localVarOk {
  1749  		localVarFormParams.Add("otpToken", parameterToString(localVarTempParam, ""))
  1750  	}
  1751  	localVarFormParams.Add("currency", parameterToString(currency, ""))
  1752  	localVarFormParams.Add("amount", parameterToString(amount, ""))
  1753  	localVarFormParams.Add("address", parameterToString(address, ""))
  1754  	if localVarTempParam, localVarOk := localVarOptionals["fee"].(float64); localVarOk {
  1755  		localVarFormParams.Add("fee", parameterToString(localVarTempParam, ""))
  1756  	}
  1757  	if ctx != nil {
  1758  		// API Key Authentication
  1759  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1760  			var key string
  1761  			if auth.Prefix != "" {
  1762  				key = auth.Prefix + " " + auth.Key
  1763  			} else {
  1764  				key = auth.Key
  1765  			}
  1766  			localVarHeaderParams["api-key"] = key
  1767  		}
  1768  	}
  1769  	if ctx != nil {
  1770  		// API Key Authentication
  1771  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1772  			var key string
  1773  			if auth.Prefix != "" {
  1774  				key = auth.Prefix + " " + auth.Key
  1775  			} else {
  1776  				key = auth.Key
  1777  			}
  1778  			localVarHeaderParams["api-nonce"] = key
  1779  		}
  1780  	}
  1781  	if ctx != nil {
  1782  		// API Key Authentication
  1783  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1784  			var key string
  1785  			if auth.Prefix != "" {
  1786  				key = auth.Prefix + " " + auth.Key
  1787  			} else {
  1788  				key = auth.Key
  1789  			}
  1790  			localVarHeaderParams["api-signature"] = key
  1791  		}
  1792  	}
  1793  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
  1794  	if err != nil {
  1795  		return successPayload, nil, err
  1796  	}
  1797  
  1798  	localVarHttpResponse, err := a.client.callAPI(r)
  1799  	if err != nil || localVarHttpResponse == nil {
  1800  		return successPayload, localVarHttpResponse, err
  1801  	}
  1802  	defer localVarHttpResponse.Body.Close()
  1803  	if localVarHttpResponse.StatusCode >= 300 {
  1804  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
  1805  	}
  1806  
  1807  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
  1808  		return successPayload, localVarHttpResponse, err
  1809  	}
  1810  
  1811  	return successPayload, localVarHttpResponse, err
  1812  }
  1813  
  1814  /* UserApiService Save user preferences.
  1815   * @param ctx context.Context Authentication Context 
  1816   @param prefs 
  1817   @param optional (nil or map[string]interface{}) with one or more of:
  1818       @param "overwrite" (bool) If true, will overwrite all existing preferences.
  1819   @return User*/
  1820  func (a *UserApiService) UserSavePreferences(ctx context.Context, prefs string, localVarOptionals map[string]interface{}) (User, *http.Response, error) {
  1821  	var (
  1822  		localVarHttpMethod = strings.ToUpper("Post")
  1823  		localVarPostBody   interface{}
  1824  		localVarFileName   string
  1825  		localVarFileBytes  []byte
  1826  		successPayload     User
  1827  	)
  1828  
  1829  	// create path and map variables
  1830  	localVarPath := a.client.cfg.BasePath + "/user/preferences"
  1831  
  1832  	localVarHeaderParams := make(map[string]string)
  1833  	localVarQueryParams := url.Values{}
  1834  	localVarFormParams := url.Values{}
  1835  
  1836  	if err := typeCheckParameter(localVarOptionals["overwrite"], "bool", "overwrite"); err != nil {
  1837  		return successPayload, nil, err
  1838  	}
  1839  
  1840  	// to determine the Content-Type header
  1841  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
  1842  
  1843  	// set Content-Type header
  1844  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
  1845  	if localVarHttpContentType != "" {
  1846  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
  1847  	}
  1848  
  1849  	// to determine the Accept header
  1850  	localVarHttpHeaderAccepts := []string{
  1851  		"application/json",
  1852  		"application/xml",
  1853  		"text/xml",
  1854  		"application/javascript",
  1855  		"text/javascript",
  1856  	}
  1857  
  1858  	// set Accept header
  1859  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
  1860  	if localVarHttpHeaderAccept != "" {
  1861  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
  1862  	}
  1863  	localVarFormParams.Add("prefs", parameterToString(prefs, ""))
  1864  	if localVarTempParam, localVarOk := localVarOptionals["overwrite"].(bool); localVarOk {
  1865  		localVarFormParams.Add("overwrite", parameterToString(localVarTempParam, ""))
  1866  	}
  1867  	if ctx != nil {
  1868  		// API Key Authentication
  1869  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1870  			var key string
  1871  			if auth.Prefix != "" {
  1872  				key = auth.Prefix + " " + auth.Key
  1873  			} else {
  1874  				key = auth.Key
  1875  			}
  1876  			localVarHeaderParams["api-key"] = key
  1877  		}
  1878  	}
  1879  	if ctx != nil {
  1880  		// API Key Authentication
  1881  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1882  			var key string
  1883  			if auth.Prefix != "" {
  1884  				key = auth.Prefix + " " + auth.Key
  1885  			} else {
  1886  				key = auth.Key
  1887  			}
  1888  			localVarHeaderParams["api-nonce"] = key
  1889  		}
  1890  	}
  1891  	if ctx != nil {
  1892  		// API Key Authentication
  1893  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  1894  			var key string
  1895  			if auth.Prefix != "" {
  1896  				key = auth.Prefix + " " + auth.Key
  1897  			} else {
  1898  				key = auth.Key
  1899  			}
  1900  			localVarHeaderParams["api-signature"] = key
  1901  		}
  1902  	}
  1903  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
  1904  	if err != nil {
  1905  		return successPayload, nil, err
  1906  	}
  1907  
  1908  	localVarHttpResponse, err := a.client.callAPI(r)
  1909  	if err != nil || localVarHttpResponse == nil {
  1910  		return successPayload, localVarHttpResponse, err
  1911  	}
  1912  	defer localVarHttpResponse.Body.Close()
  1913  	if localVarHttpResponse.StatusCode >= 300 {
  1914  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
  1915  	}
  1916  
  1917  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
  1918  		return successPayload, localVarHttpResponse, err
  1919  	}
  1920  
  1921  	return successPayload, localVarHttpResponse, err
  1922  }
  1923  
  1924  /* UserApiService Update your password, name, and other attributes.
  1925   * @param ctx context.Context Authentication Context 
  1926   @param optional (nil or map[string]interface{}) with one or more of:
  1927       @param "firstname" (string) 
  1928       @param "lastname" (string) 
  1929       @param "oldPassword" (string) 
  1930       @param "newPassword" (string) 
  1931       @param "newPasswordConfirm" (string) 
  1932       @param "username" (string) Username can only be set once. To reset, email support.
  1933       @param "country" (string) Country of residence.
  1934       @param "pgpPubKey" (string) PGP Public Key. If specified, automated emails will be sentwith this key.
  1935   @return User*/
  1936  func (a *UserApiService) UserUpdate(ctx context.Context, localVarOptionals map[string]interface{}) (User, *http.Response, error) {
  1937  	var (
  1938  		localVarHttpMethod = strings.ToUpper("Put")
  1939  		localVarPostBody   interface{}
  1940  		localVarFileName   string
  1941  		localVarFileBytes  []byte
  1942  		successPayload     User
  1943  	)
  1944  
  1945  	// create path and map variables
  1946  	localVarPath := a.client.cfg.BasePath + "/user"
  1947  
  1948  	localVarHeaderParams := make(map[string]string)
  1949  	localVarQueryParams := url.Values{}
  1950  	localVarFormParams := url.Values{}
  1951  
  1952  	if err := typeCheckParameter(localVarOptionals["firstname"], "string", "firstname"); err != nil {
  1953  		return successPayload, nil, err
  1954  	}
  1955  	if err := typeCheckParameter(localVarOptionals["lastname"], "string", "lastname"); err != nil {
  1956  		return successPayload, nil, err
  1957  	}
  1958  	if err := typeCheckParameter(localVarOptionals["oldPassword"], "string", "oldPassword"); err != nil {
  1959  		return successPayload, nil, err
  1960  	}
  1961  	if err := typeCheckParameter(localVarOptionals["newPassword"], "string", "newPassword"); err != nil {
  1962  		return successPayload, nil, err
  1963  	}
  1964  	if err := typeCheckParameter(localVarOptionals["newPasswordConfirm"], "string", "newPasswordConfirm"); err != nil {
  1965  		return successPayload, nil, err
  1966  	}
  1967  	if err := typeCheckParameter(localVarOptionals["username"], "string", "username"); err != nil {
  1968  		return successPayload, nil, err
  1969  	}
  1970  	if err := typeCheckParameter(localVarOptionals["country"], "string", "country"); err != nil {
  1971  		return successPayload, nil, err
  1972  	}
  1973  	if err := typeCheckParameter(localVarOptionals["pgpPubKey"], "string", "pgpPubKey"); err != nil {
  1974  		return successPayload, nil, err
  1975  	}
  1976  
  1977  	// to determine the Content-Type header
  1978  	localVarHttpContentTypes := []string{"application/json", "application/x-www-form-urlencoded",}
  1979  
  1980  	// set Content-Type header
  1981  	localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes)
  1982  	if localVarHttpContentType != "" {
  1983  		localVarHeaderParams["Content-Type"] = localVarHttpContentType
  1984  	}
  1985  
  1986  	// to determine the Accept header
  1987  	localVarHttpHeaderAccepts := []string{
  1988  		"application/json",
  1989  		"application/xml",
  1990  		"text/xml",
  1991  		"application/javascript",
  1992  		"text/javascript",
  1993  	}
  1994  
  1995  	// set Accept header
  1996  	localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts)
  1997  	if localVarHttpHeaderAccept != "" {
  1998  		localVarHeaderParams["Accept"] = localVarHttpHeaderAccept
  1999  	}
  2000  	if localVarTempParam, localVarOk := localVarOptionals["firstname"].(string); localVarOk {
  2001  		localVarFormParams.Add("firstname", parameterToString(localVarTempParam, ""))
  2002  	}
  2003  	if localVarTempParam, localVarOk := localVarOptionals["lastname"].(string); localVarOk {
  2004  		localVarFormParams.Add("lastname", parameterToString(localVarTempParam, ""))
  2005  	}
  2006  	if localVarTempParam, localVarOk := localVarOptionals["oldPassword"].(string); localVarOk {
  2007  		localVarFormParams.Add("oldPassword", parameterToString(localVarTempParam, ""))
  2008  	}
  2009  	if localVarTempParam, localVarOk := localVarOptionals["newPassword"].(string); localVarOk {
  2010  		localVarFormParams.Add("newPassword", parameterToString(localVarTempParam, ""))
  2011  	}
  2012  	if localVarTempParam, localVarOk := localVarOptionals["newPasswordConfirm"].(string); localVarOk {
  2013  		localVarFormParams.Add("newPasswordConfirm", parameterToString(localVarTempParam, ""))
  2014  	}
  2015  	if localVarTempParam, localVarOk := localVarOptionals["username"].(string); localVarOk {
  2016  		localVarFormParams.Add("username", parameterToString(localVarTempParam, ""))
  2017  	}
  2018  	if localVarTempParam, localVarOk := localVarOptionals["country"].(string); localVarOk {
  2019  		localVarFormParams.Add("country", parameterToString(localVarTempParam, ""))
  2020  	}
  2021  	if localVarTempParam, localVarOk := localVarOptionals["pgpPubKey"].(string); localVarOk {
  2022  		localVarFormParams.Add("pgpPubKey", parameterToString(localVarTempParam, ""))
  2023  	}
  2024  	if ctx != nil {
  2025  		// API Key Authentication
  2026  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  2027  			var key string
  2028  			if auth.Prefix != "" {
  2029  				key = auth.Prefix + " " + auth.Key
  2030  			} else {
  2031  				key = auth.Key
  2032  			}
  2033  			localVarHeaderParams["api-key"] = key
  2034  		}
  2035  	}
  2036  	if ctx != nil {
  2037  		// API Key Authentication
  2038  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  2039  			var key string
  2040  			if auth.Prefix != "" {
  2041  				key = auth.Prefix + " " + auth.Key
  2042  			} else {
  2043  				key = auth.Key
  2044  			}
  2045  			localVarHeaderParams["api-nonce"] = key
  2046  		}
  2047  	}
  2048  	if ctx != nil {
  2049  		// API Key Authentication
  2050  		if auth, ok := ctx.Value(ContextAPIKey).(APIKey); ok {
  2051  			var key string
  2052  			if auth.Prefix != "" {
  2053  				key = auth.Prefix + " " + auth.Key
  2054  			} else {
  2055  				key = auth.Key
  2056  			}
  2057  			localVarHeaderParams["api-signature"] = key
  2058  		}
  2059  	}
  2060  	r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes)
  2061  	if err != nil {
  2062  		return successPayload, nil, err
  2063  	}
  2064  
  2065  	localVarHttpResponse, err := a.client.callAPI(r)
  2066  	if err != nil || localVarHttpResponse == nil {
  2067  		return successPayload, localVarHttpResponse, err
  2068  	}
  2069  	defer localVarHttpResponse.Body.Close()
  2070  	if localVarHttpResponse.StatusCode >= 300 {
  2071  		return successPayload, localVarHttpResponse, reportError(localVarHttpResponse.Status)
  2072  	}
  2073  
  2074  	if err = json.NewDecoder(localVarHttpResponse.Body).Decode(&successPayload); err != nil {
  2075  		return successPayload, localVarHttpResponse, err
  2076  	}
  2077  
  2078  	return successPayload, localVarHttpResponse, err
  2079  }