Skip to content

Commit

Permalink
Merge branch 'master' into wsapi
Browse files Browse the repository at this point in the history
  • Loading branch information
tiagosiebler authored Jan 16, 2025
2 parents 8a7c8ea + 886e533 commit 3931c5e
Show file tree
Hide file tree
Showing 10 changed files with 138 additions and 8 deletions.
18 changes: 18 additions & 0 deletions examples/apidoc/V5/Account/get-transferable-amount-unified.js
Original file line number Diff line number Diff line change
@@ -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 changes: 18 additions & 0 deletions examples/apidoc/V5/Affiliate/get-affiliate-user-info.js
Original file line number Diff line number Diff line change
@@ -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);
});
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// https://api.bybit.com/v5/broker/account-info

const { RestClientV5 } = require('bybit-api');

const client = new RestClientV5({
Expand All @@ -7,7 +9,7 @@ const client = new RestClientV5({
});

client
.getAffiliateUserInfo({ uid: '1513500' })
.getAffiliateUserList()
.then((response) => {
console.log(response);
})
Expand Down
39 changes: 39 additions & 0 deletions examples/rest-v5-next-cursor.ts
Original file line number Diff line number Diff line change
@@ -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 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"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.",
"main": "lib/index.js",
"types": "lib/index.d.ts",
Expand Down
37 changes: 37 additions & 0 deletions src/rest-client-v5.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import {
AddOrReduceMarginParamsV5,
AddOrReduceMarginResultV5,
AffiliateUserInfoV5,
AffiliateUserListItemV5,
AllCoinsBalanceV5,
AllowedDepositCoinInfoV5,
AmendOrderParamsV5,
Expand Down Expand Up @@ -995,6 +996,19 @@ export class RestClientV5 extends BaseRestClient {
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.
*
Expand Down Expand Up @@ -1782,6 +1796,29 @@ export class RestClientV5 extends BaseRestClient {
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.
*
Expand Down
11 changes: 8 additions & 3 deletions src/types/response/v5-market.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ export interface LinearInverseInstrumentInfoV5 {
copyTrading: CopyTradingV5;
upperFundingRate: string;
lowerFundingRate: string;
riskParameters: {
priceLimitRatioX: string;
priceLimitRatioY: string;
};
isPreListing: boolean;
preListingInfo: {
curAuctionPhase: string;
Expand All @@ -97,7 +101,7 @@ export interface OptionInstrumentInfoV5 {
status: InstrumentStatusV5;
baseCoin: string;
quoteCoin: string;
settleCoin: boolean;
settleCoin: string;
launchTime: string;
deliveryTime: string;
deliveryFeeRate: string;
Expand All @@ -120,6 +124,7 @@ export interface SpotInstrumentInfoV5 {
innovation: '0' | '1';
status: InstrumentStatusV5;
marginTrading: MarginTradingV5;
stTag: '0' | '1';
lotSizeFilter: {
basePrecision: string;
quotePrecision: string;
Expand All @@ -132,8 +137,8 @@ export interface SpotInstrumentInfoV5 {
tickSize: string;
};
riskParameters: {
limitParameter: string;
marketParameter: string;
priceLimitRatioX: string;
priceLimitRatioY: string;
};
}

Expand Down
8 changes: 8 additions & 0 deletions src/types/response/v5-user.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,14 @@ export interface SubAccountAllApiKeysResultV5 {
nextPageCursor: string;
}

export interface AffiliateUserListItemV5 {
userId: string;
registerTime: string;
source: string;
remarks: string;
isKyc: boolean;
}

export interface AffiliateUserInfoV5 {
uid: string;
vipLevel: string;
Expand Down
5 changes: 4 additions & 1 deletion test/v5/private.read.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,10 @@ describe('Private READ V5 REST API Endpoints', () => {

it('getAllCoinsBalance()', async () => {
expect(
await api.getAllCoinsBalance({ accountType: accountType }),
await api.getAllCoinsBalance({
accountType: accountType,
coin: settleCoin,
}),
).toMatchObject({
...successResponseObjectV3(),
// retMsg: '',
Expand Down

0 comments on commit 3931c5e

Please sign in to comment.