Merge branch 'master' into wsapi
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
const { RestClientV5 } = require('bybit-api');
|
||||||
|
|
||||||
|
const client = new RestClientV5({
|
||||||
|
testnet: true,
|
||||||
|
key: 'apikey',
|
||||||
|
secret: 'apisecret',
|
||||||
|
});
|
||||||
|
|
||||||
|
client
|
||||||
|
.getTransferableAmount({
|
||||||
|
coinName: 'USDT',
|
||||||
|
})
|
||||||
|
.then((response) => {
|
||||||
|
console.log(response);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.error(error);
|
||||||
|
});
|
||||||
18
examples/apidoc/V5/Affiliate/get-affiliate-user-info.js
Normal file
18
examples/apidoc/V5/Affiliate/get-affiliate-user-info.js
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
// https://api.bybit.com/v5/broker/account-info
|
||||||
|
|
||||||
|
const { RestClientV5 } = require('bybit-api');
|
||||||
|
|
||||||
|
const client = new RestClientV5({
|
||||||
|
testnet: true,
|
||||||
|
key: 'apikey',
|
||||||
|
secret: 'apisecret',
|
||||||
|
});
|
||||||
|
|
||||||
|
client
|
||||||
|
.getAffiliateUserInfo({ uid: '1234567890' })
|
||||||
|
.then((response) => {
|
||||||
|
console.log(response);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.error(error);
|
||||||
|
});
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// https://api.bybit.com/v5/broker/account-info
|
||||||
|
|
||||||
const { RestClientV5 } = require('bybit-api');
|
const { RestClientV5 } = require('bybit-api');
|
||||||
|
|
||||||
const client = new RestClientV5({
|
const client = new RestClientV5({
|
||||||
@@ -7,7 +9,7 @@ const client = new RestClientV5({
|
|||||||
});
|
});
|
||||||
|
|
||||||
client
|
client
|
||||||
.getAffiliateUserInfo({ uid: '1513500' })
|
.getAffiliateUserList()
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
console.log(response);
|
console.log(response);
|
||||||
})
|
})
|
||||||
39
examples/rest-v5-next-cursor.ts
Normal file
39
examples/rest-v5-next-cursor.ts
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
import { RestClientV5, UniversalTransferRecordV5 } from '../src/index';
|
||||||
|
|
||||||
|
// or
|
||||||
|
// import { RestClientV5 } from 'bybit-api';
|
||||||
|
|
||||||
|
const client = new RestClientV5({
|
||||||
|
testnet: false,
|
||||||
|
key: 'insert_api_key',
|
||||||
|
secret: 'insert_api_secret',
|
||||||
|
});
|
||||||
|
|
||||||
|
async function getAllUniversalTransfers() {
|
||||||
|
const allTransfers: UniversalTransferRecordV5[] = [];
|
||||||
|
let nextCursor = '';
|
||||||
|
let pages = 0;
|
||||||
|
|
||||||
|
do {
|
||||||
|
pages++;
|
||||||
|
console.log(`Fetching data from page ${pages}`);
|
||||||
|
const response = await client.getUniversalTransferRecords({
|
||||||
|
limit: 50, // Maximum page size per request
|
||||||
|
cursor: nextCursor || undefined, // Only send cursor if we have one
|
||||||
|
});
|
||||||
|
|
||||||
|
if (response.result.list && response.result.list.length > 0) {
|
||||||
|
allTransfers.push(...response.result.list);
|
||||||
|
}
|
||||||
|
|
||||||
|
nextCursor = response.result.nextPageCursor;
|
||||||
|
|
||||||
|
// Optional: Add a small delay to avoid rate limits
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||||
|
} while (nextCursor);
|
||||||
|
|
||||||
|
console.log('Total transfers fetched:', allTransfers.length);
|
||||||
|
console.log('All transfers:', allTransfers);
|
||||||
|
}
|
||||||
|
|
||||||
|
getAllUniversalTransfers().catch(console.error);
|
||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "bybit-api",
|
"name": "bybit-api",
|
||||||
"version": "3.10.27",
|
"version": "3.10.28",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "bybit-api",
|
"name": "bybit-api",
|
||||||
"version": "3.10.27",
|
"version": "3.10.28",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.6.6",
|
"axios": "^1.6.6",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "bybit-api",
|
"name": "bybit-api",
|
||||||
"version": "3.10.27",
|
"version": "3.10.29",
|
||||||
"description": "Complete & robust Node.js SDK for Bybit's REST APIs and WebSockets, with TypeScript & strong end to end tests.",
|
"description": "Complete & robust Node.js SDK for Bybit's REST APIs and WebSockets, with TypeScript & strong end to end tests.",
|
||||||
"main": "lib/index.js",
|
"main": "lib/index.js",
|
||||||
"types": "lib/index.d.ts",
|
"types": "lib/index.d.ts",
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import {
|
|||||||
AddOrReduceMarginParamsV5,
|
AddOrReduceMarginParamsV5,
|
||||||
AddOrReduceMarginResultV5,
|
AddOrReduceMarginResultV5,
|
||||||
AffiliateUserInfoV5,
|
AffiliateUserInfoV5,
|
||||||
|
AffiliateUserListItemV5,
|
||||||
AllCoinsBalanceV5,
|
AllCoinsBalanceV5,
|
||||||
AllowedDepositCoinInfoV5,
|
AllowedDepositCoinInfoV5,
|
||||||
AmendOrderParamsV5,
|
AmendOrderParamsV5,
|
||||||
@@ -995,6 +996,19 @@ export class RestClientV5 extends BaseRestClient {
|
|||||||
return this.getPrivate('/v5/account/wallet-balance', params);
|
return this.getPrivate('/v5/account/wallet-balance', params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query the available amount to transfer of a specific coin in the Unified wallet.
|
||||||
|
*
|
||||||
|
* @param coinName Coin name, uppercase only
|
||||||
|
*/
|
||||||
|
getTransferableAmount(params: { coinName: string }): Promise<
|
||||||
|
APIResponseV3WithTime<{
|
||||||
|
availableWithdrawal: string;
|
||||||
|
}>
|
||||||
|
> {
|
||||||
|
return this.getPrivate('/v5/account/withdrawal', params);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Upgrade to unified account.
|
* Upgrade to unified account.
|
||||||
*
|
*
|
||||||
@@ -1782,6 +1796,29 @@ export class RestClientV5 extends BaseRestClient {
|
|||||||
return this.postPrivate('/v5/user/del-submember', params);
|
return this.postPrivate('/v5/user/del-submember', params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
****** Affiliate APIs
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Affiliate User List.
|
||||||
|
* To use this endpoint, you should have an affiliate account and only tick "affiliate" permission while creating the API key.
|
||||||
|
*
|
||||||
|
* TIP:
|
||||||
|
* - Use master UID only
|
||||||
|
* - The api key can only have "Affiliate" permission
|
||||||
|
*/
|
||||||
|
getAffiliateUserList(params?: { size?: number; cursor?: string }): Promise<
|
||||||
|
APIResponseV3WithTime<{
|
||||||
|
list: AffiliateUserListItemV5[];
|
||||||
|
nextPageCursor: string;
|
||||||
|
}>
|
||||||
|
> {
|
||||||
|
return this.getPrivate('/v5/affiliate/aff-user-list', params);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Affiliate User Info.
|
* Get Affiliate User Info.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -75,6 +75,10 @@ export interface LinearInverseInstrumentInfoV5 {
|
|||||||
copyTrading: CopyTradingV5;
|
copyTrading: CopyTradingV5;
|
||||||
upperFundingRate: string;
|
upperFundingRate: string;
|
||||||
lowerFundingRate: string;
|
lowerFundingRate: string;
|
||||||
|
riskParameters: {
|
||||||
|
priceLimitRatioX: string;
|
||||||
|
priceLimitRatioY: string;
|
||||||
|
};
|
||||||
isPreListing: boolean;
|
isPreListing: boolean;
|
||||||
preListingInfo: {
|
preListingInfo: {
|
||||||
curAuctionPhase: string;
|
curAuctionPhase: string;
|
||||||
@@ -97,7 +101,7 @@ export interface OptionInstrumentInfoV5 {
|
|||||||
status: InstrumentStatusV5;
|
status: InstrumentStatusV5;
|
||||||
baseCoin: string;
|
baseCoin: string;
|
||||||
quoteCoin: string;
|
quoteCoin: string;
|
||||||
settleCoin: boolean;
|
settleCoin: string;
|
||||||
launchTime: string;
|
launchTime: string;
|
||||||
deliveryTime: string;
|
deliveryTime: string;
|
||||||
deliveryFeeRate: string;
|
deliveryFeeRate: string;
|
||||||
@@ -120,6 +124,7 @@ export interface SpotInstrumentInfoV5 {
|
|||||||
innovation: '0' | '1';
|
innovation: '0' | '1';
|
||||||
status: InstrumentStatusV5;
|
status: InstrumentStatusV5;
|
||||||
marginTrading: MarginTradingV5;
|
marginTrading: MarginTradingV5;
|
||||||
|
stTag: '0' | '1';
|
||||||
lotSizeFilter: {
|
lotSizeFilter: {
|
||||||
basePrecision: string;
|
basePrecision: string;
|
||||||
quotePrecision: string;
|
quotePrecision: string;
|
||||||
@@ -132,8 +137,8 @@ export interface SpotInstrumentInfoV5 {
|
|||||||
tickSize: string;
|
tickSize: string;
|
||||||
};
|
};
|
||||||
riskParameters: {
|
riskParameters: {
|
||||||
limitParameter: string;
|
priceLimitRatioX: string;
|
||||||
marketParameter: string;
|
priceLimitRatioY: string;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -78,6 +78,14 @@ export interface SubAccountAllApiKeysResultV5 {
|
|||||||
nextPageCursor: string;
|
nextPageCursor: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface AffiliateUserListItemV5 {
|
||||||
|
userId: string;
|
||||||
|
registerTime: string;
|
||||||
|
source: string;
|
||||||
|
remarks: string;
|
||||||
|
isKyc: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
export interface AffiliateUserInfoV5 {
|
export interface AffiliateUserInfoV5 {
|
||||||
uid: string;
|
uid: string;
|
||||||
vipLevel: string;
|
vipLevel: string;
|
||||||
|
|||||||
@@ -172,7 +172,10 @@ describe('Private READ V5 REST API Endpoints', () => {
|
|||||||
|
|
||||||
it('getAllCoinsBalance()', async () => {
|
it('getAllCoinsBalance()', async () => {
|
||||||
expect(
|
expect(
|
||||||
await api.getAllCoinsBalance({ accountType: accountType }),
|
await api.getAllCoinsBalance({
|
||||||
|
accountType: accountType,
|
||||||
|
coin: settleCoin,
|
||||||
|
}),
|
||||||
).toMatchObject({
|
).toMatchObject({
|
||||||
...successResponseObjectV3(),
|
...successResponseObjectV3(),
|
||||||
// retMsg: '',
|
// retMsg: '',
|
||||||
|
|||||||
Reference in New Issue
Block a user