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 client = new RestClientV5({
|
||||
@@ -7,7 +9,7 @@ const client = new RestClientV5({
|
||||
});
|
||||
|
||||
client
|
||||
.getAffiliateUserInfo({ uid: '1513500' })
|
||||
.getAffiliateUserList()
|
||||
.then((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",
|
||||
"version": "3.10.27",
|
||||
"version": "3.10.28",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "bybit-api",
|
||||
"version": "3.10.27",
|
||||
"version": "3.10.28",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"axios": "^1.6.6",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -12,6 +12,7 @@ import {
|
||||
AddOrReduceMarginParamsV5,
|
||||
AddOrReduceMarginResultV5,
|
||||
AffiliateUserInfoV5,
|
||||
AffiliateUserListItemV5,
|
||||
AllCoinsBalanceV5,
|
||||
AllowedDepositCoinInfoV5,
|
||||
AmendOrderParamsV5,
|
||||
@@ -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.
|
||||
*
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -75,6 +75,10 @@ export interface LinearInverseInstrumentInfoV5 {
|
||||
copyTrading: CopyTradingV5;
|
||||
upperFundingRate: string;
|
||||
lowerFundingRate: string;
|
||||
riskParameters: {
|
||||
priceLimitRatioX: string;
|
||||
priceLimitRatioY: string;
|
||||
};
|
||||
isPreListing: boolean;
|
||||
preListingInfo: {
|
||||
curAuctionPhase: string;
|
||||
@@ -97,7 +101,7 @@ export interface OptionInstrumentInfoV5 {
|
||||
status: InstrumentStatusV5;
|
||||
baseCoin: string;
|
||||
quoteCoin: string;
|
||||
settleCoin: boolean;
|
||||
settleCoin: string;
|
||||
launchTime: string;
|
||||
deliveryTime: string;
|
||||
deliveryFeeRate: string;
|
||||
@@ -120,6 +124,7 @@ export interface SpotInstrumentInfoV5 {
|
||||
innovation: '0' | '1';
|
||||
status: InstrumentStatusV5;
|
||||
marginTrading: MarginTradingV5;
|
||||
stTag: '0' | '1';
|
||||
lotSizeFilter: {
|
||||
basePrecision: string;
|
||||
quotePrecision: string;
|
||||
@@ -132,8 +137,8 @@ export interface SpotInstrumentInfoV5 {
|
||||
tickSize: string;
|
||||
};
|
||||
riskParameters: {
|
||||
limitParameter: string;
|
||||
marketParameter: string;
|
||||
priceLimitRatioX: string;
|
||||
priceLimitRatioY: string;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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: '',
|
||||
|
||||
Reference in New Issue
Block a user