Skip to content

Commit 0e9f7a1

Browse files
authored
api to retrieve leverage maintenance margin ratio and collateral rate (#28)
1 parent 101b3c3 commit 0e9f7a1

File tree

4 files changed

+111
-1
lines changed

4 files changed

+111
-1
lines changed

v2/account_service.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,3 +220,29 @@ type APIKeyPermission struct {
220220
EnableSpotAndMarginTrading bool `json:"enableSpotAndMarginTrading"`
221221
TradingAuthorityExpirationTime uint64 `json:"tradingAuthorityExpirationTime"`
222222
}
223+
224+
// GetCollateralRateService get collateral rates for coins
225+
type GetCollateralRateService struct {
226+
c *Client
227+
}
228+
229+
// Do send request
230+
func (s *GetCollateralRateService) Do(ctx context.Context, opts ...RequestOption) ([]*CollateralRate, error) {
231+
r := &request{
232+
method: http.MethodGet,
233+
endpoint: "/sapi/v1/portfolio/collateralRate",
234+
secType: secTypeSigned,
235+
}
236+
data, err := s.c.callAPI(ctx, r, opts...)
237+
if err != nil {
238+
return nil, err
239+
}
240+
241+
res := make([]*CollateralRate, 0)
242+
return res, json.Unmarshal(data, &res)
243+
}
244+
245+
type CollateralRate struct {
246+
Asset string `json:"asset"`
247+
Rate string `json:"collateralRate"`
248+
}

v2/client.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,3 +1046,7 @@ func (c *Client) NewSubAccountFuturesTransferV1Service() *SubAccountFuturesTrans
10461046
func (c *Client) NewGetEarnAccountSerice() *GetEarnAccountService {
10471047
return &GetEarnAccountService{c: c}
10481048
}
1049+
1050+
func (c *Client) NewGetCollateralRateService() *GetCollateralRateService {
1051+
return &GetCollateralRateService{c: c}
1052+
}

v2/portfolio/account_service.go

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func (s *GetBalanceService) Do(ctx context.Context, opts ...RequestOption) ([]*B
7474
}
7575
data, err := s.c.callAPI(ctx, r, opts...)
7676
if err != nil {
77-
return []*Balance{}, err
77+
return nil, err
7878
}
7979

8080
res := make([]*Balance, 0)
@@ -97,3 +97,71 @@ type Balance struct {
9797
NegativeBalance string `json:"negativeBalance"`
9898
UpdateTime int64 `json:"updateTime"`
9999
}
100+
101+
type GetLeverageBracketServiceCM struct {
102+
c *Client
103+
symbol *string
104+
}
105+
106+
func (s *GetLeverageBracketServiceCM) Do(ctx context.Context, opts ...RequestOption) ([]*LeverageBrackets, error) {
107+
r := &request{
108+
method: http.MethodGet,
109+
endpoint: "/papi/v1/cm/leverageBracket",
110+
secType: secTypeSigned,
111+
}
112+
if s.symbol != nil {
113+
r.setParam("symbol", *s.symbol)
114+
}
115+
data, err := s.c.callAPI(ctx, r, opts...)
116+
if err != nil {
117+
return nil, err
118+
}
119+
120+
res := make([]*LeverageBrackets, 0)
121+
return res, json.Unmarshal(data, &res)
122+
}
123+
124+
func (s *GetLeverageBracketServiceCM) Symbol(symbol string) *GetLeverageBracketServiceCM {
125+
s.symbol = &symbol
126+
return s
127+
}
128+
129+
type GetLeverageBracketServiceUM struct {
130+
c *Client
131+
symbol *string
132+
}
133+
134+
func (s *GetLeverageBracketServiceUM) Do(ctx context.Context, opts ...RequestOption) ([]*LeverageBrackets, error) {
135+
r := &request{
136+
method: http.MethodGet,
137+
endpoint: "/papi/v1/um/leverageBracket",
138+
secType: secTypeSigned,
139+
}
140+
if s.symbol != nil {
141+
r.setParam("symbol", *s.symbol)
142+
}
143+
data, err := s.c.callAPI(ctx, r, opts...)
144+
if err != nil {
145+
return nil, err
146+
}
147+
148+
res := make([]*LeverageBrackets, 0)
149+
return res, json.Unmarshal(data, &res)
150+
}
151+
152+
func (s *GetLeverageBracketServiceUM) Symbol(symbol string) *GetLeverageBracketServiceUM {
153+
s.symbol = &symbol
154+
return s
155+
}
156+
157+
type LeverageBrackets struct {
158+
Symbol string `json:"symbol"`
159+
Brackets []struct {
160+
Bracket int `json:"bracket"`
161+
NotionalFloor float64 `json:"notionalFloor"`
162+
NotionalCap float64 `json:"notionalCap"`
163+
QtyFloor float64 `json:"qtyFloor"`
164+
QtyCap float64 `json:"qtyCap"`
165+
MaintenanceMarginRatio float64 `json:"maintMarginRatio"`
166+
} `json:"brackets"`
167+
}

v2/portfolio/client.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,3 +390,15 @@ func (c *Client) NewGetAccountService() *GetAccountService {
390390
func (c *Client) NewGetBalanceService() *GetBalanceService {
391391
return &GetBalanceService{c: c}
392392
}
393+
394+
func (c *Client) NewGetLeverageBracketServiceCM() *GetLeverageBracketServiceCM {
395+
return &GetLeverageBracketServiceCM{
396+
c: c,
397+
}
398+
}
399+
400+
func (c *Client) NewGetLeverageBracketServiceUM() *GetLeverageBracketServiceUM {
401+
return &GetLeverageBracketServiceUM{
402+
c: c,
403+
}
404+
}

0 commit comments

Comments
 (0)