Merge branch 'master' into wsapi

This commit is contained in:
Tiago
2025-01-16 20:17:36 +00:00
committed by GitHub
10 changed files with 138 additions and 8 deletions

View File

@@ -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);
});

View 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);
});

View File

@@ -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);
}) })

View 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
View File

@@ -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",

View File

@@ -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",

View File

@@ -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.
* *

View File

@@ -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;
}; };
} }

View File

@@ -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;

View File

@@ -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: '',