/* * Gate API v4 * * Welcome to Gate.io API APIv4 provides spot, margin and futures trading operations. There are public APIs to retrieve the real-time market statistics, and private APIs which needs authentication to trade on user's behalf. * * Contact: support@mail.gate.io * Generated by: OpenAPI Generator (https://openapi-generator.tech) */ package gateapi import ( "context" "github.com/antihax/optional" "io/ioutil" "net/http" "net/url" "strings" ) // Linger please var ( _ context.Context ) // SpotApiService SpotApi service type SpotApiService service /* ListCurrencies List all currencies' details Currency has two forms: 1. Only currency name, e.g., BTC, USDT 2. `<currency>_<chain>`, e.g., `HT_ETH` The latter one occurs when one currency has multiple chains. Currency detail contains a `chain` field whatever the form is. To retrieve all chains of one currency, you can use use all the details which has the name of the currency or name starting with `<currency>_`. - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @return []Currency */ func (a *SpotApiService) ListCurrencies(ctx context.Context) ([]Currency, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []Currency ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/currencies" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } ctx = context.WithValue(ctx, ContextPublic, true) r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } /* GetCurrency Get details of a specific currency - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param currency Currency name @return Currency */ func (a *SpotApiService) GetCurrency(ctx context.Context, currency string) (Currency, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue Currency ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/currencies/{currency}" localVarPath = strings.Replace(localVarPath, "{"+"currency"+"}", url.QueryEscape(parameterToString(currency, "")), -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } ctx = context.WithValue(ctx, ContextPublic, true) r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } /* ListCurrencyPairs List all currency pairs supported - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @return []CurrencyPair */ func (a *SpotApiService) ListCurrencyPairs(ctx context.Context) ([]CurrencyPair, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []CurrencyPair ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/currency_pairs" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } ctx = context.WithValue(ctx, ContextPublic, true) r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } /* GetCurrencyPair Get details of a specifc currency pair - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param currencyPair Currency pair @return CurrencyPair */ func (a *SpotApiService) GetCurrencyPair(ctx context.Context, currencyPair string) (CurrencyPair, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue CurrencyPair ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/currency_pairs/{currency_pair}" localVarPath = strings.Replace(localVarPath, "{"+"currency_pair"+"}", url.QueryEscape(parameterToString(currencyPair, "")), -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } ctx = context.WithValue(ctx, ContextPublic, true) r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // ListTickersOpts Optional parameters for the method 'ListTickers' type ListTickersOpts struct { CurrencyPair optional.String Timezone optional.String } /* ListTickers Retrieve ticker information Return only related data if `currency_pair` is specified; otherwise return all of them - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param optional nil or *ListTickersOpts - Optional Parameters: - @param "CurrencyPair" (optional.String) - Currency pair - @param "Timezone" (optional.String) - Timezone @return []Ticker */ func (a *SpotApiService) ListTickers(ctx context.Context, localVarOptionals *ListTickersOpts) ([]Ticker, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []Ticker ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/tickers" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} if localVarOptionals != nil && localVarOptionals.CurrencyPair.IsSet() { localVarQueryParams.Add("currency_pair", parameterToString(localVarOptionals.CurrencyPair.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Timezone.IsSet() { localVarQueryParams.Add("timezone", parameterToString(localVarOptionals.Timezone.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } ctx = context.WithValue(ctx, ContextPublic, true) r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // ListOrderBookOpts Optional parameters for the method 'ListOrderBook' type ListOrderBookOpts struct { Interval optional.String Limit optional.Int32 WithId optional.Bool } /* ListOrderBook Retrieve order book Order book will be sorted by price from high to low on bids; low to high on asks - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param currencyPair Currency pair - @param optional nil or *ListOrderBookOpts - Optional Parameters: - @param "Interval" (optional.String) - Order depth. 0 means no aggregation is applied. default to 0 - @param "Limit" (optional.Int32) - Maximum number of order depth data in asks or bids - @param "WithId" (optional.Bool) - Return order book ID @return OrderBook */ func (a *SpotApiService) ListOrderBook(ctx context.Context, currencyPair string, localVarOptionals *ListOrderBookOpts) (OrderBook, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue OrderBook ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/order_book" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("currency_pair", parameterToString(currencyPair, "")) if localVarOptionals != nil && localVarOptionals.Interval.IsSet() { localVarQueryParams.Add("interval", parameterToString(localVarOptionals.Interval.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Limit.IsSet() { localVarQueryParams.Add("limit", parameterToString(localVarOptionals.Limit.Value(), "")) } if localVarOptionals != nil && localVarOptionals.WithId.IsSet() { localVarQueryParams.Add("with_id", parameterToString(localVarOptionals.WithId.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } ctx = context.WithValue(ctx, ContextPublic, true) r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // ListTradesOpts Optional parameters for the method 'ListTrades' type ListTradesOpts struct { Limit optional.Int32 LastId optional.String Reverse optional.Bool From optional.Int64 To optional.Int64 Page optional.Int32 } /* ListTrades Retrieve market trades You can use `from` and `to` to query by time range, or use `last_id` by scrolling page. The default behavior is by time range. Scrolling query using `last_id` is not recommended any more. If `last_id` is specified, time range query parameters will be ignored. - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param currencyPair Currency pair - @param optional nil or *ListTradesOpts - Optional Parameters: - @param "Limit" (optional.Int32) - Maximum number of records to be returned in a single list. Default: 100, Minimum: 1, Maximum: 1000 - @param "LastId" (optional.String) - Specify list staring point using the `id` of last record in previous list-query results - @param "Reverse" (optional.Bool) - Whether the id of records to be retrieved should be less than the last_id specified. Default to false. When `last_id` is specified. Set `reverse` to `true` to trace back trading history; `false` to retrieve latest tradings. No effect if `last_id` is not specified. - @param "From" (optional.Int64) - Start timestamp of the query - @param "To" (optional.Int64) - Time range ending, default to current time - @param "Page" (optional.Int32) - Page number @return []Trade */ func (a *SpotApiService) ListTrades(ctx context.Context, currencyPair string, localVarOptionals *ListTradesOpts) ([]Trade, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []Trade ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/trades" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("currency_pair", parameterToString(currencyPair, "")) if localVarOptionals != nil && localVarOptionals.Limit.IsSet() { localVarQueryParams.Add("limit", parameterToString(localVarOptionals.Limit.Value(), "")) } if localVarOptionals != nil && localVarOptionals.LastId.IsSet() { localVarQueryParams.Add("last_id", parameterToString(localVarOptionals.LastId.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Reverse.IsSet() { localVarQueryParams.Add("reverse", parameterToString(localVarOptionals.Reverse.Value(), "")) } if localVarOptionals != nil && localVarOptionals.From.IsSet() { localVarQueryParams.Add("from", parameterToString(localVarOptionals.From.Value(), "")) } if localVarOptionals != nil && localVarOptionals.To.IsSet() { localVarQueryParams.Add("to", parameterToString(localVarOptionals.To.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Page.IsSet() { localVarQueryParams.Add("page", parameterToString(localVarOptionals.Page.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } ctx = context.WithValue(ctx, ContextPublic, true) r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // ListCandlesticksOpts Optional parameters for the method 'ListCandlesticks' type ListCandlesticksOpts struct { Limit optional.Int32 From optional.Int64 To optional.Int64 Interval optional.String } /* ListCandlesticks Market candlesticks Maximum of 1000 points can be returned in a query. Be sure not to exceed the limit when specifying from, to and interval - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param currencyPair Currency pair - @param optional nil or *ListCandlesticksOpts - Optional Parameters: - @param "Limit" (optional.Int32) - Maximum recent data points to return. `limit` is conflicted with `from` and `to`. If either `from` or `to` is specified, request will be rejected. - @param "From" (optional.Int64) - Start time of candlesticks, formatted in Unix timestamp in seconds. Default to`to - 100 * interval` if not specified - @param "To" (optional.Int64) - End time of candlesticks, formatted in Unix timestamp in seconds. Default to current time - @param "Interval" (optional.String) - Interval time between data points. Note that `30d` means 1 natual month, not 30 days @return [][]string */ func (a *SpotApiService) ListCandlesticks(ctx context.Context, currencyPair string, localVarOptionals *ListCandlesticksOpts) ([][]string, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue [][]string ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/candlesticks" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("currency_pair", parameterToString(currencyPair, "")) if localVarOptionals != nil && localVarOptionals.Limit.IsSet() { localVarQueryParams.Add("limit", parameterToString(localVarOptionals.Limit.Value(), "")) } if localVarOptionals != nil && localVarOptionals.From.IsSet() { localVarQueryParams.Add("from", parameterToString(localVarOptionals.From.Value(), "")) } if localVarOptionals != nil && localVarOptionals.To.IsSet() { localVarQueryParams.Add("to", parameterToString(localVarOptionals.To.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Interval.IsSet() { localVarQueryParams.Add("interval", parameterToString(localVarOptionals.Interval.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } ctx = context.WithValue(ctx, ContextPublic, true) r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // GetFeeOpts Optional parameters for the method 'GetFee' type GetFeeOpts struct { CurrencyPair optional.String } /* GetFee Query user trading fee rates This API is deprecated in favour of new fee retrieving API `/wallet/fee`. - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param optional nil or *GetFeeOpts - Optional Parameters: - @param "CurrencyPair" (optional.String) - Specify a currency pair to retrieve precise fee rate This field is optional. In most cases, the fee rate is identical among all currency pairs @return SpotFee */ func (a *SpotApiService) GetFee(ctx context.Context, localVarOptionals *GetFeeOpts) (SpotFee, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue SpotFee ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/fee" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} if localVarOptionals != nil && localVarOptionals.CurrencyPair.IsSet() { localVarQueryParams.Add("currency_pair", parameterToString(localVarOptionals.CurrencyPair.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } /* GetBatchSpotFee Query a batch of user trading fee rates - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param currencyPairs A request can only query up to 50 currency pairs @return map[string]SpotFee */ func (a *SpotApiService) GetBatchSpotFee(ctx context.Context, currencyPairs string) (map[string]SpotFee, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue map[string]SpotFee ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/batch_fee" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("currency_pairs", parameterToString(currencyPairs, "")) // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // ListSpotAccountsOpts Optional parameters for the method 'ListSpotAccounts' type ListSpotAccountsOpts struct { Currency optional.String } /* ListSpotAccounts List spot accounts - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param optional nil or *ListSpotAccountsOpts - Optional Parameters: - @param "Currency" (optional.String) - Retrieve data of the specified currency @return []SpotAccount */ func (a *SpotApiService) ListSpotAccounts(ctx context.Context, localVarOptionals *ListSpotAccountsOpts) ([]SpotAccount, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []SpotAccount ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/accounts" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} if localVarOptionals != nil && localVarOptionals.Currency.IsSet() { localVarQueryParams.Add("currency", parameterToString(localVarOptionals.Currency.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // ListSpotAccountBookOpts Optional parameters for the method 'ListSpotAccountBook' type ListSpotAccountBookOpts struct { Currency optional.String From optional.Int64 To optional.Int64 Page optional.Int32 Limit optional.Int32 Type_ optional.String } /* ListSpotAccountBook Query account book Record time range cannot exceed 30 days - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param optional nil or *ListSpotAccountBookOpts - Optional Parameters: - @param "Currency" (optional.String) - Retrieve data of the specified currency - @param "From" (optional.Int64) - Start timestamp of the query - @param "To" (optional.Int64) - Time range ending, default to current time - @param "Page" (optional.Int32) - Page number - @param "Limit" (optional.Int32) - Maximum number of records to be returned in a single list - @param "Type_" (optional.String) - Only retrieve changes of the specified type. All types will be returned if not specified. @return []SpotAccountBook */ func (a *SpotApiService) ListSpotAccountBook(ctx context.Context, localVarOptionals *ListSpotAccountBookOpts) ([]SpotAccountBook, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []SpotAccountBook ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/account_book" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} if localVarOptionals != nil && localVarOptionals.Currency.IsSet() { localVarQueryParams.Add("currency", parameterToString(localVarOptionals.Currency.Value(), "")) } if localVarOptionals != nil && localVarOptionals.From.IsSet() { localVarQueryParams.Add("from", parameterToString(localVarOptionals.From.Value(), "")) } if localVarOptionals != nil && localVarOptionals.To.IsSet() { localVarQueryParams.Add("to", parameterToString(localVarOptionals.To.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Page.IsSet() { localVarQueryParams.Add("page", parameterToString(localVarOptionals.Page.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Limit.IsSet() { localVarQueryParams.Add("limit", parameterToString(localVarOptionals.Limit.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Type_.IsSet() { localVarQueryParams.Add("type", parameterToString(localVarOptionals.Type_.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } /* CreateBatchOrders Create a batch of orders Batch orders requirements: 1. custom order field `text` is required 2. At most 4 currency pairs, maximum 10 orders each, are allowed in one request 3. No mixture of spot orders and margin orders, i.e. `account` must be identical for all orders - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param order @return []BatchOrder */ func (a *SpotApiService) CreateBatchOrders(ctx context.Context, order []Order) ([]BatchOrder, *http.Response, error) { var ( localVarHTTPMethod = http.MethodPost localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []BatchOrder ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/batch_orders" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHTTPContentTypes := []string{"application/json"} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } // body params localVarPostBody = &order if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // ListAllOpenOrdersOpts Optional parameters for the method 'ListAllOpenOrders' type ListAllOpenOrdersOpts struct { Page optional.Int32 Limit optional.Int32 Account optional.String } /* ListAllOpenOrders List all open orders List open orders in all currency pairs. Note that pagination parameters affect record number in each currency pair's open order list. No pagination is applied to the number of currency pairs returned. All currency pairs with open orders will be returned. Spot,portfolio and margin orders are returned by default. To list cross margin orders, `account` must be set to `cross_margin` - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param optional nil or *ListAllOpenOrdersOpts - Optional Parameters: - @param "Page" (optional.Int32) - Page number - @param "Limit" (optional.Int32) - Maximum number of records returned in one page in each currency pair - @param "Account" (optional.String) - Specify operation account. Default to spot ,portfolio and margin account if not specified. Set to `cross_margin` to operate against margin account. Portfolio margin account must set to `cross_margin` only @return []OpenOrders */ func (a *SpotApiService) ListAllOpenOrders(ctx context.Context, localVarOptionals *ListAllOpenOrdersOpts) ([]OpenOrders, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []OpenOrders ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/open_orders" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} if localVarOptionals != nil && localVarOptionals.Page.IsSet() { localVarQueryParams.Add("page", parameterToString(localVarOptionals.Page.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Limit.IsSet() { localVarQueryParams.Add("limit", parameterToString(localVarOptionals.Limit.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Account.IsSet() { localVarQueryParams.Add("account", parameterToString(localVarOptionals.Account.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } /* CreateCrossLiquidateOrder close position when cross-currency is disabled Currently, only cross-margin accounts are supported to close position when cross currencies are disabled. Maximum buy quantity = (unpaid principal and interest - currency balance - the amount of the currency in the order book) / 0.998 - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param liquidateOrder @return Order */ func (a *SpotApiService) CreateCrossLiquidateOrder(ctx context.Context, liquidateOrder LiquidateOrder) (Order, *http.Response, error) { var ( localVarHTTPMethod = http.MethodPost localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue Order ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/cross_liquidate_orders" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHTTPContentTypes := []string{"application/json"} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } // body params localVarPostBody = &liquidateOrder if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // ListOrdersOpts Optional parameters for the method 'ListOrders' type ListOrdersOpts struct { Page optional.Int32 Limit optional.Int32 Account optional.String From optional.Int64 To optional.Int64 Side optional.String } /* ListOrders List orders Spot, portfolio and margin orders are returned by default. If cross margin orders are needed, `account` must be set to `cross_margin` When `status` is `open`, i.e., listing open orders, only pagination parameters `page` and `limit` are supported and `limit` cannot be larger than 100. Query by `side` and time range parameters `from` and `to` are not supported. When `status` is `finished`, i.e., listing finished orders, pagination parameters, time range parameters `from` and `to`, and `side` parameters are all supported. Time range parameters are handled as order finish time. - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param currencyPair Retrieve results with specified currency pair. It is required for open orders, but optional for finished ones. - @param status List orders based on status `open` - order is waiting to be filled `finished` - order has been filled or cancelled - @param optional nil or *ListOrdersOpts - Optional Parameters: - @param "Page" (optional.Int32) - Page number - @param "Limit" (optional.Int32) - Maximum number of records to be returned. If `status` is `open`, maximum of `limit` is 100 - @param "Account" (optional.String) - Specify operation account. Default to spot ,portfolio and margin account if not specified. Set to `cross_margin` to operate against margin account. Portfolio margin account must set to `cross_margin` only - @param "From" (optional.Int64) - Start timestamp of the query - @param "To" (optional.Int64) - Time range ending, default to current time - @param "Side" (optional.String) - All bids or asks. Both included if not specified @return []Order */ func (a *SpotApiService) ListOrders(ctx context.Context, currencyPair string, status string, localVarOptionals *ListOrdersOpts) ([]Order, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []Order ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/orders" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("currency_pair", parameterToString(currencyPair, "")) localVarQueryParams.Add("status", parameterToString(status, "")) if localVarOptionals != nil && localVarOptionals.Page.IsSet() { localVarQueryParams.Add("page", parameterToString(localVarOptionals.Page.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Limit.IsSet() { localVarQueryParams.Add("limit", parameterToString(localVarOptionals.Limit.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Account.IsSet() { localVarQueryParams.Add("account", parameterToString(localVarOptionals.Account.Value(), "")) } if localVarOptionals != nil && localVarOptionals.From.IsSet() { localVarQueryParams.Add("from", parameterToString(localVarOptionals.From.Value(), "")) } if localVarOptionals != nil && localVarOptionals.To.IsSet() { localVarQueryParams.Add("to", parameterToString(localVarOptionals.To.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Side.IsSet() { localVarQueryParams.Add("side", parameterToString(localVarOptionals.Side.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } /* CreateOrder Create an order You can place orders with spot, portfolio, margin or cross margin account through setting the `account `field. It defaults to `spot`, which means spot account is used to place orders. If the user is using unified account, it defaults to the unified account. When margin account is used, i.e., `account` is `margin`, `auto_borrow` field can be set to `true` to enable the server to borrow the amount lacked using `POST /margin/loans` when your account's balance is not enough. Whether margin orders' fill will be used to repay margin loans automatically is determined by the auto repayment setting in your **margin account**, which can be updated or queried using `/margin/auto_repay` API. When cross margin account is used, i.e., `account` is `cross_margin`, `auto_borrow` can also be enabled to achieve borrowing the insufficient amount automatically if cross account's balance is not enough. But it differs from margin account that automatic repayment is determined by order's `auto_repay` field and only current order's fill will be used to repay cross margin loans. Automatic repayment will be triggered when the order is finished, i.e., its status is either `cancelled` or `closed`. **Order status** An order waiting to be filled is `open`, and it stays `open` until it is filled totally. If fully filled, order is finished and its status turns to `closed`.If the order is cancelled before it is totally filled, whether or not partially filled, its status is `cancelled`. **Iceberg order** `iceberg` field can be used to set the amount shown. Set to `-1` to hide the order completely. Note that the hidden part's fee will be charged using taker's fee rate. **Self Trade Prevention** - Set `stp_act` to decide the strategy of self-trade prevention. For detailed usage, refer to the `stp_act` parameter in request body - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param order @return Order */ func (a *SpotApiService) CreateOrder(ctx context.Context, order Order) (Order, *http.Response, error) { var ( localVarHTTPMethod = http.MethodPost localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue Order ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/orders" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHTTPContentTypes := []string{"application/json"} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } // body params localVarPostBody = &order if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // CancelOrdersOpts Optional parameters for the method 'CancelOrders' type CancelOrdersOpts struct { Side optional.String Account optional.String ActionMode optional.String } /* CancelOrders Cancel all `open` orders in specified currency pair If `account` is not set, all open orders, including spot, portfolio, margin and cross margin ones, will be cancelled. You can set `account` to cancel only orders within the specified account - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param currencyPair Currency pair - @param optional nil or *CancelOrdersOpts - Optional Parameters: - @param "Side" (optional.String) - All bids or asks. Both included if not specified - @param "Account" (optional.String) - Specify account type - classic account:Default to all account types being included - portfolio margin account:`cross_margin` only - @param "ActionMode" (optional.String) - Processing Mode When placing an order, different fields are returned based on the action_mode - ACK: Asynchronous mode, returns only key order fields - RESULT: No clearing information - FULL: Full mode (default) @return []Order */ func (a *SpotApiService) CancelOrders(ctx context.Context, currencyPair string, localVarOptionals *CancelOrdersOpts) ([]Order, *http.Response, error) { var ( localVarHTTPMethod = http.MethodDelete localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []Order ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/orders" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("currency_pair", parameterToString(currencyPair, "")) if localVarOptionals != nil && localVarOptionals.Side.IsSet() { localVarQueryParams.Add("side", parameterToString(localVarOptionals.Side.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Account.IsSet() { localVarQueryParams.Add("account", parameterToString(localVarOptionals.Account.Value(), "")) } if localVarOptionals != nil && localVarOptionals.ActionMode.IsSet() { localVarQueryParams.Add("action_mode", parameterToString(localVarOptionals.ActionMode.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } /* CancelBatchOrders Cancel a batch of orders with an ID list Multiple currency pairs can be specified, but maximum 20 orders are allowed per request - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param cancelBatchOrder @return []CancelOrderResult */ func (a *SpotApiService) CancelBatchOrders(ctx context.Context, cancelBatchOrder []CancelBatchOrder) ([]CancelOrderResult, *http.Response, error) { var ( localVarHTTPMethod = http.MethodPost localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []CancelOrderResult ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/cancel_batch_orders" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHTTPContentTypes := []string{"application/json"} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } // body params localVarPostBody = &cancelBatchOrder if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // GetOrderOpts Optional parameters for the method 'GetOrder' type GetOrderOpts struct { Account optional.String } /* GetOrder Get a single order Spot, portfolio and margin orders are queried by default. If cross margin orders are needed or portfolio margin account are used, account must be set to cross_margin. - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param orderId Order ID returned, or user custom ID(i.e., `text` field). Operations based on custom ID can only be checked when the order is in orderbook. When the order is finished, it can be checked within 1 hour after the end of the order. After that, only order ID is accepted. - @param currencyPair Currency pair - @param optional nil or *GetOrderOpts - Optional Parameters: - @param "Account" (optional.String) - Specify operation account. Default to spot ,portfolio and margin account if not specified. Set to `cross_margin` to operate against margin account. Portfolio margin account must set to `cross_margin` only @return Order */ func (a *SpotApiService) GetOrder(ctx context.Context, orderId string, currencyPair string, localVarOptionals *GetOrderOpts) (Order, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue Order ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/orders/{order_id}" localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", url.QueryEscape(parameterToString(orderId, "")), -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("currency_pair", parameterToString(currencyPair, "")) if localVarOptionals != nil && localVarOptionals.Account.IsSet() { localVarQueryParams.Add("account", parameterToString(localVarOptionals.Account.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // CancelOrderOpts Optional parameters for the method 'CancelOrder' type CancelOrderOpts struct { Account optional.String ActionMode optional.String } /* CancelOrder Cancel a single order Spot,portfolio and margin orders are cancelled by default. If trying to cancel cross margin orders or portfolio margin account are used, account must be set to cross_margin - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param orderId Order ID returned, or user custom ID(i.e., `text` field). Operations based on custom ID can only be checked when the order is in orderbook. When the order is finished, it can be checked within 1 hour after the end of the order. After that, only order ID is accepted. - @param currencyPair Currency pair - @param optional nil or *CancelOrderOpts - Optional Parameters: - @param "Account" (optional.String) - Specify operation account. Default to spot ,portfolio and margin account if not specified. Set to `cross_margin` to operate against margin account. Portfolio margin account must set to `cross_margin` only - @param "ActionMode" (optional.String) - Processing Mode When placing an order, different fields are returned based on the action_mode - ACK: Asynchronous mode, returns only key order fields - RESULT: No clearing information - FULL: Full mode (default) @return Order */ func (a *SpotApiService) CancelOrder(ctx context.Context, orderId string, currencyPair string, localVarOptionals *CancelOrderOpts) (Order, *http.Response, error) { var ( localVarHTTPMethod = http.MethodDelete localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue Order ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/orders/{order_id}" localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", url.QueryEscape(parameterToString(orderId, "")), -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("currency_pair", parameterToString(currencyPair, "")) if localVarOptionals != nil && localVarOptionals.Account.IsSet() { localVarQueryParams.Add("account", parameterToString(localVarOptionals.Account.Value(), "")) } if localVarOptionals != nil && localVarOptionals.ActionMode.IsSet() { localVarQueryParams.Add("action_mode", parameterToString(localVarOptionals.ActionMode.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // AmendOrderOpts Optional parameters for the method 'AmendOrder' type AmendOrderOpts struct { Account optional.String } /* AmendOrder Amend an order By default, the orders of spot, portfolio and margin account are updated. If you need to modify orders of the `cross-margin` account, you must specify account as `cross_margin`. For portfolio margin account, only `cross_margin` account is supported. Currently, only supports modification of `price` or `amount` fields. Regarding rate limiting: modify order and create order sharing rate limiting rules. Regarding matching priority: Only reducing the quantity without modifying the priority of matching, altering the price or increasing the quantity will adjust the priority to the new price at the end Note: If the modified amount is less than the fill amount, the order will be cancelled. - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param orderId Order ID returned, or user custom ID(i.e., `text` field). Operations based on custom ID can only be checked when the order is in orderbook. When the order is finished, it can be checked within 1 hour after the end of the order. After that, only order ID is accepted. - @param currencyPair Currency pair - @param orderPatch - @param optional nil or *AmendOrderOpts - Optional Parameters: - @param "Account" (optional.String) - Specify operation account. Default to spot ,portfolio and margin account if not specified. Set to `cross_margin` to operate against margin account. Portfolio margin account must set to `cross_margin` only @return Order */ func (a *SpotApiService) AmendOrder(ctx context.Context, orderId string, currencyPair string, orderPatch OrderPatch, localVarOptionals *AmendOrderOpts) (Order, *http.Response, error) { var ( localVarHTTPMethod = http.MethodPatch localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue Order ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/orders/{order_id}" localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", url.QueryEscape(parameterToString(orderId, "")), -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("currency_pair", parameterToString(currencyPair, "")) if localVarOptionals != nil && localVarOptionals.Account.IsSet() { localVarQueryParams.Add("account", parameterToString(localVarOptionals.Account.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{"application/json"} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } // body params localVarPostBody = &orderPatch if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // ListMyTradesOpts Optional parameters for the method 'ListMyTrades' type ListMyTradesOpts struct { CurrencyPair optional.String Limit optional.Int32 Page optional.Int32 OrderId optional.String Account optional.String From optional.Int64 To optional.Int64 } /* ListMyTrades List personal trading history Spot,portfolio and margin trades are queried by default. If cross margin trades are needed, `account` must be set to `cross_margin` You can also set `from` and(or) `to` to query by time range. If you don't specify `from` and/or `to` parameters, only the last 7 days of data will be retured. The range of `from` and `to` is not alloed to exceed 30 days. Time range parameters are handled as order finish time. - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param optional nil or *ListMyTradesOpts - Optional Parameters: - @param "CurrencyPair" (optional.String) - Retrieve results with specified currency pair - @param "Limit" (optional.Int32) - Maximum number of records to be returned in a single list - @param "Page" (optional.Int32) - Page number - @param "OrderId" (optional.String) - Filter trades with specified order ID. `currency_pair` is also required if this field is present - @param "Account" (optional.String) - Specify operation account. Default to spot ,portfolio and margin account if not specified. Set to `cross_margin` to operate against margin account. Portfolio margin account must set to `cross_margin` only - @param "From" (optional.Int64) - Start timestamp of the query - @param "To" (optional.Int64) - Time range ending, default to current time @return []Trade */ func (a *SpotApiService) ListMyTrades(ctx context.Context, localVarOptionals *ListMyTradesOpts) ([]Trade, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []Trade ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/my_trades" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} if localVarOptionals != nil && localVarOptionals.CurrencyPair.IsSet() { localVarQueryParams.Add("currency_pair", parameterToString(localVarOptionals.CurrencyPair.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Limit.IsSet() { localVarQueryParams.Add("limit", parameterToString(localVarOptionals.Limit.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Page.IsSet() { localVarQueryParams.Add("page", parameterToString(localVarOptionals.Page.Value(), "")) } if localVarOptionals != nil && localVarOptionals.OrderId.IsSet() { localVarQueryParams.Add("order_id", parameterToString(localVarOptionals.OrderId.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Account.IsSet() { localVarQueryParams.Add("account", parameterToString(localVarOptionals.Account.Value(), "")) } if localVarOptionals != nil && localVarOptionals.From.IsSet() { localVarQueryParams.Add("from", parameterToString(localVarOptionals.From.Value(), "")) } if localVarOptionals != nil && localVarOptionals.To.IsSet() { localVarQueryParams.Add("to", parameterToString(localVarOptionals.To.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } /* GetSystemTime Get server current time - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). @return SystemTime */ func (a *SpotApiService) GetSystemTime(ctx context.Context) (SystemTime, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue SystemTime ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/time" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } ctx = context.WithValue(ctx, ContextPublic, true) r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } /* CountdownCancelAllSpot Countdown cancel orders When the timeout set by the user is reached, if there is no cancel or set a new countdown, the related pending orders will be automatically cancelled. This endpoint can be called repeatedly to set a new countdown or cancel the countdown. For example, call this endpoint at 30s intervals, each countdown`timeout` is set to 30s. If this endpoint is not called again within 30 seconds, all pending orders on the specified `market` will be automatically cancelled, if no `market` is specified, all market pending orders will be cancelled. If the `timeout` is set to 0 within 30 seconds, the countdown timer will expire and the cacnel function will be cancelled. - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param countdownCancelAllSpotTask @return TriggerTime */ func (a *SpotApiService) CountdownCancelAllSpot(ctx context.Context, countdownCancelAllSpotTask CountdownCancelAllSpotTask) (TriggerTime, *http.Response, error) { var ( localVarHTTPMethod = http.MethodPost localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue TriggerTime ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/countdown_cancel_all" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHTTPContentTypes := []string{"application/json"} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } // body params localVarPostBody = &countdownCancelAllSpotTask if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } /* AmendBatchOrders Batch modification of orders Default modification of orders for spot, portfolio, and margin accounts. To modify orders for a cross margin account, the `account` parameter must be specified as `cross_margin`. For portfolio margin accounts, the `account` parameter can only be specified as `cross_margin`. Currently, only modifications to price or quantity (choose one) are supported. When modifying unfinished orders, a maximum of 5 orders can be batch-modified in one request. The request parameters should be passed in an array format. During batch modification, if one order modification fails, the modification process will continue with the next order. After execution, the response will include corresponding failure information for the failed orders. The sequence of calling for batch order modification should be consistent with the order in the order list. The response content order for batch order modification will also be consistent with the order in the order list. - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param batchAmendItem @return []BatchOrder */ func (a *SpotApiService) AmendBatchOrders(ctx context.Context, batchAmendItem []BatchAmendItem) ([]BatchOrder, *http.Response, error) { var ( localVarHTTPMethod = http.MethodPost localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []BatchOrder ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/amend_batch_orders" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHTTPContentTypes := []string{"application/json"} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } // body params localVarPostBody = &batchAmendItem if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // ListSpotPriceTriggeredOrdersOpts Optional parameters for the method 'ListSpotPriceTriggeredOrders' type ListSpotPriceTriggeredOrdersOpts struct { Market optional.String Account optional.String Limit optional.Int32 Offset optional.Int32 } /* ListSpotPriceTriggeredOrders Retrieve running auto order list - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param status Only list the orders with this status - @param optional nil or *ListSpotPriceTriggeredOrdersOpts - Optional Parameters: - @param "Market" (optional.String) - Currency pair - @param "Account" (optional.String) - Trading account type. Portfolio margin account must set to `cross_margin` - @param "Limit" (optional.Int32) - Maximum number of records to be returned in a single list - @param "Offset" (optional.Int32) - List offset, starting from 0 @return []SpotPriceTriggeredOrder */ func (a *SpotApiService) ListSpotPriceTriggeredOrders(ctx context.Context, status string, localVarOptionals *ListSpotPriceTriggeredOrdersOpts) ([]SpotPriceTriggeredOrder, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []SpotPriceTriggeredOrder ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/price_orders" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("status", parameterToString(status, "")) if localVarOptionals != nil && localVarOptionals.Market.IsSet() { localVarQueryParams.Add("market", parameterToString(localVarOptionals.Market.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Account.IsSet() { localVarQueryParams.Add("account", parameterToString(localVarOptionals.Account.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Limit.IsSet() { localVarQueryParams.Add("limit", parameterToString(localVarOptionals.Limit.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Offset.IsSet() { localVarQueryParams.Add("offset", parameterToString(localVarOptionals.Offset.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } /* CreateSpotPriceTriggeredOrder Create a price-triggered order - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param spotPriceTriggeredOrder @return TriggerOrderResponse */ func (a *SpotApiService) CreateSpotPriceTriggeredOrder(ctx context.Context, spotPriceTriggeredOrder SpotPriceTriggeredOrder) (TriggerOrderResponse, *http.Response, error) { var ( localVarHTTPMethod = http.MethodPost localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue TriggerOrderResponse ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/price_orders" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHTTPContentTypes := []string{"application/json"} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } // body params localVarPostBody = &spotPriceTriggeredOrder if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } // CancelSpotPriceTriggeredOrderListOpts Optional parameters for the method 'CancelSpotPriceTriggeredOrderList' type CancelSpotPriceTriggeredOrderListOpts struct { Market optional.String Account optional.String } /* CancelSpotPriceTriggeredOrderList Cancel all open orders - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param optional nil or *CancelSpotPriceTriggeredOrderListOpts - Optional Parameters: - @param "Market" (optional.String) - Currency pair - @param "Account" (optional.String) - Trading account type. Portfolio margin account must set to `cross_margin` @return []SpotPriceTriggeredOrder */ func (a *SpotApiService) CancelSpotPriceTriggeredOrderList(ctx context.Context, localVarOptionals *CancelSpotPriceTriggeredOrderListOpts) ([]SpotPriceTriggeredOrder, *http.Response, error) { var ( localVarHTTPMethod = http.MethodDelete localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue []SpotPriceTriggeredOrder ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/price_orders" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} if localVarOptionals != nil && localVarOptionals.Market.IsSet() { localVarQueryParams.Add("market", parameterToString(localVarOptionals.Market.Value(), "")) } if localVarOptionals != nil && localVarOptionals.Account.IsSet() { localVarQueryParams.Add("account", parameterToString(localVarOptionals.Account.Value(), "")) } // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } /* GetSpotPriceTriggeredOrder Get a price-triggered order - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param orderId Retrieve the data of the order with the specified ID @return SpotPriceTriggeredOrder */ func (a *SpotApiService) GetSpotPriceTriggeredOrder(ctx context.Context, orderId string) (SpotPriceTriggeredOrder, *http.Response, error) { var ( localVarHTTPMethod = http.MethodGet localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue SpotPriceTriggeredOrder ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/price_orders/{order_id}" localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", url.QueryEscape(parameterToString(orderId, "")), -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil } /* CancelSpotPriceTriggeredOrder cancel a price-triggered order - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param orderId Retrieve the data of the order with the specified ID @return SpotPriceTriggeredOrder */ func (a *SpotApiService) CancelSpotPriceTriggeredOrder(ctx context.Context, orderId string) (SpotPriceTriggeredOrder, *http.Response, error) { var ( localVarHTTPMethod = http.MethodDelete localVarPostBody interface{} localVarFormFileName string localVarFileName string localVarFileBytes []byte localVarReturnValue SpotPriceTriggeredOrder ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/spot/price_orders/{order_id}" localVarPath = strings.Replace(localVarPath, "{"+"order_id"+"}", url.QueryEscape(parameterToString(orderId, "")), -1) localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHTTPContentTypes := []string{} // set Content-Type header localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes) if localVarHTTPContentType != "" { localVarHeaderParams["Content-Type"] = localVarHTTPContentType } // to determine the Accept header localVarHTTPHeaderAccepts := []string{"application/json"} // set Accept header localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts) if localVarHTTPHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept } if ctx == nil { ctx = context.Background() } if ctx.Value(ContextGateAPIV4) == nil { // for compatibility, set configuration key and secret to context if ContextGateAPIV4 value is not present ctx = context.WithValue(ctx, ContextGateAPIV4, GateAPIV4{ Key: a.client.cfg.Key, Secret: a.client.cfg.Secret, }) } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFormFileName, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHTTPResponse, err := a.client.callAPI(r) if err != nil || localVarHTTPResponse == nil { return localVarReturnValue, localVarHTTPResponse, err } localVarBody, err := ioutil.ReadAll(localVarHTTPResponse.Body) localVarHTTPResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHTTPResponse, err } if localVarHTTPResponse.StatusCode >= 300 { newErr := GenericOpenAPIError{ body: localVarBody, error: localVarHTTPResponse.Status + ", " + string(localVarBody), } var gateErr GateAPIError if e := a.client.decode(&gateErr, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")); e == nil && gateErr.Label != "" { gateErr.APIError = newErr return localVarReturnValue, localVarHTTPResponse, gateErr } return localVarReturnValue, localVarHTTPResponse, newErr } err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type")) if err != nil { newErr := GenericOpenAPIError{ body: localVarBody, error: err.Error(), } return localVarReturnValue, localVarHTTPResponse, newErr } return localVarReturnValue, localVarHTTPResponse, nil }