Merge branch 'master' into readmeUpdate

This commit is contained in:
Jerko J
2024-09-23 14:40:14 +02:00
committed by GitHub
13 changed files with 645 additions and 418 deletions

View File

@@ -0,0 +1,19 @@
const { RestClientV5 } = require('bybit-api');
const client = new RestClientV5({
testnet: true,
key: 'apikey',
secret: 'apisecret',
});
client
.getClassicTransactionLogs({
limit: 1,
symbol: 'BTCUSD',
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.error(error);
});

View File

@@ -7,7 +7,12 @@ const client = new RestClientV5({
});
client
.getAllCoinsBalance({ accountType: 'FUND', coin: 'USDC' })
.getCoinBalance({
accountType: 'UNIFIED',
coin: 'USDT',
toAccountType: 'FUND',
withLtvTransferSafeAmount: 1,
})
.then((response) => {
console.log(response);
})

View File

@@ -3,7 +3,7 @@ const { RestClientV5 } = require('bybit-api');
const client = new RestClientV5({
testnet: true,
});
// linear
client
.getInstrumentsInfo({
category: 'linear',
@@ -15,3 +15,29 @@ client
.catch((error) => {
console.error(error);
});
// option
client
.getInstrumentsInfo({
category: 'option',
symbol: 'ETH-3JAN23-1250-P',
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.error(error);
});
// spot
client
.getInstrumentsInfo({
category: 'spot',
symbol: 'BTCUSDT',
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.error(error);
});

View File

@@ -4,6 +4,7 @@ const client = new RestClientV5({
testnet: true,
});
// inverse
client
.getTickers({
category: 'inverse',
@@ -15,3 +16,31 @@ client
.catch((error) => {
console.error(error);
});
// option
client
.getTickers({
category: 'option',
symbol: 'BTC-30DEC22-18000-C',
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.error(error);
});
// spot
client
.getTickers({
category: 'spot',
symbol: 'BTCUSDT',
})
.then((response) => {
console.log(response);
})
.catch((error) => {
console.error(error);
});

View File

@@ -7,7 +7,7 @@ const client = new RestClientV5({
});
client
.deleteSubApiKey()
.getAffiliateUserInfo({ uid: '1513500' })
.then((response) => {
console.log(response);
})

View File

@@ -0,0 +1,57 @@
import { RestClientV5 } from '../src/index';
// or
// import { RestClientV5 } from 'bybit-api';
/**
* The first parameter of the REST client allows you to pass any configuration parameters supported by the SDK.
*
* These include API keys, if you wish to use private endpoints, but also expose other features such as
* setting a custom base URL (e.g. for Turkish users).
*
* Refer to the API documentation for a complete list of domains: https://bybit-exchange.github.io/docs/v5/guide#authentication
*/
const client = new RestClientV5({
/**
* You can pass a completely custom base URL,
* e.g. if you're trying to use a domain that hasn't been added yet (please let us know)
*/
// baseUrl: 'https://api5.bybit.com',
//
//
/**
*
* There are also predefined API regions, which you can easily use with the "apiRegion" property:
*
*/
//
//
// default: routes to api.bybit.com
// apiRegion: 'default',
//
//
// bytick: routes to api.bytick.com
// apiRegion: 'bytick',
//
//
// NL: routes to api.bybit.nl (for Netherland users)
// apiRegion: 'NL',
//
//
// HK: routes to api.byhkbit.com (for Hong Kong users)
// apiRegion: 'HK',
//
//
// TK: routes to api.bybit-tr.com (for Turkey users)
// apiRegion: 'TK',
});
(async () => {
try {
const time1 = await client.getServerTime();
console.log('time res: ', { time1 });
} catch (e) {
console.error('request failed: ', e);
}
})();

862
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "bybit-api",
"version": "3.10.15",
"version": "3.10.18",
"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",

View File

@@ -1248,6 +1248,10 @@ export class RestClientV5 extends BaseRestClient {
* Use this endpoint to enable a subaccount to take part in a universal transfer.
* It is a one-time switch which, once thrown, enables a subaccount permanently.
* If not set, your subaccount cannot use universal transfers.
*
* @deprecated - You no longer need to configure transferable sub UIDs.
* Now, all sub UIDs are automatically enabled for universal transfer.
*
*/
enableUniversalTransferForSubUIDs(
subMemberIds: string[],
@@ -2031,6 +2035,7 @@ export class RestClientV5 extends BaseRestClient {
/**
* Get Margin Coin Info
* @deprecated
*/
getInstitutionalLendingMarginCoinInfo(
productId?: string,
@@ -2072,6 +2077,7 @@ export class RestClientV5 extends BaseRestClient {
/**
* Get LTV
* @deprecated
*/
getInstitutionalLendingLTV(): Promise<
APIResponseV3WithTime<{ ltvInfo: any[] }>

View File

@@ -36,10 +36,13 @@ export interface GetAllCoinsBalanceParamsV5 {
export interface GetAccountCoinBalanceParamsV5 {
memberId?: string;
toMemberId?: string;
accountType: AccountTypeV5;
coin: string;
toAccountType?: AccountTypeV5;
withBonus?: number;
withTransferSafeAmount?: 0 | 1;
withLtvTransferSafeAmount?: 0 | 1;
}
export interface GetInternalTransferParamsV5 {

View File

@@ -1,5 +1,6 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import axios, { AxiosRequestConfig, AxiosResponse, Method } from 'axios';
import https from 'https';
import {
APIID,
@@ -137,6 +138,16 @@ export default abstract class BaseRestClient {
},
};
// If enabled, configure a https agent with keepAlive enabled
if (this.options.keepAlive) {
// For more advanced configuration, raise an issue on GitHub or use the "networkOptions"
// parameter to define a custom httpsAgent with the desired properties
this.globalRequestOptions.httpsAgent = new https.Agent({
keepAlive: true,
keepAliveMsecs: this.options.keepAliveMsecs,
});
}
this.baseUrl = getRestBaseUrl(!!this.options.testnet, restOptions);
this.key = this.options.key;
this.secret = this.options.secret;

View File

@@ -29,6 +29,19 @@ export interface RestClientOptions {
*/
enable_time_sync?: boolean;
/**
* Enable keep alive for REST API requests (via axios).
* See: https://github.com/tiagosiebler/bybit-api/issues/368
*/
keepAlive?: boolean;
/**
* When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000.
* Only relevant if keepAlive is set to true.
* Default: 1000 (defaults comes from https agent)
*/
keepAliveMsecs?: number;
/** How often to sync time drift with bybit servers */
sync_interval_ms?: number | string;
@@ -51,6 +64,8 @@ export interface RestClientOptions {
**/
baseUrl?: string;
apiRegion?: 'default' | 'bytick' | 'NL' | 'HK' | 'TK';
/** Default: true. whether to try and post-process request exceptions. */
parse_exceptions?: boolean;
@@ -100,7 +115,13 @@ export function getRestBaseUrl(
restClientOptions: RestClientOptions,
): string {
const exchangeBaseUrls = {
livenet: 'https://api.bybit.com',
livenet: {
default: 'https://api.bybit.com',
bytick: 'https://api.bytick.com',
NL: 'https://api.bybit.nl',
HK: 'https://api.byhkbit.com',
TK: 'https://api.bybit-tr.com',
},
testnet: 'https://api-testnet.bybit.com',
demoLivenet: 'https://api-demo.bybit.com',
};
@@ -117,7 +138,19 @@ export function getRestBaseUrl(
return exchangeBaseUrls.testnet;
}
return exchangeBaseUrls.livenet;
if (restClientOptions.apiRegion) {
const regionalBaseURL =
exchangeBaseUrls.livenet[restClientOptions.apiRegion];
if (!regionalBaseURL) {
throw new Error(
`No base URL found for region "${restClientOptions.apiRegion}". Check that your "apiRegion" value is valid.`,
);
}
return regionalBaseURL;
}
return exchangeBaseUrls.livenet.default;
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any