forked from Kucoin/kucoin-futures-go-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaccount.go
153 lines (135 loc) · 5.4 KB
/
account.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
package kumex
import (
"encoding/json"
"net/http"
)
// An AccountModel represents an account.
type AccountModel struct {
AccountEquity float64 `json:"accountEquity"`
UnrealisedPNL float64 `json:"unrealisedPNL"`
MarginBalance float64 `json:"marginBalance"`
PositionMargin float64 `json:"positionMargin"`
OrderMargin float64 `json:"orderMargin"`
FrozenFunds float64 `json:"frozenFunds"`
AvailableBalance float64 `json:"availableBalance"`
Currency string `json:"currency"`
}
// An AccountsModel is the set of *AccountModel.
type AccountsModel []*AccountModel
// AccountOverview returns a list of accounts.
// See the Deposits section for documentation on how to deposit funds to begin trading.
func (as *ApiService) AccountOverview(params map[string]string) (*ApiResponse, error) {
req := NewRequest(http.MethodGet, "/api/v1/account-overview", params)
return as.Call(req)
}
// A TransactionHistoryModel represents a sub-account user.
type TransactionHistoryModel struct {
Time string `json:"time"`
Type string `json:"type"`
Amount string `json:"amount"`
Fee string `json:"fee"`
AccountEquity string `json:"accountEquity"`
Status string `json:"status"`
Remarks string `json:"remark"`
Offset string `json:"offset"`
Currency string `json:"currency"`
}
// An TransactionHistoryListModel the set of *TransactionHistoryModel.
type TransactionHistoryListModel []*TransactionHistoryModel
// TransactionHistory returns a list of ledgers.
// Account activity either increases or decreases your account balance.
// Items are paginated and sorted latest first.
func (as *ApiService) TransactionHistory(params map[string]string, pagination *PaginationParam) (*ApiResponse, error) {
pagination.ReadParam(params)
req := NewRequest(http.MethodGet, "/api/v1/transaction-history", params)
return as.Call(req)
}
// SubApiKeys This endpoint can be used to obtain a list of Futures APIs pertaining to a sub-account.
func (as *ApiService) SubApiKeys(apiKey, subName string) (*ApiResponse, error) {
p := map[string]string{
"apiKey": apiKey,
"subName": subName,
}
req := NewRequest(http.MethodGet, "/api/v1/sub/api-key", p)
return as.Call(req)
}
type SubApiKeysModel []*SubApiKeyModel
type SubApiKeyModel struct {
SubName string `json:"subName"`
Remark string `json:"remark"`
ApiKey string `json:"apiKey"`
Permission string `json:"permission"`
IpWhitelist string `json:"ipWhitelist"`
CreatedAt json.Number `json:"createdAt"`
}
// CreateSubApiKey This endpoint can be used to create Futures APIs for sub-accounts.
func (as *ApiService) CreateSubApiKey(p map[string]string) (*ApiResponse, error) {
req := NewRequest(http.MethodPost, "/api/v1/sub/api-key", p)
return as.Call(req)
}
type CreateSubApiKeyRes struct {
SubName string `json:"subName"`
Remark string `json:"remark"`
ApiKey string `json:"apiKey"`
Permission string `json:"permission"`
IpWhitelist string `json:"ipWhitelist"`
CreatedAt json.Number `json:"createdAt"`
ApiSecret string `json:"apiSecret"`
Passphrase string `json:"passphrase"`
}
// ModifySubApiKey TThis endpoint can be used to modify sub-account Futures APIs.
func (as *ApiService) ModifySubApiKey(p map[string]string) (*ApiResponse, error) {
req := NewRequest(http.MethodPost, "/api/v1/sub/api-key/update", p)
return as.Call(req)
}
type ModifySubApiKeyRes struct {
SubName string `json:"subName"`
Permission string `json:"permission"`
IpWhitelist string `json:"ipWhitelist"`
ApiKey string `json:"apiKey"`
}
// DeleteSubApiKey This endpoint can be used to delete sub-account Futures APIs.
func (as *ApiService) DeleteSubApiKey(apiKey, passphrase, subName string) (*ApiResponse, error) {
p := map[string]string{
"apiKey": apiKey,
"passphrase": passphrase,
"subName": subName,
}
req := NewRequest(http.MethodDelete, "/api/v1/sub/api-key", p)
return as.Call(req)
}
type DeleteSubApiKeyRes struct {
ApiKey string `json:"apiKey"`
SubName string `json:"subName"`
}
// SubAccountsBalance Get All Sub-Accounts Balance - Futures
func (as *ApiService) SubAccountsBalance(currency string) (*ApiResponse, error) {
p := map[string]string{
"currency": currency,
}
req := NewRequest(http.MethodGet, "/api/v1/account-overview-all", p)
return as.Call(req)
}
type SubAccountBalanceModel struct {
Summary struct {
AccountEquityTotal json.Number `json:"accountEquityTotal"`
UnrealisedPNLTotal json.Number `json:"unrealisedPNLTotal"`
MarginBalanceTotal json.Number `json:"marginBalanceTotal"`
PositionMarginTotal json.Number `json:"positionMarginTotal"`
OrderMarginTotal json.Number `json:"orderMarginTotal"`
FrozenFundsTotal json.Number `json:"frozenFundsTotal"`
AvailableBalanceTotal json.Number `json:"availableBalanceTotal"`
Currency string `json:"currency"`
} `json:"summary"`
Accounts []struct {
AccountName string `json:"accountName"`
AccountEquity json.Number `json:"accountEquity"`
UnrealisedPNL json.Number `json:"unrealisedPNL"`
MarginBalance json.Number `json:"marginBalance"`
PositionMargin json.Number `json:"positionMargin"`
OrderMargin json.Number `json:"orderMargin"`
FrozenFunds json.Number `json:"frozenFunds"`
AvailableBalance json.Number `json:"availableBalance"`
Currency string `json:"currency"`
} `json:"accounts"`
}