├── .github └── workflows │ └── maven-publish.yml ├── .gitignore ├── .idea ├── .gitignore ├── aws.xml ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── encodings.xml ├── inspectionProfiles │ └── Project_Default.xml ├── misc.xml ├── uiDesigner.xml └── vcs.xml ├── LICENSE ├── README.md ├── pom.xml ├── pom.xml.versionsBackup ├── src ├── .idea │ ├── misc.xml │ ├── modules.xml │ ├── vcs.xml │ └── workspace.xml ├── main │ ├── java │ │ └── com │ │ │ └── bybit │ │ │ └── api │ │ │ └── client │ │ │ ├── config │ │ │ └── BybitApiConfig.java │ │ │ ├── constant │ │ │ ├── BybitApiConstants.java │ │ │ └── Helper.java │ │ │ ├── domain │ │ │ ├── CategoryType.java │ │ │ ├── GenericResponse.java │ │ │ ├── TradeOrderType.java │ │ │ ├── TriggerBy.java │ │ │ ├── WithdrawBeneficiaryMap.java │ │ │ ├── account │ │ │ │ ├── AccountType.java │ │ │ │ ├── CollateralSwitch.java │ │ │ │ ├── SpotHedgingMode.java │ │ │ │ └── request │ │ │ │ │ ├── AccountDataRequest.java │ │ │ │ │ ├── BatchSetCollateralCoinRequest.java │ │ │ │ │ ├── ResetMMPRequest.java │ │ │ │ │ ├── SetCollateralCoinRequest.java │ │ │ │ │ ├── SetMMPRequest.java │ │ │ │ │ ├── SetMarginModeRequest.java │ │ │ │ │ └── SetSpotHedgingRequest.java │ │ │ ├── announcement │ │ │ │ ├── AnnouncementTag.java │ │ │ │ ├── AnnouncementType.java │ │ │ │ ├── LanguageSymbol.java │ │ │ │ └── request │ │ │ │ │ └── AnnouncementInfoRequest.java │ │ │ ├── asset │ │ │ │ ├── FeeType.java │ │ │ │ ├── TransferStatus.java │ │ │ │ ├── WithBonus.java │ │ │ │ ├── WithTransferSafeAmount.java │ │ │ │ ├── WithdrawType.java │ │ │ │ └── request │ │ │ │ │ ├── AssetCancelWithdrawRequest.java │ │ │ │ │ ├── AssetDataRequest.java │ │ │ │ │ ├── AssetDepositRequest.java │ │ │ │ │ ├── AssetInternalTransferRequest.java │ │ │ │ │ ├── AssetQuoteRequest.java │ │ │ │ │ ├── AssetUniversalTransferRequest.java │ │ │ │ │ ├── AssetWithdrawRequest.java │ │ │ │ │ ├── ConfirmQuoteRequest.java │ │ │ │ │ └── SetAssetDepositAccountRequest.java │ │ │ ├── broker │ │ │ │ ├── BusinessType.java │ │ │ │ ├── WithUsedAmount.java │ │ │ │ └── request │ │ │ │ │ ├── BrokerDataRequest.java │ │ │ │ │ ├── BrokerGetIssuedVoucherRequest.java │ │ │ │ │ ├── BrokerIssueVoucherRequest.java │ │ │ │ │ └── BrokerVoucherSpecRequest.java │ │ │ ├── institution │ │ │ │ ├── LendingDataRequest.java │ │ │ │ ├── LendingOrderType.java │ │ │ │ ├── OperateType.java │ │ │ │ ├── clientLending │ │ │ │ │ ├── ClientLendingFundsRequest.java │ │ │ │ │ └── ClientLendingOrderRecordsRequest.java │ │ │ │ └── insLending │ │ │ │ │ ├── InstitutionLoanOrdersRequest.java │ │ │ │ │ ├── InstitutionRepayOrdersRequest.java │ │ │ │ │ └── UpdateInstitutionLoadUidRequest.java │ │ │ ├── loan │ │ │ │ ├── Direction.java │ │ │ │ ├── LoanTerm.java │ │ │ │ ├── LoanTermType.java │ │ │ │ ├── VipLevel.java │ │ │ │ └── request │ │ │ │ │ ├── CryptoLoanAdjustLtvRequest.java │ │ │ │ │ ├── CryptoLoanBorrowRequest.java │ │ │ │ │ ├── CryptoLoanDataRequest.java │ │ │ │ │ └── CryptoLoanRepayRequest.java │ │ │ ├── market │ │ │ │ ├── DataRecordingPeriod.java │ │ │ │ ├── InstrumentStatus.java │ │ │ │ ├── IntervalTime.java │ │ │ │ ├── MarketInterval.java │ │ │ │ ├── MarketStatus.java │ │ │ │ ├── OptionType.java │ │ │ │ ├── request │ │ │ │ │ └── MarketDataRequest.java │ │ │ │ └── response │ │ │ │ │ ├── fundingRate │ │ │ │ │ ├── FundingRateEntry.java │ │ │ │ │ └── FundingRateResult.java │ │ │ │ │ ├── historicalVolatility │ │ │ │ │ ├── HistoricalVolatilityEntry.java │ │ │ │ │ └── HistoricalVolatilityResult.java │ │ │ │ │ ├── instrumentInfo │ │ │ │ │ ├── InstrumentEntry.java │ │ │ │ │ ├── InstrumentInfoResult.java │ │ │ │ │ ├── LeverageFilter.java │ │ │ │ │ ├── LotSizeFilter.java │ │ │ │ │ └── PriceFilter.java │ │ │ │ │ ├── kline │ │ │ │ │ ├── MarketKlineEntry.java │ │ │ │ │ └── MarketKlineResult.java │ │ │ │ │ ├── openInterests │ │ │ │ │ ├── OpenInterestEntry.java │ │ │ │ │ └── OpenInterestResult.java │ │ │ │ │ ├── orderbook │ │ │ │ │ ├── OrderBookAskEntry.java │ │ │ │ │ ├── OrderbookBidEntry.java │ │ │ │ │ └── OrderbookResult.java │ │ │ │ │ ├── recentTrade │ │ │ │ │ ├── RecentTradeEntry.java │ │ │ │ │ └── RecentTradeResult.java │ │ │ │ │ ├── serverTime │ │ │ │ │ └── ServerTimeResult.java │ │ │ │ │ └── tickers │ │ │ │ │ ├── TickerEntry.java │ │ │ │ │ └── TickersResult.java │ │ │ ├── position │ │ │ │ ├── AutoAddMargin.java │ │ │ │ ├── ExecType.java │ │ │ │ ├── MarginMode.java │ │ │ │ ├── MovePositionStatus.java │ │ │ │ ├── PositionMode.java │ │ │ │ ├── TpslMode.java │ │ │ │ └── request │ │ │ │ │ ├── BatchMovePositionRequest.java │ │ │ │ │ ├── ConfirmNewRiskLimitRequest.java │ │ │ │ │ ├── ModifyMarginRequest.java │ │ │ │ │ ├── MovePositionDetailsRequest.java │ │ │ │ │ ├── PositionDataRequest.java │ │ │ │ │ ├── SetAutoAddMarginRequest.java │ │ │ │ │ ├── SetLeverageRequest.java │ │ │ │ │ ├── SetRiskLimitRequest.java │ │ │ │ │ ├── SetTpSlModeRequest.java │ │ │ │ │ ├── SwitchMarginRequest.java │ │ │ │ │ ├── SwitchPositionModeRequest.java │ │ │ │ │ └── TradingStopRequest.java │ │ │ ├── preupgrade │ │ │ │ ├── PreUpgradeDataRequest.java │ │ │ │ └── TransactionType.java │ │ │ ├── spot │ │ │ │ ├── BorrowStatus.java │ │ │ │ ├── CompleteRepayment.java │ │ │ │ ├── SpotMarginDataRequest.java │ │ │ │ ├── SpotMarginMode.java │ │ │ │ ├── SwitchStatus.java │ │ │ │ ├── VipLevel.java │ │ │ │ ├── leverageToken │ │ │ │ │ ├── SpotLeverageOrdersRecordRequest.java │ │ │ │ │ └── SpotLeverageTokenRequest.java │ │ │ │ └── marginTrade │ │ │ │ │ ├── SpotMarginTradeBorrowOrdersRequest.java │ │ │ │ │ ├── SpotMarginTradeBorrowRequest.java │ │ │ │ │ ├── SpotMarginTradeRePayRequest.java │ │ │ │ │ ├── SpotMarginTradeRepayOrdersRequest.java │ │ │ │ │ └── VIPMarginDataRequest.java │ │ │ ├── trade │ │ │ │ ├── CancelType.java │ │ │ │ ├── OrderFilter.java │ │ │ │ ├── OrderStatus.java │ │ │ │ ├── PositionIdx.java │ │ │ │ ├── RejectReason.java │ │ │ │ ├── Side.java │ │ │ │ ├── SmpType.java │ │ │ │ ├── StopOrderType.java │ │ │ │ ├── TimeInForce.java │ │ │ │ ├── request │ │ │ │ │ ├── AmendBatchOrderRequest.java │ │ │ │ │ ├── AmendOrderRequest.java │ │ │ │ │ ├── BatchOrderRequest.java │ │ │ │ │ ├── CancelAllOrdersRequest.java │ │ │ │ │ ├── CancelBatchOrderRequest.java │ │ │ │ │ ├── CancelOrderRequest.java │ │ │ │ │ ├── PlaceBatchOrderRequest.java │ │ │ │ │ ├── PlaceOrderRequest.java │ │ │ │ │ ├── SetDcpRequest.java │ │ │ │ │ └── TradeOrderRequest.java │ │ │ │ └── response │ │ │ │ │ ├── OrderEntry.java │ │ │ │ │ ├── OrderResponse.java │ │ │ │ │ └── OrderResult.java │ │ │ ├── user │ │ │ │ ├── FrozenStatus.java │ │ │ │ ├── IsUta.java │ │ │ │ ├── MasterUserPermissions.java │ │ │ │ ├── MemberType.java │ │ │ │ ├── ReadOnlyStatus.java │ │ │ │ ├── SubUserPermissions.java │ │ │ │ ├── SwitchOption.java │ │ │ │ ├── UserDataRequest.java │ │ │ │ ├── UserPermissionsMap.java │ │ │ │ └── request │ │ │ │ │ ├── CreateSubApiKeyRequest.java │ │ │ │ │ ├── FreezeSubUIDRquest.java │ │ │ │ │ ├── ModifyApiKeyRequest.java │ │ │ │ │ └── UserSubMemberRequest.java │ │ │ └── websocket_message │ │ │ │ ├── private_channel │ │ │ │ ├── CoinData.java │ │ │ │ ├── ExecutionData.java │ │ │ │ ├── GreekData.java │ │ │ │ ├── OrderData.java │ │ │ │ ├── PositionData.java │ │ │ │ ├── WalletData.java │ │ │ │ ├── WebSocketExecutionMessage.java │ │ │ │ ├── WebSocketGreekMessage.java │ │ │ │ ├── WebSocketOrderMessage.java │ │ │ │ ├── WebSocketPositionMessage.java │ │ │ │ └── WebSocketWalletMessage.java │ │ │ │ └── public_channel │ │ │ │ ├── KlineData.java │ │ │ │ ├── LiquidationData.java │ │ │ │ ├── LtKlineData.java │ │ │ │ ├── LtTicketData.java │ │ │ │ ├── NavData.java │ │ │ │ ├── PublicOrderBookData.java │ │ │ │ ├── PublicTickerData.java │ │ │ │ ├── TradeData.java │ │ │ │ ├── WebSocketKlineMessage.java │ │ │ │ ├── WebSocketLiquidationMessage.java │ │ │ │ ├── WebSocketLtKlineMessage.java │ │ │ │ ├── WebSocketLtTicketMessage.java │ │ │ │ ├── WebSocketTickerMessage.java │ │ │ │ ├── WebSocketTradeMessage.java │ │ │ │ ├── WebsocketLtNavMessage.java │ │ │ │ └── WebsocketOrderbookMessage.java │ │ │ ├── exception │ │ │ ├── BybitApiError.java │ │ │ ├── BybitApiException.java │ │ │ └── UnsupportedEventException.java │ │ │ ├── impl │ │ │ ├── BybitApBrokerRestClientImpl.java │ │ │ ├── BybitApiAccountRestClientImpl.java │ │ │ ├── BybitApiAssetRestClientImpl.java │ │ │ ├── BybitApiAsyncAccountRestClientImpl.java │ │ │ ├── BybitApiAsyncAssetRestClientImpl.java │ │ │ ├── BybitApiAsyncBrokerRestClientImpl.java │ │ │ ├── BybitApiAsyncLendingRestClientImpl.java │ │ │ ├── BybitApiAsyncLoanRestClientImpl.java │ │ │ ├── BybitApiAsyncPositionRestClientImpl.java │ │ │ ├── BybitApiAsyncSpotMarginRestClientImpl.java │ │ │ ├── BybitApiAsyncUserRestClientImpl.java │ │ │ ├── BybitApiCallbackAdapter.java │ │ │ ├── BybitApiLendingRestClientImpl.java │ │ │ ├── BybitApiLoanRestClientImpl.java │ │ │ ├── BybitApiMarketAsyncRestClientImpl.java │ │ │ ├── BybitApiMarketRestClientImpl.java │ │ │ ├── BybitApiPositionRestClientImpl.java │ │ │ ├── BybitApiSpotMarginRestClientImpl.java │ │ │ ├── BybitApiTradeAsyncRestClientImpl.java │ │ │ ├── BybitApiTradeRestClientImpl.java │ │ │ └── BybitApiUserRestClientImpl.java │ │ │ ├── log │ │ │ ├── LogOption.java │ │ │ └── Slf4jLoggingInterceptor.java │ │ │ ├── restApi │ │ │ ├── BybitApiAccountRestClient.java │ │ │ ├── BybitApiAssetRestClient.java │ │ │ ├── BybitApiAsyncAccountRestClient.java │ │ │ ├── BybitApiAsyncAssetRestClient.java │ │ │ ├── BybitApiAsyncBrokerRestClient.java │ │ │ ├── BybitApiAsyncLendingRestClient.java │ │ │ ├── BybitApiAsyncLoanRestClient.java │ │ │ ├── BybitApiAsyncMarketDataRestClient.java │ │ │ ├── BybitApiAsyncPositionRestClient.java │ │ │ ├── BybitApiAsyncSpotMarginRestClient.java │ │ │ ├── BybitApiAsyncTradeRestClient.java │ │ │ ├── BybitApiAsyncUserRestClient.java │ │ │ ├── BybitApiBrokerRestClient.java │ │ │ ├── BybitApiCallback.java │ │ │ ├── BybitApiLendingRestClient.java │ │ │ ├── BybitApiLoanRestClient.java │ │ │ ├── BybitApiMarketRestClient.java │ │ │ ├── BybitApiPositionRestClient.java │ │ │ ├── BybitApiService.java │ │ │ ├── BybitApiSpotMarginRestClient.java │ │ │ ├── BybitApiTradeRestClient.java │ │ │ └── BybitApiUserRestClient.java │ │ │ ├── security │ │ │ ├── AuthenticationInterceptor.java │ │ │ ├── HmacSHA256Signer.java │ │ │ └── SignatureGenerator.java │ │ │ ├── service │ │ │ ├── BybitApiClientFactory.java │ │ │ ├── BybitApiServiceGenerator.java │ │ │ ├── BybitJsonConverter.java │ │ │ ├── CategoryTypeSerializer.java │ │ │ ├── PositionIdxSerializer.java │ │ │ ├── SideSerializer.java │ │ │ ├── SmpTypeSerializer.java │ │ │ ├── StopOrderTypeSerializer.java │ │ │ ├── TimeInForceSerializer.java │ │ │ ├── TradeOrderTypeSerializer.java │ │ │ └── TriggerBySerializer.java │ │ │ ├── util │ │ │ ├── JSONParser.java │ │ │ ├── ParameterChecker.java │ │ │ ├── RequestBuilder.java │ │ │ ├── RequestType.java │ │ │ └── UrlBuilder.java │ │ │ └── websocket │ │ │ ├── api │ │ │ ├── WebSocketApiAuth.java │ │ │ ├── WebSocketApiModule.java │ │ │ └── WebSocketApiTrade.java │ │ │ ├── callback │ │ │ ├── WebSocketApiRequestHandler.java │ │ │ ├── WebSocketClosedCallback.java │ │ │ ├── WebSocketClosingCallback.java │ │ │ ├── WebSocketFailureCallback.java │ │ │ ├── WebSocketMessageCallback.java │ │ │ └── WebSocketOpenCallback.java │ │ │ ├── enums │ │ │ └── Category.java │ │ │ ├── httpclient │ │ │ ├── WebSocketApiClient.java │ │ │ ├── WebSocketApiHttpClientSingleton.java │ │ │ ├── WebSocketStreamHttpClientSingleton.java │ │ │ └── WebsocketStreamClient.java │ │ │ └── impl │ │ │ ├── WebSocketApiClientImpl.java │ │ │ ├── WebSocketApiModuleFactory.java │ │ │ ├── WebSocketConnection.java │ │ │ └── WebsocketStreamClientImpl.java │ └── resources │ │ └── logback.xml └── test │ └── java │ └── com │ └── bybit │ └── api │ ├── domain │ ├── account │ │ ├── AccountBalanceTest.java │ │ ├── CollateralCoinTest.java │ │ ├── SetMarginModeTest.java │ │ ├── SpotHedgeTest.java │ │ └── TransactionLogTest.java │ ├── asset │ │ ├── AccountTransferTest.java │ │ ├── AssetWithdrawTest.java │ │ ├── BybitApiAssetRestClientTest.java │ │ ├── CoinBalanceTest.java │ │ └── ConvertCoinTest.java │ ├── loan │ │ └── TestLoanApi.java │ ├── market │ │ ├── FundingRateResultDeserializerTest.java │ │ ├── InstrumentInfoResultDeserializerTest.java │ │ ├── MarketKlineResultDeserializerTest.java │ │ ├── OpenInterestResultDeserializerTest.java │ │ ├── OrderbookResultDeserializerTest.java │ │ ├── RecentTradeResultDeserializerTest.java │ │ ├── ServerTimeResultDeserializerTest.java │ │ ├── TickerInfoIndexPriceTest.java │ │ └── TickersResultDeserializerTest.java │ ├── position │ │ ├── MovePositionTest.java │ │ ├── PositionListCursotTest.java │ │ └── SwitchPositionModeTest.java │ ├── spot_margin │ │ └── SpotMarginTradeTest.java │ ├── trade │ │ ├── OpenOrderTest.java │ │ └── OrderHistoryTest.java │ └── user │ │ ├── UserAPIKeyTest.java │ │ └── UserCreatedTest.java │ ├── examples │ ├── Websocket │ │ ├── api │ │ │ ├── WsStreamAPITrade.java │ │ │ ├── WsStreamWithWsApiTrade.java │ │ │ └── ws_trade_api_demo.java │ │ └── stream │ │ │ ├── WebsockeCloseStreamlExamples.java │ │ │ ├── WebsocketDebuggerExample.java │ │ │ ├── WebsocketPrivateChannelExamples.java │ │ │ └── WebsocketPublicChannelExamples.java │ └── http │ │ ├── async │ │ ├── AccountAsyncExample.java │ │ ├── AnnouncementEndpointsExampleAsync.java │ │ ├── AssetAsyncExample.java │ │ ├── BatchOrderAsyncExampleAsync.java │ │ ├── BrokerAsyncExample.java │ │ ├── CryptoLoanAsyncExample.java │ │ ├── InstituionAsyncExample.java │ │ ├── MarketDataEndpointsExampleAsync.java │ │ ├── PositionDataAsyncExample.java │ │ ├── PreUpgradeAsyncExample.java │ │ ├── TradeAsyncExample.java │ │ ├── UTASpotMarginAsyncExample.java │ │ └── UserAsyncExample.java │ │ └── sync │ │ ├── AccountExample.java │ │ ├── AnnounceExample.java │ │ ├── AssetExample.java │ │ ├── BatchOrdersExample.java │ │ ├── BrokerExample.java │ │ ├── C2CExample.java │ │ ├── InstituionExample.java │ │ ├── MarketDataEndpointsExample.java │ │ ├── NormalSpotMarginExample.java │ │ ├── PositionDataExample.java │ │ ├── PreUpgradeExample.java │ │ ├── SpotLeverageExample.java │ │ ├── TradeExample.java │ │ ├── UTASpotMarginExample.java │ │ └── UserExample.java │ ├── log │ └── Slf4jLoggingTest.java │ └── websocket │ └── stream │ ├── KlineChannelMessageHandler.java │ ├── LiquidationChannelMessageHandler.java │ ├── OrderBookChannelMessageHandler.java │ ├── OrderChannelMessageHandler.java │ ├── PublicChannelTest.java │ ├── TickerChannelMessageHandler.java │ └── TradeChannelMessageHandler.java └── tokens └── StoredCredential /.github/workflows/maven-publish.yml: -------------------------------------------------------------------------------- 1 | # This workflow will build a package using Maven and then publish it to GitHub packages when a release is created 2 | # For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#apache-maven-with-a-settings-path 3 | 4 | name: Maven Package 5 | 6 | on: 7 | release: 8 | types: [created] 9 | 10 | jobs: 11 | build: 12 | 13 | runs-on: ubuntu-latest 14 | permissions: 15 | contents: read 16 | packages: write 17 | 18 | steps: 19 | - uses: actions/checkout@v3 20 | - name: Set up JDK 11 21 | uses: actions/setup-java@v3 22 | with: 23 | java-version: '11' 24 | distribution: 'temurin' 25 | server-id: github # Value of the distributionManagement/repository/id field of the pom.xml 26 | settings-path: ${{ github.workspace }} # location for the settings.xml file 27 | 28 | - name: Build with Maven 29 | run: mvn -B package --file pom.xml 30 | 31 | - name: Publish to GitHub Packages Apache Maven 32 | run: mvn deploy -s $GITHUB_WORKSPACE/settings.xml 33 | env: 34 | GITHUB_TOKEN: ${{ github.token }} 35 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | !**/src/main/**/target/ 4 | !**/src/test/**/target/ 5 | 6 | ### IntelliJ IDEA ### 7 | .idea/modules.xml 8 | .idea/jarRepositories.xml 9 | .idea/compiler.xml 10 | .idea/libraries/ 11 | *.iws 12 | *.iml 13 | *.ipr 14 | 15 | ### Eclipse ### 16 | .apt_generated 17 | .classpath 18 | .factorypath 19 | .project 20 | .settings 21 | .springBeans 22 | .sts4-cache 23 | 24 | ### NetBeans ### 25 | /nbproject/private/ 26 | /nbbuild/ 27 | /dist/ 28 | /nbdist/ 29 | /.nb-gradle/ 30 | build/ 31 | !**/src/main/**/build/ 32 | !**/src/test/**/build/ 33 | 34 | ### VS Code ### 35 | .vscode/ 36 | 37 | ### Mac OS ### 38 | .DS_Store -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /.idea/aws.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 23 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 13 | 14 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) [year] [fullname] 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/constant/Helper.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.constant; 2 | 3 | import java.util.HashMap; 4 | import java.util.List; 5 | import java.time.Instant; 6 | import java.util.Map; 7 | import java.util.UUID; 8 | 9 | /** 10 | * Utility class 11 | */ 12 | public final class Helper { 13 | 14 | public static long generateTimestamp() { 15 | return Instant.now().toEpochMilli(); 16 | } 17 | 18 | private Helper() { 19 | 20 | } 21 | 22 | public static Map convertQueryToMap(String query) { 23 | Map result = new HashMap<>(); 24 | if (query == null || query.isEmpty()) { 25 | return result; 26 | } 27 | 28 | for (String param : query.split("&")) { 29 | String[] entry = param.split("="); 30 | if (entry.length > 1) { 31 | result.put(entry[0], entry[1]); 32 | } 33 | } 34 | 35 | return result; 36 | } 37 | 38 | public static String generateTransferID() 39 | { 40 | UUID uuid = UUID.randomUUID(); 41 | return uuid.toString(); 42 | } 43 | 44 | public static String listToString(List items) { 45 | return String.join(",", items); 46 | } 47 | } -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/CategoryType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain; 2 | 3 | import com.fasterxml.jackson.annotation.JsonCreator; 4 | import com.fasterxml.jackson.annotation.JsonValue; 5 | import lombok.Getter; 6 | 7 | /** 8 | * Category type. Spot,linear, inverse 9 | */ 10 | @Getter 11 | public enum CategoryType { 12 | SPOT("spot"), 13 | LINEAR("linear"), 14 | INVERSE("inverse"), 15 | OPTION("option"); 16 | private final String categoryTypeId; 17 | 18 | CategoryType(String categoryTypeId) { 19 | this.categoryTypeId = categoryTypeId; 20 | } 21 | /* @JsonValue 22 | public String getCategoryTypeId() { 23 | return categoryTypeId; 24 | } 25 | 26 | @JsonCreator 27 | public static CategoryType forValue(String value) { 28 | for (CategoryType categoryType : values()) { 29 | if (categoryType.getCategoryTypeId().equalsIgnoreCase(value)) { 30 | return categoryType; 31 | } 32 | } 33 | throw new IllegalArgumentException("Unknown category type: " + value); 34 | }*/ 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/GenericResponse.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | @Getter 9 | @Setter 10 | @ToString 11 | @JsonIgnoreProperties(ignoreUnknown = true) 12 | public class GenericResponse { 13 | @JsonProperty("retCode") 14 | private int retCode; 15 | 16 | @JsonProperty("retMsg") 17 | private String retMsg; 18 | 19 | @JsonProperty("result") 20 | private T result; 21 | 22 | @JsonProperty("retExtInfo") 23 | private Object retExtInfo; 24 | 25 | @JsonProperty("time") 26 | private long time; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/TradeOrderType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum TradeOrderType { 7 | MARKET("Market"), 8 | LIMIT("Limit"), 9 | UNKNOWN("UNKNOWN"); // Used in some responses, mainly when execType is Funding 10 | 11 | private final String oType; 12 | 13 | TradeOrderType(String oType) { 14 | this.oType = oType; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/TriggerBy.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum TriggerBy { 7 | LAST_PRICE("LastPrice"), 8 | INDEX_PRICE("IndexPrice"), 9 | MARK_PRICE("MarkPrice"); 10 | 11 | private final String trigger; 12 | 13 | TriggerBy(String trigger) { 14 | this.trigger = trigger; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/WithdrawBeneficiaryMap.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain; 2 | 3 | import com.fasterxml.jackson.annotation.JsonAnyGetter; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | import java.util.Map; 10 | 11 | @Getter 12 | @Setter 13 | @ToString 14 | @Builder 15 | public class WithdrawBeneficiaryMap { 16 | private final Map beneficiaryMap; 17 | 18 | public WithdrawBeneficiaryMap(Map beneficiaryMap) { 19 | this.beneficiaryMap = beneficiaryMap; 20 | } 21 | 22 | @JsonAnyGetter // This annotation allows the map's entries to be serialized as properties. 23 | public Map getBeneficiaryMap() { 24 | return beneficiaryMap; 25 | } 26 | } -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/account/AccountType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.account; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum AccountType { 7 | CONTRACT("CONTRACT"), 8 | SPOT("SPOT"), 9 | INVESTMENT("INVESTMENT"), 10 | OPTION("OPTION"), 11 | UNIFIED("UNIFIED"), 12 | FUND("FUND"), 13 | 14 | // Convert 15 | CONVERT_UTA("eb_convert_uta"), 16 | CONVERT_SPOT("eb_convert_spot"), 17 | CONVERT_contract("eb_convert_contract"), 18 | CONVERT_FUNDING("eb_convert_funding"); 19 | 20 | private final String accountTypeValue; 21 | 22 | AccountType(String accountTypeValue) { 23 | this.accountTypeValue = accountTypeValue; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/account/CollateralSwitch.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.account; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum CollateralSwitch { 7 | ON("ON"), 8 | OFF("OFF"); 9 | 10 | private final String collateralSwitchMode; 11 | 12 | CollateralSwitch(String collateralSwitchMode) { 13 | this.collateralSwitchMode = collateralSwitchMode; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/account/SpotHedgingMode.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.account; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum SpotHedgingMode { 7 | ON("ON"), 8 | OFF("OFF"); 9 | 10 | private final String spotHedgingMode; 11 | 12 | SpotHedgingMode(String spotHedgingMode) { 13 | this.spotHedgingMode = spotHedgingMode; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/account/request/AccountDataRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.account.request; 2 | 3 | import com.bybit.api.client.domain.CategoryType; 4 | import com.bybit.api.client.domain.account.AccountType; 5 | import com.bybit.api.client.domain.account.CollateralSwitch; 6 | import com.bybit.api.client.domain.account.SpotHedgingMode; 7 | import com.bybit.api.client.domain.position.MarginMode; 8 | import com.bybit.api.client.domain.preupgrade.TransactionType; 9 | import com.bybit.api.client.domain.user.IsUta; 10 | import com.fasterxml.jackson.annotation.JsonInclude; 11 | import lombok.Builder; 12 | import lombok.Getter; 13 | import lombok.Setter; 14 | import lombok.ToString; 15 | 16 | @Getter 17 | @Setter 18 | @ToString 19 | @Builder 20 | @JsonInclude(JsonInclude.Include.NON_NULL) 21 | public class AccountDataRequest { 22 | private AccountType accountType; 23 | private CategoryType category; 24 | private String currency; 25 | private String baseCoin; 26 | private TransactionType transactionType; 27 | private Long startTime; 28 | private Long endTime; 29 | private Integer limit; 30 | private String cursor; 31 | private String coin; 32 | private CollateralSwitch collateralSwitch; 33 | private String window; 34 | private String frozenPeriod; 35 | private String qtyLimit; 36 | private String deltaLimit; 37 | private String coins; 38 | private MarginMode setMarginMode; 39 | private String symbol; 40 | private SpotHedgingMode setHedgingMode; 41 | private IsUta isUta; 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/account/request/BatchSetCollateralCoinRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.account.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | import java.util.List; 10 | 11 | @Getter 12 | @Setter 13 | @ToString 14 | @Builder 15 | @JsonInclude(JsonInclude.Include.NON_NULL) 16 | public class BatchSetCollateralCoinRequest { 17 | private List request; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/account/request/ResetMMPRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.account.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class ResetMMPRequest { 15 | private String baseCoin; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/account/request/SetCollateralCoinRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.account.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class SetCollateralCoinRequest { 15 | private String coin; 16 | private String collateralSwitch; 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/account/request/SetMMPRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.account.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.ToString; 7 | 8 | @Getter 9 | @Setter 10 | @ToString 11 | @Builder 12 | public class SetMMPRequest { 13 | private String baseCoin; 14 | private String window; 15 | private String frozenPeriod; 16 | private String qtyLimit; 17 | private String deltaLimit; 18 | } 19 | 20 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/account/request/SetMarginModeRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.account.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class SetMarginModeRequest { 15 | private String setMarginMode; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/account/request/SetSpotHedgingRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.account.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class SetSpotHedgingRequest { 9 | private String setHedgingMode; 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/announcement/AnnouncementTag.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.announcement; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum AnnouncementTag { 7 | SPOT("Spot"), 8 | DERIVATIVES("Derivatives"), 9 | SPOT_LISTINGS("Spot Listings"), 10 | BTC("BTC"), 11 | ETH("ETH"), 12 | TRADING_BOTS("Trading Bots"), 13 | USDC("USDC"), 14 | LEVERAGED_TOKENS("Leveraged Tokens"), 15 | USDT("USDT"), 16 | MARGIN_TRADING("Margin Trading"), 17 | PARTNERSHIPS("Partnerships"), 18 | LAUNCHPAD("Launchpad"), 19 | UPGRADES("Upgrades"), 20 | BYVOTES("ByVotes"), 21 | DELISTINGS("Delistings"), 22 | VIP("VIP"), 23 | FUTURES("Futures"), 24 | INSTITUTIONS("Institutions"), 25 | OPTIONS("Options"), 26 | WEB3("WEB3"), 27 | COPY_TRADING("Copy Trading"), 28 | EARN("Earn"), 29 | BYBIT_SAVINGS("Bybit Savings"), 30 | DUAL_ASSET("Dual Asset"), 31 | LIQUIDITY_MINING("Liquidity Mining"), 32 | SHARK_FIN("Shark Fin"), 33 | LAUNCHPOOL("Launchpool"), 34 | NFT_GRAB_PIC("NFT GrabPic"), 35 | BUY_CRYPTO("Buy Crypto"), 36 | P2P_TRADING("P2P Trading", "P2P"), 37 | FIAT_DEPOSIT("Fiat Deposit"), 38 | CRYPTO_DEPOSIT("Crypto Deposit"); 39 | 40 | private final String englishTranslation; 41 | private final String[] otherTranslations; 42 | 43 | AnnouncementTag(String englishTranslation, String... otherTranslations) { 44 | this.englishTranslation = englishTranslation; 45 | this.otherTranslations = otherTranslations; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/announcement/AnnouncementType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.announcement; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum AnnouncementType { 7 | NEW_CRYPTO("new_crypto"), 8 | LATEST_BYBIT_NEWS("latest_bybit_news"), 9 | DELISTINGS("delistings"), 10 | LATEST_ACTIVITIES("latest_activities"), 11 | PRODUCT_UPDATES("product_updates"), 12 | MAINTENANCE_UPDATES("maintenance_updates"), 13 | NEW_FIAT_LISTINGS("new_fiat_listings"), 14 | OTHER("other"); 15 | 16 | private final String announcementType; 17 | 18 | AnnouncementType(String announcementType) { 19 | this.announcementType = announcementType; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/announcement/LanguageSymbol.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.announcement; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum LanguageSymbol { 7 | DE_DE("de-DE"), 8 | EN_US("en-US"), 9 | ES_AR("es-AR"), 10 | ES_ES("es-ES"), 11 | ES_MX("es-MX"), 12 | FR_FR("fr-FR"), 13 | KK_KZ("kk-KZ"), 14 | ID_ID("id-ID"), 15 | UK_UA("uk-UA"), 16 | JA_JP("ja-JP"), 17 | RU_RU("ru-RU"), 18 | TH_TH("th-TH"), 19 | PT_BR("pt-BR"), 20 | TR_TR("tr-TR"), 21 | VI_VN("vi-VN"), 22 | ZH_TW("zh-TW"), 23 | AR_SA("ar-SA"), 24 | HI_IN("hi-IN"), 25 | FIL_PH("fil-PH"); 26 | 27 | private final String languageSymbol; 28 | 29 | LanguageSymbol(String languageSymbol) { 30 | this.languageSymbol = languageSymbol; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/announcement/request/AnnouncementInfoRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.announcement.request; 2 | 3 | import com.bybit.api.client.domain.announcement.AnnouncementTag; 4 | import com.bybit.api.client.domain.announcement.AnnouncementType; 5 | import com.bybit.api.client.domain.announcement.LanguageSymbol; 6 | import com.fasterxml.jackson.annotation.JsonInclude; 7 | import lombok.Builder; 8 | import lombok.Getter; 9 | import lombok.Setter; 10 | import lombok.ToString; 11 | 12 | @Getter 13 | @Setter 14 | @ToString 15 | @Builder 16 | @JsonInclude(JsonInclude.Include.NON_NULL) 17 | public class AnnouncementInfoRequest { 18 | private LanguageSymbol locale; 19 | private AnnouncementType type; 20 | private AnnouncementTag tag; 21 | @Builder.Default 22 | private int page = 1; 23 | @Builder.Default 24 | private int limit = 20; 25 | } 26 | 27 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/asset/FeeType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.asset; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum FeeType { 7 | MANUAL_CALCULATION(0), 8 | AUTO_DEDUCT(1); 9 | 10 | private final int value; 11 | FeeType(int value) { 12 | this.value = value; 13 | } 14 | } 15 | 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/asset/TransferStatus.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.asset; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum TransferStatus { 7 | SUCCESS("SUCCESS"), 8 | PENDING("PENDING"), 9 | FAILED("FAILED"); 10 | 11 | private final String status; 12 | 13 | TransferStatus(String status) { 14 | this.status = status; 15 | } 16 | } 17 | 18 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/asset/WithBonus.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.asset; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum WithBonus { 7 | NOT_QUERY(0), 8 | QUERY(1); 9 | 10 | private final int value; 11 | 12 | WithBonus(int value) { 13 | this.value = value; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/asset/WithTransferSafeAmount.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.asset; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum WithTransferSafeAmount { 7 | FALSE(0), 8 | TRUE(1); 9 | 10 | private final int value; 11 | 12 | WithTransferSafeAmount(int value) { 13 | this.value = value; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/asset/WithdrawType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.asset; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum WithdrawType { 7 | ON_CHAIN(0), 8 | OFF_CHAIN(1), 9 | ALL(2); 10 | 11 | private final int value; 12 | 13 | WithdrawType(int value) { 14 | this.value = value; 15 | } 16 | } 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/asset/request/AssetCancelWithdrawRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.asset.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class AssetCancelWithdrawRequest { 15 | private String withdrawId; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/asset/request/AssetDepositRequest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Request Parameters 3 | * Parameter Required Type Comments 4 | * coin true string Coin 5 | * chainType true string Chain, e.g.,ETH 6 | * subMemberId true string Sub user ID 7 | * Response Parameters 8 | * Parameter Type Comments 9 | * coin string Coin 10 | * chains array Object 11 | * > chainType string Chain type 12 | * > addressDeposit string The address for deposit 13 | * > tagDeposit string Tag of deposit 14 | * > chain string Chain 15 | * > batchReleaseLimit string The deposit limit for this coin in this chain. "-1" means no limit 16 | */ 17 | package com.bybit.api.client.domain.asset.request; 18 | 19 | import com.fasterxml.jackson.annotation.JsonInclude; 20 | import lombok.Builder; 21 | import lombok.Getter; 22 | import lombok.ToString; 23 | 24 | @Getter 25 | @ToString 26 | @Builder 27 | @JsonInclude(JsonInclude.Include.NON_NULL) 28 | public class AssetDepositRequest { 29 | private String coin; 30 | private String chainType; 31 | private String subMemberId; 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/asset/request/AssetInternalTransferRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.asset.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class AssetInternalTransferRequest { 15 | private String transferId; 16 | private String coin; 17 | private String amount; 18 | private String fromAccountType; 19 | private String toAccountType; 20 | } 21 | 22 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/asset/request/AssetQuoteRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.asset.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class AssetQuoteRequest { 15 | private String fromCoin; 16 | private String toCoin; 17 | private String fromCoinType; 18 | private String toCoinType; 19 | private String requestCoin; 20 | private String requestAmount; 21 | private String accountType; 22 | private String requestId; 23 | private String paramType; // api broker 24 | private String paramValue; // api broker 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/asset/request/AssetUniversalTransferRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.asset.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class AssetUniversalTransferRequest { 15 | private String transferId; 16 | private String coin; 17 | private String amount; 18 | private Integer fromMemberId; 19 | private Integer toMemberId; 20 | private String fromAccountType; 21 | private String toAccountType; 22 | } 23 | 24 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/asset/request/ConfirmQuoteRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.asset.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class ConfirmQuoteRequest { 15 | private String quoteTxId; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/asset/request/SetAssetDepositAccountRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.asset.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Builder 10 | @Getter 11 | @Setter 12 | @ToString 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class SetAssetDepositAccountRequest { 15 | private String accountType; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/broker/BusinessType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.broker; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum BusinessType { 7 | SPOT("SPOT"), 8 | DERIVATIVES("DERIVATIVES"), 9 | OPTIONS("OPTIONS"); 10 | 11 | private final String type; 12 | 13 | BusinessType(String type) { 14 | this.type = type; 15 | } 16 | 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/broker/WithUsedAmount.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.broker; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum WithUsedAmount { 7 | NOT_QUERY(false), 8 | QUERY(true); 9 | 10 | private final Boolean value; 11 | 12 | WithUsedAmount(Boolean value) { 13 | this.value = value; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/broker/request/BrokerDataRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.broker.request; 2 | 3 | import com.bybit.api.client.domain.broker.BusinessType; 4 | import com.bybit.api.client.domain.broker.WithUsedAmount; 5 | import com.fasterxml.jackson.annotation.JsonInclude; 6 | import lombok.Builder; 7 | import lombok.Getter; 8 | import lombok.Setter; 9 | import lombok.ToString; 10 | 11 | @Getter 12 | @Setter 13 | @ToString 14 | @Builder 15 | @JsonInclude(JsonInclude.Include.NON_NULL) 16 | public class BrokerDataRequest { 17 | private BusinessType bizType; 18 | private String subMemberId; 19 | private String coin; 20 | private Long startTime; 21 | private Long endTime; 22 | private Integer limit; 23 | private String cursor; 24 | private String id; // mandatory; voucher ID in query voucher spec 25 | private String accountId; // mandatory; 26 | private String awardId; // mandatory; voucher ID in issue voucher and query issued voucher 27 | private String specCode; // mandatory; 28 | private String amount; // mandatory; 29 | private String brokerId; // mandatory; 30 | private WithUsedAmount withUsedAmount; 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/broker/request/BrokerGetIssuedVoucherRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.broker.request; 2 | 3 | import com.bybit.api.client.domain.broker.WithUsedAmount; 4 | import com.fasterxml.jackson.annotation.JsonInclude; 5 | import lombok.Builder; 6 | import lombok.Getter; 7 | import lombok.Setter; 8 | import lombok.ToString; 9 | 10 | @Getter 11 | @Setter 12 | @ToString 13 | @Builder 14 | @JsonInclude(JsonInclude.Include.NON_NULL) 15 | public class BrokerGetIssuedVoucherRequest { 16 | private String accountId; 17 | private String awardId; 18 | private String specCode; 19 | private Boolean withUsedAmount; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/broker/request/BrokerIssueVoucherRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.broker.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class BrokerIssueVoucherRequest { 15 | private String accountId; 16 | private String awardId; 17 | private String specCode; 18 | private String amount; 19 | private String brokerId; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/broker/request/BrokerVoucherSpecRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.broker.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class BrokerVoucherSpecRequest { 15 | private String id; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/institution/LendingDataRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.institution; 2 | 3 | import com.bybit.api.client.domain.broker.BusinessType; 4 | import com.fasterxml.jackson.annotation.JsonInclude; 5 | import lombok.Builder; 6 | import lombok.Getter; 7 | import lombok.Setter; 8 | import lombok.ToString; 9 | 10 | @Getter 11 | @Setter 12 | @ToString 13 | @Builder 14 | @JsonInclude(JsonInclude.Include.NON_NULL) 15 | public class LendingDataRequest { 16 | private final String productId; 17 | private final String orderId; 18 | private final BusinessType bizType; 19 | private final Long startTime; 20 | private final Long endTime; 21 | private final Integer limit; 22 | private final String cursor; 23 | private final String coin; 24 | private final LendingOrderType lendingOrderType; 25 | private final String quantity; 26 | private final String serialNo; 27 | private final String uid; 28 | private final OperateType operate; 29 | } 30 | 31 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/institution/LendingOrderType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.institution; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum LendingOrderType { 7 | DEPOSIT("1"), 8 | REDEMPTION("2"), 9 | PAYMENT_PROCEED("3"); 10 | 11 | private final String type; 12 | 13 | LendingOrderType(String type) { 14 | this.type = type; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/institution/OperateType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.institution; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum OperateType { 7 | BIND("0"), 8 | UNBIND("1"); 9 | 10 | private final String operateType; 11 | OperateType(String operateType) { 12 | this.operateType = operateType; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/institution/clientLending/ClientLendingFundsRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.institution.clientLending; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.ToString; 7 | 8 | @Getter 9 | @Setter 10 | @ToString 11 | @Builder 12 | public class ClientLendingFundsRequest { 13 | private final String coin; 14 | private final String quantity; 15 | private final String serialNo; 16 | private final String orderId; 17 | } -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/institution/clientLending/ClientLendingOrderRecordsRequest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Request Parameters 3 | * Parameter Required Type Comments 4 | * coin false string Coin name 5 | * orderId false string Order ID 6 | * startTime false long The start timestamp (ms) 7 | * endTime false long The end timestamp (ms) 8 | * limit false integer Limit for data size per page. [1, 500]. Default: 50 9 | * orderType false string Order type. 1: deposit, 2: redemption, 3: Payment of proceeds 10 | * Response Parameters 11 | * Parameter Type Comments 12 | * list array Object 13 | * > coin string Coin name 14 | * > createdTime string Created timestamp (ms) 15 | * > orderId string Order ID 16 | * > quantity string quantity 17 | * > serialNo string Serial No 18 | * > status string Order status. 0: Initial, 1: Processing, 2: Success, 10: Failed 19 | * > updatedTime string Updated timestamp (ms) 20 | */ 21 | package com.bybit.api.client.domain.institution.clientLending; 22 | 23 | import lombok.Builder; 24 | import lombok.Getter; 25 | import lombok.Setter; 26 | import lombok.ToString; 27 | 28 | @Getter 29 | @Setter 30 | @ToString 31 | @Builder 32 | public class ClientLendingOrderRecordsRequest { 33 | private final String coin; 34 | private final String orderId; 35 | private final Long startTime; 36 | private final Long endTime; 37 | private final Integer limit; 38 | private final String orderType; 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/institution/insLending/InstitutionLoanOrdersRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.institution.insLending; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.ToString; 7 | 8 | @Getter 9 | @Setter 10 | @ToString 11 | @Builder 12 | public class InstitutionLoanOrdersRequest { 13 | private String orderId; 14 | private Long startTime; 15 | private Long endTime; 16 | private Integer limit; 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/institution/insLending/InstitutionRepayOrdersRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.institution.insLending; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.ToString; 7 | 8 | @Getter 9 | @Setter 10 | @ToString 11 | @Builder 12 | public class InstitutionRepayOrdersRequest { 13 | private Long startTime; 14 | private Long endTime; 15 | private Integer limit; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/institution/insLending/UpdateInstitutionLoadUidRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.institution.insLending; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class UpdateInstitutionLoadUidRequest { 9 | private String uid; 10 | private String operate; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/loan/Direction.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.loan; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum Direction { 7 | ADD("0"), 8 | REDUCE("1"); 9 | 10 | private final String directionValue; 11 | 12 | Direction(String directionValue) { 13 | this.directionValue = directionValue; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/loan/LoanTerm.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.loan; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum LoanTerm { 7 | FLEXIBLE(""), 8 | FIXED_7D("7"), 9 | FIXED_14D("14"), 10 | FIXED_30D("30"), 11 | FIXED_90D("90"), 12 | FIXED_180D("180"); 13 | 14 | private final String term; 15 | 16 | LoanTerm(String term) { 17 | this.term = term; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/loan/LoanTermType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.loan; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum LoanTermType { 7 | FLEXIBLE("2"), 8 | FIXED("1"); 9 | 10 | private final String termType; 11 | 12 | LoanTermType(String termType) { 13 | this.termType = termType; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/loan/VipLevel.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.loan; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum VipLevel { 7 | VIP_0("VIP0"), 8 | VIP_1("VIP1"), 9 | VIP_2("VIP2"), 10 | VIP_3("VIP3"), 11 | VIP_4("VIP4"), 12 | VIP_5("VIP5"), 13 | VIP_SUPREME("VIP99"), 14 | PRO_1("PRO1"), 15 | PRO_2("PRO2"), 16 | PRO_3("PRO3"), 17 | PRO_4("PRO4"), 18 | PRO_5("PRO5"), 19 | PRO_6("PRO6"); 20 | 21 | private final String level; 22 | 23 | VipLevel(String level) { 24 | this.level = level; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/loan/request/CryptoLoanAdjustLtvRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.loan.request; 2 | 3 | import com.bybit.api.client.domain.loan.Direction; 4 | import com.fasterxml.jackson.annotation.JsonInclude; 5 | import lombok.Builder; 6 | import lombok.Getter; 7 | import lombok.Setter; 8 | import lombok.ToString; 9 | 10 | @Getter 11 | @Setter 12 | @ToString 13 | @Builder 14 | @JsonInclude(JsonInclude.Include.NON_NULL) 15 | public class CryptoLoanAdjustLtvRequest { 16 | private String orderId; // mandatory 17 | private String amount; // mandatory 18 | private String direction; // mandatory; ADD: "0", REDUCE: "1" 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/loan/request/CryptoLoanBorrowRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.loan.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class CryptoLoanBorrowRequest { 15 | private String loanCurrency; // mandatory 16 | private String loanAmount; 17 | private String loanTerm; 18 | private String collateralCurrency; // mandatory 19 | private String collateralAmount; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/loan/request/CryptoLoanDataRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.loan.request; 2 | 3 | import com.bybit.api.client.domain.loan.Direction; 4 | import com.bybit.api.client.domain.loan.LoanTerm; 5 | import com.bybit.api.client.domain.loan.LoanTermType; 6 | import com.bybit.api.client.domain.loan.VipLevel; 7 | import com.fasterxml.jackson.annotation.JsonInclude; 8 | import lombok.Builder; 9 | import lombok.Getter; 10 | import lombok.Setter; 11 | import lombok.ToString; 12 | 13 | @Getter 14 | @Setter 15 | @ToString 16 | @Builder 17 | @JsonInclude(JsonInclude.Include.NON_NULL) 18 | public class CryptoLoanDataRequest { 19 | private String currency; 20 | private VipLevel vipLevel; 21 | private String loanCurrency; 22 | private String collateralCurrency; 23 | private String loanAmount; 24 | private String collateralAmount; 25 | private LoanTerm loanTerm; 26 | private String orderId; 27 | private String amount; // repay amount or adjust ltv amount 28 | private LoanTermType loanTermType; 29 | private String repayId; 30 | private String adjustId; 31 | private Direction direction; 32 | private String cursor; 33 | private String limit; 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/loan/request/CryptoLoanRepayRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.loan.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class CryptoLoanRepayRequest { 15 | private String orderId; // mandatory 16 | private String amount;// mandatory 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/DataRecordingPeriod.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum DataRecordingPeriod { 7 | FIVE_MINUTES("5min"), 8 | FIFTEEN_MINUTES("15min"), 9 | THIRTY_MINUTES("30min"), 10 | ONE_HOUR("1h"), 11 | FOUR_HOURS("4h"), 12 | FOUR_DAYS("4d"); 13 | 14 | private final String period; 15 | 16 | DataRecordingPeriod(String period) { 17 | this.period = period; 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/InstrumentStatus.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum InstrumentStatus { 7 | PRE_LAUNCH("PreLaunch"), 8 | TRADING("Trading"), 9 | SETTLING("Settling"), // Unique status for USDC Perpetual 8-hour settlement 10 | DELIVERING("Delivering"), 11 | CLOSED("Closed"); 12 | 13 | private final String status; 14 | 15 | InstrumentStatus(String status) { 16 | this.status = status; 17 | } 18 | 19 | public String getStatus() { 20 | return status; 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return status; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/IntervalTime.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum IntervalTime { 7 | FIVE_MINUTES("5min"), 8 | FIFTEEN_MINUTES("15min"), 9 | THIRTY_MINUTES("30min"), 10 | ONE_HOUR("1h"), 11 | FOUR_HOURS("4h"), 12 | ONE_DAY("1d"); 13 | 14 | private final String interval; 15 | 16 | IntervalTime(String interval) { 17 | this.interval = interval; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/MarketInterval.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Getter; 5 | 6 | /** 7 | * Kline/Candlestick intervals. 8 | */ 9 | @Getter 10 | @JsonIgnoreProperties(ignoreUnknown = true) 11 | public enum MarketInterval { 12 | ONE_MINUTE("1"), 13 | THREE_MINUTES("3"), 14 | FIVE_MINUTES("5"), 15 | FIFTEEN_MINUTES("15"), 16 | HALF_HOURLY("30"), 17 | HOURLY("60"), 18 | TWO_HOURLY("120"), 19 | FOUR_HOURLY("240"), 20 | SIX_HOURLY("360"), 21 | TWELVE_HOURLY("720"), 22 | DAILY("D"), 23 | WEEKLY("W"), 24 | MONTHLY("M"); 25 | 26 | private final String intervalId; 27 | 28 | MarketInterval(String intervalId) { 29 | this.intervalId = intervalId; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/MarketStatus.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum MarketStatus { 7 | PRE_LAUNCH("PreLaunch"), 8 | TRADING("Trading"), 9 | SETTLING("Settling"), 10 | DELIVERING("Delivering"), 11 | CLOSED("Closed"); 12 | 13 | private final String status; 14 | 15 | MarketStatus(String status) { 16 | this.status = status; 17 | } 18 | } 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/OptionType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum OptionType { 7 | CALL("Call"), 8 | PUT("Put"); 9 | 10 | private final String opType; 11 | 12 | OptionType(String opType) { 13 | this.opType = opType; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/request/MarketDataRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.request; 2 | 3 | import com.bybit.api.client.domain.CategoryType; 4 | import com.bybit.api.client.domain.announcement.AnnouncementTag; 5 | import com.bybit.api.client.domain.announcement.AnnouncementType; 6 | import com.bybit.api.client.domain.announcement.LanguageSymbol; 7 | import com.bybit.api.client.domain.market.*; 8 | import com.fasterxml.jackson.annotation.JsonInclude; 9 | import lombok.Builder; 10 | import lombok.Getter; 11 | import lombok.Setter; 12 | import lombok.ToString; 13 | 14 | @Getter 15 | @Setter 16 | @ToString 17 | @Builder 18 | @JsonInclude(JsonInclude.Include.NON_NULL) 19 | public class MarketDataRequest { 20 | private CategoryType category; // always required 21 | private String coin; 22 | private String symbol; 23 | private String baseCoin; 24 | private String expDate; 25 | private InstrumentStatus instrumentStatus; 26 | private MarketStatus marketStatus; 27 | private IntervalTime marketIntervalTime; 28 | private MarketInterval marketInterval; // open interest interval time 29 | private OptionType optionType; // option only 30 | private Integer optionPeriod; // option only 31 | private DataRecordingPeriod dataRecordingPeriod; 32 | private Long startTime; 33 | private Long endTime; 34 | private Long start; 35 | private Long end; 36 | private Integer limit; 37 | private String cursor; 38 | private LanguageSymbol locale; 39 | private AnnouncementType type; 40 | private AnnouncementTag tag; 41 | @Builder.Default 42 | private int page = 1; 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/fundingRate/FundingRateEntry.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.fundingRate; 2 | 3 | import com.bybit.api.client.constant.BybitApiConstants; 4 | import lombok.Getter; 5 | import org.apache.commons.lang3.builder.ToStringBuilder; 6 | 7 | @Getter 8 | public class FundingRateEntry { 9 | private String symbol; 10 | private String fundingRate; 11 | private String fundingRateTimestamp; 12 | 13 | @Override 14 | public String toString() { 15 | return new ToStringBuilder(this, BybitApiConstants.TO_STRING_BUILDER_STYLE) 16 | .append("symbol", symbol) 17 | .append("fundingRate", fundingRate) 18 | .append("fundingRateTimestamp", fundingRateTimestamp) 19 | .toString(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/fundingRate/FundingRateResult.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.fundingRate; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.fasterxml.jackson.annotation.JsonPropertyOrder; 6 | import lombok.Getter; 7 | import lombok.Setter; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * historical funding rates. Each symbol has a different funding interval. 13 | */ 14 | @JsonPropertyOrder() 15 | @JsonIgnoreProperties(ignoreUnknown = true) 16 | @Getter 17 | @Setter 18 | public class FundingRateResult { 19 | @JsonProperty("category") 20 | private String category; 21 | 22 | @JsonProperty("list") 23 | private List fundingRateEntries; 24 | } 25 | 26 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/historicalVolatility/HistoricalVolatilityEntry.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.historicalVolatility; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.Data; 5 | 6 | @Data 7 | public class HistoricalVolatilityEntry { 8 | private Integer period; 9 | @JsonProperty("value") 10 | private String Volatility; 11 | private String time; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/historicalVolatility/HistoricalVolatilityResult.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.historicalVolatility; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | @Data 8 | public class HistoricalVolatilityResult { 9 | private List historicalVolatilityEntries; 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/instrumentInfo/InstrumentEntry.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.instrumentInfo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonPropertyOrder; 5 | import lombok.Getter; 6 | 7 | @JsonPropertyOrder 8 | @JsonIgnoreProperties(ignoreUnknown = true) 9 | @Getter 10 | public class InstrumentEntry { 11 | private String symbol; 12 | private String baseCoin; 13 | private String quoteCoin; 14 | private String status; 15 | private String contractType; 16 | private String launchTime; 17 | private String deliveryTime; 18 | private String deliveryFeeRate; 19 | private String priceScale; 20 | private LeverageFilter leverageFilter; 21 | private PriceFilter priceFilter; 22 | private LotSizeFilter lotSizeFilter; 23 | private Boolean unifiedMarginTrade; 24 | private Integer fundingInterval; 25 | private String settleCoin; 26 | private String copyTrading; 27 | private String optionsType; 28 | private String innovation; 29 | private String marginTrading; 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/instrumentInfo/InstrumentInfoResult.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.instrumentInfo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import lombok.Getter; 6 | 7 | import java.util.List; 8 | 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | @Getter 11 | public class InstrumentInfoResult { 12 | @JsonProperty("category") 13 | private String category; 14 | @JsonProperty("list") 15 | private List instrumentEntries; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/instrumentInfo/LeverageFilter.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.instrumentInfo; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public class LeverageFilter { 7 | private String minLeverage; 8 | private String maxLeverage; 9 | private String leverageStep; 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/instrumentInfo/LotSizeFilter.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.instrumentInfo; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public class LotSizeFilter { 7 | private String maxOrderQty; 8 | private String minOrderQty; 9 | private String qtyStep; 10 | private String postOnlyMaxOrderQty; 11 | private String basePrecision; 12 | private String quotePrecision; 13 | private String minOrderAmt; 14 | private String maxOrderAmt; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/instrumentInfo/PriceFilter.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.instrumentInfo; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public class PriceFilter { 7 | private String minPrice; 8 | private String maxPrice; 9 | private String tickSize; 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/kline/MarketKlineEntry.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.kline; 2 | 3 | import com.bybit.api.client.constant.BybitApiConstants; 4 | import com.fasterxml.jackson.annotation.JsonFormat; 5 | import lombok.Getter; 6 | import org.apache.commons.lang3.builder.ToStringBuilder; 7 | 8 | @Getter 9 | @JsonFormat(shape = JsonFormat.Shape.ARRAY) 10 | public class MarketKlineEntry { 11 | private long startTime; 12 | private String openPrice; 13 | private String highPrice; 14 | private String lowPrice; 15 | private String closePrice; 16 | private String volume; 17 | private String turnover; 18 | 19 | @Override 20 | public String toString() { 21 | return new ToStringBuilder(this, BybitApiConstants.TO_STRING_BUILDER_STYLE) 22 | .append("startTime", startTime) 23 | .append("openPrice", openPrice) 24 | .append("highPrice", highPrice) 25 | .append("lowPrice", lowPrice) 26 | .append("closePrice", closePrice) 27 | .append("volume", volume) 28 | .append("turnover", turnover) 29 | .toString(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/kline/MarketKlineResult.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.kline; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.fasterxml.jackson.annotation.JsonPropertyOrder; 6 | import lombok.Getter; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * Kline/Candlestick bars for a symbol. Klines are uniquely identified by their open time. 12 | */ 13 | @JsonPropertyOrder() 14 | @JsonIgnoreProperties(ignoreUnknown = true) 15 | @Getter 16 | public class MarketKlineResult { 17 | @JsonProperty("category") 18 | private String category; 19 | @JsonProperty("symbol") 20 | private String symbol; 21 | @JsonProperty("list") 22 | private List marketKlineEntries; 23 | 24 | @Override 25 | public String toString() { 26 | StringBuilder builder = new StringBuilder(); 27 | builder.append("MarketKlineResult[category=").append(category) 28 | .append(",symbol=").append(symbol) 29 | .append(",marketKlineEntries=[\n"); 30 | 31 | for (MarketKlineEntry entry : marketKlineEntries) { 32 | builder.append("\t").append(entry.toString()).append(",\n"); 33 | } 34 | 35 | builder.append("]]"); 36 | 37 | return builder.toString(); 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/openInterests/OpenInterestEntry.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.openInterests; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class OpenInterestEntry { 7 | private String openInterest; 8 | private String timestamp; 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/openInterests/OpenInterestResult.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.openInterests; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.fasterxml.jackson.annotation.JsonPropertyOrder; 6 | import lombok.Data; 7 | 8 | import java.util.List; 9 | 10 | @JsonIgnoreProperties(ignoreUnknown = true) 11 | @Data 12 | @JsonPropertyOrder 13 | public class OpenInterestResult { 14 | @JsonProperty("category") 15 | private String category; 16 | @JsonProperty("symbol") 17 | private String symbol; 18 | @JsonProperty("list") 19 | private List openInterestEntries; 20 | @JsonProperty("nextPageCursor") 21 | private String nextPageCursor; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/orderbook/OrderBookAskEntry.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.orderbook; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Getter; 5 | 6 | @Getter 7 | @JsonFormat(shape = JsonFormat.Shape.ARRAY) 8 | public class OrderBookAskEntry { 9 | private String askPrice; 10 | private String askSize; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/orderbook/OrderbookBidEntry.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.orderbook; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Getter; 5 | 6 | @Getter 7 | @JsonFormat(shape = JsonFormat.Shape.ARRAY) 8 | public class OrderbookBidEntry { 9 | private String bidPrice; 10 | private String bidSize; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/orderbook/OrderbookResult.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.orderbook; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.fasterxml.jackson.annotation.JsonPropertyOrder; 6 | import lombok.Getter; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * orderbook depth data 12 | */ 13 | @JsonPropertyOrder 14 | @JsonIgnoreProperties(ignoreUnknown = true) 15 | @Getter 16 | public class OrderbookResult { 17 | @JsonProperty("s") 18 | private String symbol; 19 | @JsonProperty("b") 20 | private List orderbookBidEntries; 21 | @JsonProperty("a") 22 | private List orderBookAskEntries; 23 | @JsonProperty("ts") 24 | private long timestamp; 25 | @JsonProperty("u") 26 | private long updateId; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/recentTrade/RecentTradeEntry.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.recentTrade; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class RecentTradeEntry { 7 | private String execId; 8 | private String symbol; 9 | private String price; 10 | private String size; 11 | private String side; 12 | private String time; 13 | private Boolean isBlockTrade; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/recentTrade/RecentTradeResult.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.recentTrade; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.fasterxml.jackson.annotation.JsonPropertyOrder; 6 | import lombok.Data; 7 | 8 | import java.util.List; 9 | 10 | @Data 11 | @JsonIgnoreProperties(ignoreUnknown = true) 12 | @JsonPropertyOrder 13 | public class RecentTradeResult { 14 | @JsonProperty("category") 15 | private String category; 16 | @JsonProperty("list") 17 | private List recentTradeEntries; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/serverTime/ServerTimeResult.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.serverTime; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import lombok.Data; 6 | 7 | @Data 8 | @JsonIgnoreProperties(ignoreUnknown = true) 9 | public class ServerTimeResult { 10 | @JsonProperty("timeSecond") 11 | private String timeSecond; 12 | @JsonProperty("timeNano") 13 | private String timeNano; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/tickers/TickerEntry.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.tickers; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import lombok.Getter; 5 | 6 | @Getter 7 | public class TickerEntry { 8 | @JsonProperty("symbol") 9 | private String symbol; 10 | 11 | @JsonProperty("bid1Price") 12 | private String bid1Price; 13 | 14 | @JsonProperty("bid1Size") 15 | private String bid1Size; 16 | 17 | @JsonProperty("ask1Price") 18 | private String ask1Price; 19 | 20 | @JsonProperty("ask1Size") 21 | private String ask1Size; 22 | 23 | @JsonProperty("lastPrice") 24 | private String lastPrice; 25 | 26 | @JsonProperty("prevPrice24h") 27 | private String prevPrice24h; 28 | 29 | @JsonProperty("price24hPcnt") 30 | private String price24hPcnt; 31 | 32 | @JsonProperty("highPrice24h") 33 | private String highPrice24h; 34 | 35 | @JsonProperty("lowPrice24h") 36 | private String lowPrice24h; 37 | 38 | @JsonProperty("turnover24h") 39 | private String turnover24h; 40 | 41 | @JsonProperty("volume24h") 42 | private String volume24h; 43 | 44 | @JsonProperty("usdIndexPrice") 45 | private String usdIndexPrice; 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/market/response/tickers/TickersResult.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.market.response.tickers; 2 | 3 | import com.bybit.api.client.domain.CategoryType; 4 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 5 | import com.fasterxml.jackson.annotation.JsonProperty; 6 | import lombok.Data; 7 | 8 | import java.util.List; 9 | 10 | @Data 11 | @JsonIgnoreProperties(ignoreUnknown = true) 12 | public class TickersResult { 13 | @JsonProperty("category") 14 | private String category; 15 | @JsonProperty("list") 16 | private List tickerEntries; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/AutoAddMargin.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum AutoAddMargin { 7 | OFF(0), 8 | ON(1); 9 | 10 | private final int value; 11 | AutoAddMargin(int value) { 12 | this.value = value; 13 | } 14 | } -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/ExecType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum ExecType { 7 | Trade("Trade"), 8 | AdlTrade("AdlTrade"), //Auto-Deleveraging 9 | Funding("Funding"), //Funding fee 10 | BustTrade("BustTrade"), //Liquidation 11 | Delivery("Delivery"), //USDC futures delivery 12 | BlockTrade("BlockTrade"); 13 | 14 | private final String execTypeId; 15 | 16 | ExecType(String execTypeId) { 17 | this.execTypeId = execTypeId; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/MarginMode.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum MarginMode { 7 | CROSS_MARGIN(0, "REGULAR_MARGIN"), // Cross margin 8 | ISOLATED_MARGIN(1, "ISOLATED_MARGIN"), 9 | PORTFOLIO_MARGIN(2,"PORTFOLIO_MARGIN"); 10 | 11 | private final int value; 12 | private final String description; 13 | 14 | MarginMode(int value, String description) { 15 | this.value = value; 16 | this.description = description; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/MovePositionStatus.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum MovePositionStatus { 7 | Processing("Processing"), 8 | Filled("Filled"), 9 | Rejected("Rejected"); 10 | 11 | private final String movePositionStatus; 12 | 13 | MovePositionStatus(String movePositionStatus) { 14 | this.movePositionStatus = movePositionStatus; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/PositionMode.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum PositionMode { 7 | MERGED_SINGLE(0, "Merged Single"), 8 | BOTH_SIDES(3, "Both Sides"); 9 | 10 | private final int value; 11 | private final String description; 12 | 13 | PositionMode(int value, String description) { 14 | this.value = value; 15 | this.description = description; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/TpslMode.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum TpslMode { 7 | FULL("Full"), 8 | PARTIAL("Partial"); 9 | 10 | private final String description; 11 | 12 | TpslMode(String description) { 13 | this.description = description; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/request/BatchMovePositionRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | import java.util.List; 10 | 11 | @Getter 12 | @Setter 13 | @ToString 14 | @Builder 15 | @JsonInclude(JsonInclude.Include.NON_NULL) 16 | public class BatchMovePositionRequest { 17 | private String fromUid; 18 | private String toUid; 19 | private List list; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/request/ConfirmNewRiskLimitRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class ConfirmNewRiskLimitRequest { 15 | private final String category; 16 | private final String symbol; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/request/ModifyMarginRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class ModifyMarginRequest { 15 | private String category; 16 | private String symbol; 17 | private String margin; 18 | private Integer positionIdx; 19 | } 20 | 21 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/request/MovePositionDetailsRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class MovePositionDetailsRequest { 15 | private String category; 16 | private String symbol; 17 | private String price; 18 | private String side; 19 | private String qty; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/request/SetAutoAddMarginRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class SetAutoAddMarginRequest { 15 | private String category; 16 | private String symbol; 17 | private Integer autoAddMargin; 18 | private Integer positionIdx; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/request/SetLeverageRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class SetLeverageRequest { 15 | private String category; 16 | private String symbol; 17 | private String buyLeverage; 18 | private String sellLeverage; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/request/SetRiskLimitRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | @Getter 9 | @Setter 10 | @ToString 11 | @Builder 12 | @JsonInclude(JsonInclude.Include.NON_NULL) 13 | public class SetRiskLimitRequest { 14 | private String category; 15 | private String symbol; 16 | private Integer riskId; 17 | private Integer positionIdx; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/request/SetTpSlModeRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class SetTpSlModeRequest { 15 | private String category; 16 | private String symbol; 17 | private String tpSlMode; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/request/SwitchMarginRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class SwitchMarginRequest { 15 | private String category; 16 | private String symbol; 17 | private Integer tradeMode; 18 | private String buyLeverage; 19 | private String sellLeverage; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/position/request/SwitchPositionModeRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.position.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class SwitchPositionModeRequest { 15 | private String category; 16 | private String symbol; 17 | private String coin; 18 | private Integer mode; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/preupgrade/PreUpgradeDataRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.preupgrade; 2 | 3 | import com.bybit.api.client.domain.CategoryType; 4 | import com.bybit.api.client.domain.position.ExecType; 5 | import com.bybit.api.client.domain.trade.OrderStatus; 6 | import lombok.Builder; 7 | import lombok.Getter; 8 | import lombok.Setter; 9 | import lombok.ToString; 10 | 11 | @Getter 12 | @Setter 13 | @ToString 14 | @Builder 15 | public class PreUpgradeDataRequest { 16 | private CategoryType category; 17 | private String symbol; 18 | private Long startTime; 19 | private Long endTime; 20 | private Integer limit; 21 | private String cursor; 22 | private String expDate; 23 | private String baseCoin; 24 | private String orderId; 25 | private String orderLinkId; 26 | private String orderFilter; 27 | private OrderStatus orderStatus; 28 | private ExecType execType; 29 | private TransactionType transactionType; 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/preupgrade/TransactionType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.preupgrade; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum TransactionType { 7 | TRANSFER_IN("TRANSFER_IN"), 8 | TRANSFER_OUT("TRANSFER_OUT"), 9 | TRADE("TRADE"), 10 | SETTLEMENT("SETTLEMENT"), 11 | DELIVERY("DELIVERY"), 12 | LIQUIDATION("LIQUIDATION"), 13 | BONUS("BONUS"), 14 | FEE_REFUND("FEE_REFUND"), 15 | INTEREST("INTEREST"), 16 | CURRENCY_BUY("CURRENCY_BUY"), 17 | CURRENCY_SELL("CURRENCY_SELL"), 18 | BORROWED_AMOUNT_INS_LOAN("BORROWED_AMOUNT_INS_LOAN"), 19 | PRINCIPLE_REPAYMENT_INS_LOAN("PRINCIPLE_REPAYMENT_INS_LOAN"), 20 | INTEREST_REPAYMENT_INS_LOAN("INTEREST_REPAYMENT_INS_LOAN"), 21 | AUTO_SOLD_COLLATERAL_INS_LOAN("AUTO_SOLD_COLLATERAL_INS_LOAN"), 22 | AUTO_BUY_LIABILITY_INS_LOAN("AUTO_BUY_LIABILITY_INS_LOAN"), 23 | AUTO_PRINCIPLE_REPAYMENT_INS_LOAN("AUTO_PRINCIPLE_REPAYMENT_INS_LOAN"), 24 | AUTO_INTEREST_REPAYMENT_INS_LOAN("AUTO_INTEREST_REPAYMENT_INS_LOAN"); 25 | 26 | private final String transactionTypeId; 27 | 28 | TransactionType(String transactionTypeId) { 29 | this.transactionTypeId = transactionTypeId; 30 | } 31 | 32 | } 33 | 34 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/spot/BorrowStatus.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.spot; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum BorrowStatus { 7 | ALL_STATUS(0), 8 | UNCLEARED(1), 9 | CLEARED(2); 10 | private final int value; 11 | BorrowStatus(int value) { 12 | this.value = value; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/spot/CompleteRepayment.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.spot; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum CompleteRepayment { 7 | TRUE(1), 8 | FALSE(0); 9 | 10 | private final int value; 11 | 12 | CompleteRepayment(int value) { 13 | this.value = value; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/spot/SpotMarginDataRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.spot; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.ToString; 7 | 8 | @Getter 9 | @Setter 10 | @ToString 11 | @Builder 12 | public class SpotMarginDataRequest { 13 | private final String ltCoin; 14 | private final String ltAmount; 15 | private final String quantity; 16 | private final String orderId; 17 | private final Long startTime; 18 | private final Long endTime; 19 | private final Integer limit; 20 | private final Integer ltOrderType; 21 | private final String serialNo; 22 | private final VipLevel vipLevel; 23 | private final String currency; 24 | private final String coin; 25 | private final String qty; 26 | private final CompleteRepayment completeRepayment; 27 | private final String leverage; 28 | private final String spotMarginMode; 29 | private final SwitchStatus switchStatus; 30 | private final BorrowStatus borrowStatus; 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/spot/SpotMarginMode.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.spot; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum SpotMarginMode { 7 | ON("1"), 8 | OFF("0"); 9 | 10 | private final String value; 11 | 12 | SpotMarginMode(String value) { 13 | this.value = value; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/spot/SwitchStatus.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.spot; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum SwitchStatus { 7 | ON(1), 8 | OFF(0); 9 | 10 | private final int value; 11 | 12 | SwitchStatus(int value) { 13 | this.value = value; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/spot/VipLevel.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.spot; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum VipLevel { 7 | NO_VIP("No VIP"), 8 | VIP_1("VIP-1"), 9 | VIP_2("VIP-2"), 10 | VIP_3("VIP-3"), 11 | VIP_4("VIP-4"), 12 | VIP_5("VIP-5"), 13 | VIP_SUPREME("VIP-Supreme"), 14 | PRO_1("PRO-1"), 15 | PRO_2("PRO-2"), 16 | PRO_3("PRO-3"), 17 | PRO_4("PRO-4"), 18 | PRO_5("PRO-5"); 19 | 20 | private final String level; 21 | 22 | VipLevel(String level) { 23 | this.level = level; 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/spot/leverageToken/SpotLeverageOrdersRecordRequest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Request Parameters 3 | * Parameter Required Type Comments 4 | * ltCoin false string Abbreviation of the LT, such as BTC3L 5 | * orderId false string Order ID 6 | * startTime false integer The start timestamp (ms) 7 | * endTime false integer The end timestamp (ms) 8 | * limit false integer Limit for data size per page. [1, 500]. Default: 100 9 | * ltOrderType false integer LT order type. 1: purchase, 2: redemption 10 | * serialNo false string Serial number 11 | */ 12 | package com.bybit.api.client.domain.spot.leverageToken; 13 | 14 | import lombok.Builder; 15 | import lombok.Getter; 16 | import lombok.Setter; 17 | import lombok.ToString; 18 | 19 | @Getter 20 | @Setter 21 | @ToString 22 | @Builder 23 | public class SpotLeverageOrdersRecordRequest { 24 | private final String ltCoin; 25 | private final String orderId; 26 | private final Long startTime; 27 | private final Long endTime; 28 | private final Integer limit; 29 | private final Integer ltOrderType; 30 | private final String serialNo; 31 | } 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/spot/leverageToken/SpotLeverageTokenRequest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Request Parameters 3 | * Parameter Required Type Comments 4 | * ltCoin true string Abbreviation of the LT, such as BTC3L 5 | * ltAmount true string Purchase amount 6 | * serialNo false string Serial number 7 | */ 8 | package com.bybit.api.client.domain.spot.leverageToken; 9 | 10 | import lombok.Builder; 11 | import lombok.Getter; 12 | import lombok.Setter; 13 | import lombok.ToString; 14 | 15 | @Getter 16 | @Setter 17 | @ToString 18 | @Builder 19 | public class SpotLeverageTokenRequest { 20 | private final String ltCoin; 21 | private final String ltAmount; 22 | private final String serialNo; 23 | private final String quantity; 24 | } 25 | 26 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/spot/marginTrade/SpotMarginTradeBorrowOrdersRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.spot.marginTrade; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.ToString; 7 | 8 | @Getter 9 | @Setter 10 | @ToString 11 | @Builder 12 | public class SpotMarginTradeBorrowOrdersRequest { 13 | private final Long startTime; 14 | private final Long endTime; 15 | private final String coin; 16 | private final Integer status; 17 | private final Integer limit; 18 | } 19 | 20 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/spot/marginTrade/SpotMarginTradeBorrowRequest.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Request Parameters 3 | * Parameter Required Type Comments 4 | * coin true string Coin name 5 | * qty true string Amount to borrow 6 | * Response Parameters 7 | * Parameter Type Comments 8 | * transactId string Borrow transaction ID 9 | */ 10 | package com.bybit.api.client.domain.spot.marginTrade; 11 | 12 | import lombok.Builder; 13 | import lombok.Getter; 14 | import lombok.Setter; 15 | import lombok.ToString; 16 | 17 | @Getter 18 | @Setter 19 | @ToString 20 | @Builder 21 | public class SpotMarginTradeBorrowRequest { 22 | private final String coin; 23 | private final String qty; 24 | } 25 | 26 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/spot/marginTrade/SpotMarginTradeRePayRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.spot.marginTrade; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.ToString; 7 | 8 | @Getter 9 | @Setter 10 | @ToString 11 | @Builder 12 | public class SpotMarginTradeRePayRequest { 13 | private final String coin; 14 | private final String qty; 15 | private final Integer completeRepayment; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/spot/marginTrade/SpotMarginTradeRepayOrdersRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.spot.marginTrade; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.ToString; 7 | 8 | @Getter 9 | @Setter 10 | @ToString 11 | @Builder 12 | public class SpotMarginTradeRepayOrdersRequest { 13 | private final Long startTime; 14 | private final Long endTime; 15 | private final String coin; 16 | private final Integer limit; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/spot/marginTrade/VIPMarginDataRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.spot.marginTrade; 2 | 3 | import com.bybit.api.client.domain.spot.VipLevel; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | public class VIPMarginDataRequest { 14 | private final VipLevel vipLevel; 15 | private final String currency; 16 | } 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/CancelType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum CancelType { 7 | CANCEL_BY_USER("CancelByUser"), 8 | CANCEL_BY_REDUCE_ONLY("CancelByReduceOnly"), 9 | CANCEL_BY_PREPARE_LIQ("CancelByPrepareLiq"), 10 | CANCEL_ALL_BEFORE_LIQ("CancelAllBeforeLiq"), // Cancelled due to liquidation 11 | CANCEL_BY_PREPARE_ADL("CancelByPrepareAdl"), 12 | CANCEL_ALL_BEFORE_ADL("CancelAllBeforeAdl"), // Cancelled due to ADL 13 | CANCEL_BY_ADMIN("CancelByAdmin"), 14 | CANCEL_BY_TP_SL_TS_CLEAR("CancelByTpSlTsClear"), 15 | CANCEL_BY_PZ_SIDE_CH("CancelByPzSideCh"), 16 | CANCEL_BY_SMP("CancelBySmp"); 17 | 18 | private final String cancelReason; 19 | 20 | CancelType(String cancelReason) { 21 | this.cancelReason = cancelReason; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/OrderFilter.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum OrderFilter { 7 | ORDER("Order"), 8 | TPSL_ORDER("tpslOrder"), 9 | STOP_ORDER("StopOrder"); 10 | 11 | private final String orderFilterType; 12 | 13 | OrderFilter(String orderFilterType) { 14 | this.orderFilterType = orderFilterType; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/OrderStatus.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * Status of a submitted order. 7 | */ 8 | @Getter 9 | public enum OrderStatus { 10 | CREATED("Created"), 11 | NEW("New"), 12 | REJECTED("Rejected"), 13 | PARTIALLY_FILLED("PartiallyFilled"), 14 | PARTIALLY_FILLED_CANCELED("PartiallyFilledCanceled"), 15 | FILLED("Filled"), 16 | CANCELLED("Cancelled"), 17 | UNTRIGGERED("Untriggered"), 18 | TRIGGERED("Triggered"), 19 | DEACTIVATED("Deactivated"), 20 | ACTIVE("Active"); 21 | 22 | private final String description; 23 | 24 | OrderStatus(String description) { 25 | this.description = description; 26 | } 27 | } -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/PositionIdx.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * Position index. Used to identify positions in different position modes 7 | */ 8 | @Getter 9 | public enum PositionIdx { 10 | ONE_WAY_MODE(0), 11 | HEDGE_MODE_BUY(1), 12 | HEDGE_MODE_SELL(2); 13 | 14 | private final int index; 15 | 16 | PositionIdx(int index) { 17 | this.index = index; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/RejectReason.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade; 2 | 3 | import com.fasterxml.jackson.annotation.JsonCreator; 4 | 5 | /** 6 | * Reject reason. Normal spot is not supported 7 | */ 8 | public enum RejectReason { 9 | EC_NoError, 10 | EC_Others, 11 | EC_UnknownMessageType, 12 | EC_MissingClOrdID, 13 | EC_MissingOrigClOrdID, 14 | EC_ClOrdIDOrigClOrdIDAreTheSame, 15 | EC_DuplicatedClOrdID, 16 | EC_OrigClOrdIDDoesNotExist, 17 | EC_TooLateToCancel, 18 | EC_UnknownOrderType, 19 | EC_UnknownSide, 20 | EC_UnknownTimeInForce, 21 | EC_WronglyRouted, 22 | EC_MarketOrderPriceIsNotZero, 23 | EC_LimitOrderInvalidPrice, 24 | EC_NoEnoughQtyToFill, 25 | EC_NoImmediateQtyToFill, 26 | EC_PerCancelRequest, 27 | EC_MarketOrderCannotBePostOnly, 28 | EC_PostOnlyWillTakeLiquidity, 29 | EC_CancelReplaceOrder, 30 | EC_InvalidSymbolStatus, 31 | UNKNOWN; 32 | 33 | @JsonCreator 34 | public static RejectReason fromString(String value) { 35 | if (value == null || value.trim().isEmpty()) { 36 | return UNKNOWN; 37 | } 38 | try { 39 | return RejectReason.valueOf(value.toUpperCase()); 40 | } catch (IllegalArgumentException e) { 41 | return UNKNOWN; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/Side.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum Side { 7 | BUY("Buy"), 8 | SELL("Sell"); 9 | 10 | private final String transactionSide; 11 | 12 | Side(String transactionSide) { 13 | this.transactionSide = transactionSide; 14 | } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/SmpType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | * SMP execution type 7 | */ 8 | @Getter 9 | public enum SmpType { 10 | NONE("None"), 11 | CANCEL_MAKER("CancelMaker"), 12 | CANCEL_TAKER("CancelTaker"), 13 | CANCEL_BOTH("CancelBoth"); 14 | 15 | private final String description; 16 | 17 | SmpType(String description) { 18 | this.description = description; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/StopOrderType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum StopOrderType { 7 | TAKE_PROFIT("TakeProfit"), 8 | STOP_LOSS("StopLoss"), 9 | TRAILING_STOP("TrailingStop"), 10 | STOP("Stop"), 11 | PARTIAL_TAKE_PROFIT("PartialTakeProfit"), 12 | PARTIAL_STOP_LOSS("PartialStopLoss"), 13 | TPSL_ORDER("tpslOrder"), 14 | MM_RATE_CLOSE("MmRateClose"); 15 | 16 | private final String description; 17 | 18 | StopOrderType(String description) { 19 | this.description = description; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/TimeInForce.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum TimeInForce { 7 | GOOD_TILL_CANCEL("GTC"), 8 | IMMEDIATE_OR_CANCEL("IOC"), 9 | FILL_OR_KILL("FOK"), 10 | POST_ONLY("PostOnly"), 11 | GTC("GTC"), 12 | IOC("IOC"), 13 | FOK("FOK"); 14 | 15 | private final String description; 16 | 17 | TimeInForce(String description) { 18 | this.description = description; 19 | } 20 | } -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/request/AmendBatchOrderRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade.request; 2 | 3 | import com.bybit.api.client.domain.CategoryType; 4 | import com.bybit.api.client.service.CategoryTypeSerializer; 5 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | 9 | import java.util.List; 10 | 11 | @Builder 12 | @Data 13 | public class AmendBatchOrderRequest { 14 | @JsonSerialize(using = CategoryTypeSerializer.class) 15 | private CategoryType category; 16 | private List request; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/request/AmendOrderRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | @Data 8 | @Builder 9 | @JsonInclude(JsonInclude.Include.NON_NULL) 10 | public class AmendOrderRequest { 11 | private String category; 12 | private String symbol; 13 | private String orderId; 14 | private String orderLinkId; 15 | private String qty; 16 | private String price; 17 | private String tpslMode; 18 | private String triggerPrice; 19 | private String orderIv; 20 | private String takeProfit; 21 | private String stopLoss; 22 | private String triggerBy; 23 | private String tpTriggerBy; 24 | private String slTriggerBy; 25 | private String tpLimitPrice; 26 | private String slLimitPrice; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/request/BatchOrderRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade.request; 2 | 3 | import com.bybit.api.client.domain.CategoryType; 4 | import com.bybit.api.client.service.CategoryTypeSerializer; 5 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | 9 | import java.util.List; 10 | 11 | @Data 12 | @Builder 13 | public class BatchOrderRequest { 14 | @JsonSerialize(using = CategoryTypeSerializer.class) 15 | private CategoryType category; 16 | private List request; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/request/CancelAllOrdersRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | @Data 8 | @Builder 9 | @JsonInclude(JsonInclude.Include.NON_NULL) 10 | public class CancelAllOrdersRequest { 11 | private String symbol; 12 | private String category; 13 | private String baseCoin; 14 | private String settleCoin; 15 | private String orderFilter; 16 | private String stopOrderType; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/request/CancelBatchOrderRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade.request; 2 | 3 | import com.bybit.api.client.domain.CategoryType; 4 | import com.bybit.api.client.service.CategoryTypeSerializer; 5 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 6 | import lombok.Builder; 7 | import lombok.Getter; 8 | import lombok.Setter; 9 | import lombok.ToString; 10 | 11 | import java.util.List; 12 | 13 | @Getter 14 | @Setter 15 | @Builder 16 | @ToString 17 | public class CancelBatchOrderRequest { 18 | @JsonSerialize(using = CategoryTypeSerializer.class) 19 | private CategoryType category; 20 | private List request; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/request/CancelOrderRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | @Data 8 | @Builder 9 | @JsonInclude(JsonInclude.Include.NON_NULL) 10 | public class CancelOrderRequest { 11 | private String category; 12 | private String symbol; 13 | private String orderId; 14 | private String orderLinkId; 15 | private String orderFilter; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/request/PlaceBatchOrderRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade.request; 2 | 3 | import com.bybit.api.client.domain.CategoryType; 4 | import com.bybit.api.client.service.CategoryTypeSerializer; 5 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 6 | import lombok.*; 7 | 8 | import java.util.List; 9 | 10 | @Getter 11 | @Setter 12 | @Builder 13 | @ToString 14 | public class PlaceBatchOrderRequest { 15 | @JsonSerialize(using = CategoryTypeSerializer.class) 16 | private CategoryType category; 17 | private List request; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/request/PlaceOrderRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | @Builder 8 | @Data 9 | @JsonInclude(JsonInclude.Include.NON_NULL) 10 | public class PlaceOrderRequest { 11 | private String category; 12 | private String symbol; 13 | private Integer isLeverage; 14 | private String side; 15 | private String orderType; 16 | private String qty; 17 | private String price; 18 | private Integer triggerDirection; 19 | private String orderFilter; 20 | private String triggerPrice; 21 | private String triggerBy; 22 | private String orderIv; 23 | private String timeInForce; 24 | private Integer positionIdx; 25 | private String orderLinkId; 26 | private String takeProfit; 27 | private String stopLoss; 28 | private String tpTriggerBy; 29 | private String slTriggerBy; 30 | private Boolean reduceOnly; 31 | private Boolean closeOnTrigger; 32 | private String smpType; 33 | private Boolean mmp; 34 | private String tpslMode; 35 | private String tpLimitPrice; 36 | private String slLimitPrice; 37 | private String tpOrderType; 38 | private String slOrderType; 39 | private String marketUnit; 40 | } 41 | 42 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/request/SetDcpRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class SetDcpRequest { 9 | private Integer timeWindow; 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/response/OrderResponse.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade.response; 2 | 3 | import com.bybit.api.client.constant.BybitApiConstants; 4 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 5 | import com.fasterxml.jackson.annotation.JsonProperty; 6 | import com.fasterxml.jackson.annotation.JsonPropertyOrder; 7 | import lombok.Data; 8 | import org.apache.commons.lang3.builder.ToStringBuilder; 9 | 10 | @JsonPropertyOrder() 11 | @JsonIgnoreProperties(ignoreUnknown = true) 12 | @Data 13 | public class OrderResponse { 14 | @JsonProperty("orderId") 15 | private String orderId; 16 | @JsonProperty("orderLinkId") 17 | private String orderLinkId; 18 | @Override 19 | public String toString() { 20 | return new ToStringBuilder(this, BybitApiConstants.TO_STRING_BUILDER_STYLE) 21 | .append("orderId", orderId) 22 | .append("orderLinkId", orderLinkId) 23 | .toString(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/trade/response/OrderResult.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.trade.response; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import com.fasterxml.jackson.annotation.JsonPropertyOrder; 6 | import lombok.Data; 7 | import lombok.Getter; 8 | import lombok.Setter; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * Trade order information. 14 | */ 15 | @JsonPropertyOrder() 16 | @JsonIgnoreProperties(ignoreUnknown = true) 17 | @Data 18 | public class OrderResult { 19 | @JsonProperty("nextPageCursor") 20 | private String nextPageCursor; 21 | @JsonProperty("category") 22 | private String category; 23 | @JsonProperty("list") 24 | private List orderEntries; 25 | 26 | @Override 27 | public String toString() { 28 | StringBuilder builder = new StringBuilder(); 29 | builder.append("OrderResult[nextPageCursor=").append(nextPageCursor) 30 | .append(", category=").append(category) 31 | .append(",orderEntries=[\n"); 32 | 33 | for (OrderEntry entry : orderEntries) { 34 | builder.append("\t").append(entry.toString()).append(",\n"); 35 | } 36 | 37 | builder.append("]]"); 38 | 39 | return builder.toString(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/user/FrozenStatus.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.user; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum FrozenStatus { 7 | UNFREEZE(0), 8 | FREEZE(1); 9 | 10 | private final int value; 11 | 12 | FrozenStatus(int value) { 13 | this.value = value; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/user/IsUta.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.user; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum IsUta { 7 | UTA_ACCOUNT(true), 8 | CLASSIC_ACCOUNT(false); 9 | 10 | private final boolean uta; 11 | 12 | IsUta(boolean uta) { 13 | this.uta = uta; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/user/MasterUserPermissions.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.user; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.ToString; 7 | 8 | import java.util.List; 9 | 10 | @Getter 11 | @Setter 12 | @ToString 13 | @Builder 14 | public class MasterUserPermissions { 15 | private List contractTrade; // Permission of contract trade 16 | private List spot; // Permission of spot 17 | private List wallet; // Permission of wallet 18 | private List options; // Permission of USDC Contract. It supports trade option and USDC perpetual. 19 | private List derivatives; // Permission of Unified account 20 | private List copyTrading; // Permission of copytrade 21 | private List blockTrade; // Permission of blocktrade. Not applicable to sub account, always [] 22 | private List exchange; // Permission of exchange 23 | private List nft; // Permission of NFT. Not applicable to sub account, always [] 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/user/MemberType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.user; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum MemberType { 7 | NORMAL_SUB_ACCOUNT(1), 8 | CUSTODIAL_SUB_ACCOUNT(6); 9 | 10 | private final int value; 11 | 12 | MemberType(int value) { 13 | this.value = value; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/user/ReadOnlyStatus.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.user; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum ReadOnlyStatus { 7 | READ_AND_WRITE(0), 8 | READ_ONLY(1); 9 | 10 | private final int value; 11 | 12 | ReadOnlyStatus(int value) { 13 | this.value = value; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/user/SubUserPermissions.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.user; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | import lombok.Setter; 6 | import lombok.ToString; 7 | 8 | import java.util.List; 9 | 10 | @Getter 11 | @Setter 12 | @ToString 13 | @Builder 14 | public class SubUserPermissions { 15 | private List contractTrade; // Contract Trade permissions ["Order","Position"] 16 | private List spot; // Spot Trade permissions ["SpotTrade"] 17 | private List wallet; // Wallet permissions ["AccountTransfer", "SubMemberTransferList"] 18 | private List options; // USDC Contract permissions ["OptionsTrade"] 19 | private List derivatives; // This param is deprecated 20 | private List exchange; // Exchange permissions ["ExchangeHistory"] 21 | private List copyTrading; // Copytrade permissions ["CopyTrading"] 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/user/SwitchOption.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.user; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum SwitchOption { 7 | TURN_OFF(0), 8 | TURN_ON(1); 9 | 10 | private final int value; 11 | 12 | SwitchOption(int value) { 13 | this.value = value; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/user/UserDataRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.user; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | import java.util.List; 10 | import java.util.Map; 11 | 12 | @Getter 13 | @Setter 14 | @ToString 15 | @Builder 16 | @JsonInclude(JsonInclude.Include.NON_NULL) 17 | public class UserDataRequest { 18 | private String username; 19 | private String password; 20 | private MemberType memberType; 21 | private SwitchOption switchOption; 22 | private IsUta isUta; 23 | private String note; 24 | private MasterUserPermissions masterUserPermissions; 25 | private SubUserPermissions subUserPermissions; 26 | private Map> permissionsMap; 27 | private UserPermissionsMap userPermissionsMap; 28 | private FrozenStatus frozenStatus; 29 | private Integer subuid; 30 | private List memberIds; // Multiple sub UID are supported, separated by commas 31 | private List ips; 32 | private String apikey; 33 | private ReadOnlyStatus readOnlyStatus; 34 | private String uid; 35 | private String subMemberId; 36 | private Integer limit; 37 | private String pageSize; 38 | private String nextCursor; 39 | private String cursor; 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/user/UserPermissionsMap.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.user; 2 | 3 | import com.fasterxml.jackson.annotation.JsonAnyGetter; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | import java.util.List; 10 | import java.util.Map; 11 | 12 | @Getter 13 | @Setter 14 | @ToString 15 | @Builder 16 | public class UserPermissionsMap { 17 | private final Map> permissionMap; 18 | 19 | public UserPermissionsMap(Map> permissionMap) { 20 | this.permissionMap = permissionMap; 21 | } 22 | 23 | @JsonAnyGetter // This annotation allows the map's entries to be serialized as properties. 24 | public Map> getPermissionMap() { 25 | return permissionMap; 26 | } 27 | } -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/user/request/CreateSubApiKeyRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.user.request; 2 | 3 | import com.bybit.api.client.domain.user.SubUserPermissions; 4 | import com.fasterxml.jackson.annotation.JsonInclude; 5 | import com.fasterxml.jackson.annotation.JsonProperty; 6 | import lombok.Builder; 7 | import lombok.Getter; 8 | import lombok.Setter; 9 | import lombok.ToString; 10 | 11 | import java.util.List; 12 | import java.util.Map; 13 | 14 | @Getter 15 | @Setter 16 | @ToString 17 | @Builder 18 | @JsonInclude(JsonInclude.Include.NON_NULL) 19 | public class CreateSubApiKeyRequest { 20 | private Integer subuid; // required 21 | private String note; 22 | private Integer readOnly; // required 23 | private String ips; 24 | @JsonProperty("permissions") 25 | private Map> permissions; // required 26 | } 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/user/request/FreezeSubUIDRquest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.user.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import lombok.Builder; 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | import lombok.ToString; 8 | 9 | @Getter 10 | @Setter 11 | @ToString 12 | @Builder 13 | @JsonInclude(JsonInclude.Include.NON_NULL) 14 | public class FreezeSubUIDRquest { 15 | private Integer subuid; // required 16 | private Integer frozen; // required 0:unfreeze, 1:freeze 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/user/request/ModifyApiKeyRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.user.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import lombok.Builder; 6 | import lombok.Getter; 7 | import lombok.Setter; 8 | import lombok.ToString; 9 | 10 | import java.util.List; 11 | import java.util.Map; 12 | @Getter 13 | @Setter 14 | @ToString 15 | @Builder 16 | @JsonInclude(JsonInclude.Include.NON_NULL) 17 | public class ModifyApiKeyRequest { 18 | private Integer readOnly; 19 | private String ips; 20 | private String apikey; 21 | @JsonProperty("permissions") 22 | private Map> permissionsMap; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/user/request/UserSubMemberRequest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.user.request; 2 | 3 | import com.fasterxml.jackson.annotation.JsonInclude; 4 | import com.fasterxml.jackson.annotation.JsonProperty; 5 | import lombok.Builder; 6 | import lombok.Getter; 7 | import lombok.Setter; 8 | import lombok.ToString; 9 | 10 | @Getter 11 | @Setter 12 | @ToString 13 | @Builder 14 | @JsonInclude(JsonInclude.Include.NON_NULL) 15 | public class UserSubMemberRequest { 16 | private String username; 17 | private String password; 18 | private int memberType; 19 | @JsonProperty("switch") 20 | private int switchOption; 21 | @JsonProperty("isUta") 22 | private Boolean isUta; 23 | private String note; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/private_channel/CoinData.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.private_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class CoinData { 11 | private String coin; 12 | private String equity; 13 | private String usdValue; 14 | private String walletBalance; 15 | private String free; 16 | private String locked; 17 | private String spotHedgingQty; 18 | private String borrowAmount; 19 | private String availableToBorrow; 20 | private String availableToWithdraw; 21 | private String accruedInterest; 22 | private String totalOrderIM; 23 | private String totalPositionIM; 24 | private String totalPositionMM; 25 | private String unrealisedPnl; 26 | private String cumRealisedPnl; 27 | private String bonus; 28 | private Boolean collateralSwitch; 29 | private Boolean marginCollateral; 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/private_channel/ExecutionData.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.private_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class ExecutionData { 11 | private String category; 12 | private String symbol; 13 | private String isLeverage; 14 | private String orderId; 15 | private String orderLinkId; 16 | private String side; 17 | private String orderPrice; 18 | private String orderQty; 19 | private String leavesQty; 20 | private String createType; 21 | private String orderType; 22 | private String stopOrderType; 23 | private String execFee; 24 | private String execId; 25 | private String execPrice; 26 | private String execQty; 27 | private String execType; 28 | private String execValue; 29 | private String execTime; 30 | private Boolean isMaker; 31 | private String feeRate; 32 | private String tradeIv; 33 | private String markIv; 34 | private String markPrice; 35 | private String indexPrice; 36 | private String underlyingPrice; 37 | private String blockTradeId; 38 | private String closedSize; 39 | private Long seq; 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/private_channel/GreekData.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.private_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class GreekData { 11 | private String baseCoin; 12 | private String totalDelta; 13 | private String totalGamma; 14 | private String totalVega; 15 | private String totalTheta; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/private_channel/PositionData.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.private_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class PositionData { 11 | private String category; 12 | private String symbol; 13 | private String side; 14 | private String size; 15 | private Integer positionIdx; 16 | private Integer tradeMode; 17 | private String positionValue; 18 | private Integer riskId; 19 | private String riskLimitValue; 20 | private String entryPrice; 21 | private String markPrice; 22 | private String leverage; 23 | private String positionBalance; 24 | private Integer autoAddMargin; 25 | private String positionMM; 26 | private String positionIM; 27 | private String liqPrice; 28 | private String bustPrice; 29 | private String tpslMode; 30 | private String takeProfit; 31 | private String stopLoss; 32 | private String trailingStop; 33 | private String unrealisedPnl; 34 | private String cumRealisedPnl; 35 | private String positionStatus; 36 | private Integer adlRankIndicator; 37 | private Boolean isReduceOnly; 38 | private String mmrSysUpdatedTime; 39 | private String leverageSysUpdatedTime; 40 | private String createdTime; 41 | private String updatedTime; 42 | private Long seq; 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/private_channel/WalletData.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.private_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | @NoArgsConstructor 11 | @JsonIgnoreProperties(ignoreUnknown = true) 12 | public class WalletData { 13 | private String accountType; 14 | private String accountLTV; 15 | private String accountIMRate; 16 | private String accountMMRate; 17 | private String totalEquity; 18 | private String totalWalletBalance; 19 | private String totalMarginBalance; 20 | private String totalAvailableBalance; 21 | private String totalPerpUPL; 22 | private String totalInitialMargin; 23 | private String totalMaintenanceMargin; 24 | private List coin; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/private_channel/WebSocketExecutionMessage.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.private_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class WebSocketExecutionMessage { 11 | private String id; 12 | private String topic; 13 | private Long creationTime; 14 | private List data; // Assuming 'data' is an array of KlineData objects 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/private_channel/WebSocketGreekMessage.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.private_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class WebSocketGreekMessage { 11 | private String id; 12 | private String topic; 13 | private Long creationTime; 14 | private List data; // Assuming 'data' is an array of KlineData objects 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/private_channel/WebSocketOrderMessage.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.private_channel; 2 | 3 | import com.bybit.api.client.domain.websocket_message.public_channel.KlineData; 4 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 5 | import lombok.Data; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | @JsonIgnoreProperties(ignoreUnknown = true) 11 | public class WebSocketOrderMessage { 12 | private String id; 13 | private String topic; 14 | private Long creationTime; 15 | private List data; // Assuming 'data' is an array of KlineData objects 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/private_channel/WebSocketPositionMessage.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.private_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class WebSocketPositionMessage { 11 | private String id; 12 | private String topic; 13 | private Long creationTime; 14 | private List data; // Assuming 'data' is an array of KlineData objects 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/private_channel/WebSocketWalletMessage.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.private_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class WebSocketWalletMessage { 11 | private String id; 12 | private String topic; 13 | private Long creationTime; 14 | private List data; // Assuming 'data' is an array of KlineData objects 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/KlineData.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class KlineData { 11 | private Long start; 12 | private Long end; 13 | private String interval; 14 | private String open; 15 | private String close; 16 | private String high; 17 | private String low; 18 | private String volume; 19 | private String turnover; 20 | private Boolean confirm; 21 | private Long timestamp; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/LiquidationData.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class LiquidationData { 11 | private Long updateTime; 12 | private String symbol; 13 | private String side; 14 | private String size; 15 | private String price; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/LtKlineData.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class LtKlineData { 11 | private Long start; 12 | private Long end; 13 | private String interval; 14 | private String open; 15 | private String close; 16 | private String high; 17 | private String low; 18 | private Boolean confirm; 19 | private Long timestamp; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/LtTicketData.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class LtTicketData { 11 | private String symbol; 12 | private String price24hPcnt; 13 | private String lastPrice; 14 | private String prevPrice24h; 15 | private String highPrice24h; 16 | private String lowPrice24h; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/NavData.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class NavData { 11 | private Long time; 12 | private String symbol; 13 | private String nav; 14 | private String basketPosition; 15 | private String leverage; 16 | private String basketLoan; 17 | private String circulation; 18 | private String basket; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/PublicOrderBookData.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | @NoArgsConstructor 11 | @JsonIgnoreProperties(ignoreUnknown = true) 12 | public class PublicOrderBookData { 13 | private String s; // Symbol name 14 | private List> b; // Bids 15 | private List> a; // Asks 16 | private Long u; // Update ID 17 | private Long seq; // Sequence 18 | private Long cts; // Timestamp from the match engine 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/TradeData.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | @Data 8 | @NoArgsConstructor 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class TradeData { 11 | private Long T; // Timestamp of the order filled 12 | private String s; // Symbol name 13 | private String S; // Side of taker (Buy, Sell) 14 | private String v; // Trade size 15 | private String p; // Trade price 16 | private String L; // Direction of price change 17 | private String i; // Trade ID 18 | private Boolean BT; // Whether it is a block trade order or not 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/WebSocketKlineMessage.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class WebSocketKlineMessage { 11 | private String topic; 12 | private String type; 13 | private Long ts; 14 | private List data; // Assuming 'data' is an array of KlineData objects 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/WebSocketLiquidationMessage.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | 6 | @Data 7 | @JsonIgnoreProperties(ignoreUnknown = true) 8 | public class WebSocketLiquidationMessage { 9 | private String topic; 10 | private String type; 11 | private Long ts; 12 | private LiquidationData data; // Assuming 'data' is an array of KlineData objects 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/WebSocketLtKlineMessage.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class WebSocketLtKlineMessage { 11 | private String topic; 12 | private String type; 13 | private Long ts; 14 | private List data; // Assuming 'data' is an array of LtKlineData objects 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/WebSocketLtTicketMessage.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class WebSocketLtTicketMessage { 11 | private String topic; 12 | private String type; 13 | private Long ts; 14 | private List data; // Assuming 'data' is an array of LtTicketData objects 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/WebSocketTickerMessage.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | 6 | @Data 7 | @JsonIgnoreProperties(ignoreUnknown = true) 8 | public class WebSocketTickerMessage { 9 | private String topic; 10 | private Long ts; 11 | private String type; 12 | private Long cs; 13 | private PublicTickerData data; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/WebSocketTradeMessage.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class WebSocketTradeMessage { 11 | private String id; 12 | private String topic; 13 | private String type; 14 | private Long ts; 15 | private List data; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/WebsocketLtNavMessage.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | public class WebsocketLtNavMessage { 11 | private String topic; 12 | private String type; 13 | private Long ts; 14 | private List data; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/domain/websocket_message/public_channel/WebsocketOrderbookMessage.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.domain.websocket_message.public_channel; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import lombok.Data; 5 | 6 | @Data 7 | @JsonIgnoreProperties(ignoreUnknown = true) 8 | public class WebsocketOrderbookMessage { 9 | private String topic; 10 | private String type; 11 | private Long ts; 12 | private PublicOrderBookData data; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/exception/BybitApiError.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.exception; 2 | 3 | import com.bybit.api.client.constant.BybitApiConstants; 4 | import org.apache.commons.lang3.builder.ToStringBuilder; 5 | 6 | /** 7 | * Bybit API error object. 8 | */ 9 | public class BybitApiError { 10 | 11 | /** 12 | * Error code. 13 | */ 14 | private int code; 15 | 16 | /** 17 | * Error message. 18 | */ 19 | private String msg; 20 | 21 | public int getCode() { 22 | return code; 23 | } 24 | 25 | public void setCode(int code) { 26 | this.code = code; 27 | } 28 | 29 | public String getMsg() { 30 | return msg; 31 | } 32 | 33 | public void setMsg(String msg) { 34 | this.msg = msg; 35 | } 36 | 37 | @Override 38 | public String toString() { 39 | return new ToStringBuilder(this, BybitApiConstants.TO_STRING_BUILDER_STYLE) 40 | .append("code", code) 41 | .append("msg", msg) 42 | .toString(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/exception/UnsupportedEventException.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.exception; 2 | 3 | public class UnsupportedEventException extends IllegalArgumentException { 4 | private static final long serialVersionUID = -1852755188564122928L; 5 | 6 | public UnsupportedEventException(String message) { 7 | super(message); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/log/LogOption.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.log; 2 | 3 | import lombok.Getter; 4 | 5 | @Getter 6 | public enum LogOption { 7 | SLF4J("slf4j"), 8 | OKHTTP3("okhttp3"), 9 | UNKNOWN("unknown"), 10 | CUSTOMIZE("customize"); 11 | 12 | private final String logOptionType; 13 | 14 | LogOption(String logOptionType) { 15 | this.logOptionType = logOptionType; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/restApi/BybitApiAccountRestClient.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.restApi; 2 | 3 | import com.bybit.api.client.domain.account.request.AccountDataRequest; 4 | import com.bybit.api.client.domain.account.request.BatchSetCollateralCoinRequest; 5 | 6 | public interface BybitApiAccountRestClient { 7 | // Account endpoints 8 | Object getWalletBalance(AccountDataRequest walletBalanceRequest); 9 | Object upgradeAccountToUTA(); 10 | Object getAccountBorrowHistory(AccountDataRequest borrowHistoryRequest); 11 | Object setAccountCollateralCoin(AccountDataRequest setCollateralCoinRequest); 12 | Object batchSetAccountCollateralCoin(BatchSetCollateralCoinRequest batchSetCollateralCoinRequest); 13 | Object getAccountCollateralInfo(AccountDataRequest request); 14 | Object getAccountCoinGeeks(AccountDataRequest request); 15 | Object getAccountFreeRate(AccountDataRequest getFeeRateRequest); 16 | Object getAccountInfo(); 17 | Object getTransactionLog(AccountDataRequest getTransactionLogRequest); 18 | Object setAccountMarginMode(AccountDataRequest request); 19 | Object setAccountSpotHedging(AccountDataRequest request); 20 | Object modifyAccountMMP(AccountDataRequest setMMPRequest); 21 | Object resetAccountMMP(AccountDataRequest request); 22 | Object getAccountMMPState(AccountDataRequest request); 23 | Object getAccountSMPGroup(); 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/restApi/BybitApiAsyncBrokerRestClient.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.restApi; 2 | 3 | import com.bybit.api.client.domain.broker.request.BrokerDataRequest; 4 | 5 | public interface BybitApiAsyncBrokerRestClient { 6 | // Broker endpoints 7 | void getBrokerEarningData(BrokerDataRequest brokerDataRequest, BybitApiCallback callback); 8 | void getBrokerAccountInfo(BybitApiCallback callback); 9 | void getSubAccountsDeposits(BrokerDataRequest brokerDataRequest, BybitApiCallback callback); 10 | void getSubAccountsDeposits(BybitApiCallback callback); 11 | void getVoucherSpec(BrokerDataRequest brokerDataRequest, BybitApiCallback callback); 12 | void issueVoucher(BrokerDataRequest brokerDataRequest, BybitApiCallback callback); 13 | void getIssuedVoucher(BrokerDataRequest brokerDataRequest, BybitApiCallback callback); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/restApi/BybitApiAsyncLendingRestClient.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.restApi; 2 | 3 | import com.bybit.api.client.domain.institution.LendingDataRequest; 4 | 5 | public interface BybitApiAsyncLendingRestClient { 6 | // Institution Endpoints 7 | void getInsProductInfo(LendingDataRequest lendingDataRequest, BybitApiCallback callback); 8 | void getInsMarginCoinInfo(LendingDataRequest lendingDataRequest, BybitApiCallback callback); 9 | void getInsLoanOrders(LendingDataRequest institutionLoanOrdersRequest, BybitApiCallback callback); 10 | void getInsRepayOrders(LendingDataRequest institutionRepayOrdersRequest, BybitApiCallback callback); 11 | void getInsLoanToValue(BybitApiCallback callback); 12 | void updateInstitutionLoanUid(LendingDataRequest lendingDataRequest, BybitApiCallback callback); 13 | 14 | // C2C Endpoints 15 | /* void getC2CLendingCoinInfo(LendingDataRequest lendingDataRequest, BybitApiCallback callback); 16 | void C2cLendingDepositFunds(LendingDataRequest lendingDataRequest, BybitApiCallback callback); 17 | void C2cLendingRedeemFunds(LendingDataRequest lendingDataRequest, BybitApiCallback callback); 18 | void C2cLendingRedeemCancel(LendingDataRequest lendingDataRequest, BybitApiCallback callback); 19 | void getC2cOrdersRecords(LendingDataRequest lendingDataRequest, BybitApiCallback callback); 20 | void getC2CLendingAccountInfo(LendingDataRequest lendingDataRequest, BybitApiCallback callback);*/ 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/restApi/BybitApiAsyncLoanRestClient.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.restApi; 2 | 3 | import com.bybit.api.client.domain.loan.request.CryptoLoanAdjustLtvRequest; 4 | import com.bybit.api.client.domain.loan.request.CryptoLoanBorrowRequest; 5 | import com.bybit.api.client.domain.loan.request.CryptoLoanDataRequest; 6 | import com.bybit.api.client.domain.loan.request.CryptoLoanRepayRequest; 7 | 8 | public interface BybitApiAsyncLoanRestClient { 9 | void getCollateralCoins(CryptoLoanDataRequest request, BybitApiCallback callback); 10 | void getBorrowableCoins(CryptoLoanDataRequest request, BybitApiCallback callback); 11 | void getAcctMortgageLoanLimit(CryptoLoanDataRequest request, BybitApiCallback callback); 12 | void borrow(CryptoLoanBorrowRequest request, BybitApiCallback callback); 13 | void repay(CryptoLoanRepayRequest request, BybitApiCallback callback); 14 | void adjustCollateralAmount(CryptoLoanAdjustLtvRequest request, BybitApiCallback callback); 15 | void getUnpaidOrders(CryptoLoanDataRequest request, BybitApiCallback callback); 16 | void getCompletedOrders(CryptoLoanDataRequest request, BybitApiCallback callback); 17 | void getRepayTransactions(CryptoLoanDataRequest request, BybitApiCallback callback); 18 | void getLtvAdjustmentHistory(CryptoLoanDataRequest request, BybitApiCallback callback); 19 | void getMaxReduceAmount(CryptoLoanDataRequest request, BybitApiCallback callback); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/restApi/BybitApiAsyncPositionRestClient.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.restApi; 2 | 3 | import com.bybit.api.client.domain.position.request.BatchMovePositionRequest; 4 | import com.bybit.api.client.domain.position.request.PositionDataRequest; 5 | 6 | public interface BybitApiAsyncPositionRestClient { 7 | // Position endpoints 8 | void getPositionInfo(PositionDataRequest positionListRequest, BybitApiCallback callback); 9 | void setPositionLeverage(PositionDataRequest setLeverageRequest, BybitApiCallback callback); 10 | void swithMarginRequest(PositionDataRequest switchMarginRequest, BybitApiCallback callback); 11 | void switchPositionMode(PositionDataRequest switchPositionModeRequest, BybitApiCallback callback); 12 | @Deprecated 13 | void setTpslMode(PositionDataRequest setTpSlModeRequest, BybitApiCallback callback); 14 | @Deprecated 15 | void setRiskLimit(PositionDataRequest setRiskLimitRequest, BybitApiCallback callback); 16 | void setTradingStop(PositionDataRequest tradingStopRequest, BybitApiCallback callback); 17 | void setAutoAddMargin(PositionDataRequest setAutoAddMarginRequest, BybitApiCallback callback); 18 | void modifyPositionMargin(PositionDataRequest modifyMarginRequest, BybitApiCallback callback); 19 | void getClosePnlList(PositionDataRequest closePnlHistoryRequest, BybitApiCallback callback); 20 | void getMovePositionHistory(PositionDataRequest movePositionHistoryRequest, BybitApiCallback callback); 21 | void batchMovePositions(BatchMovePositionRequest batchMovePositionRequest, BybitApiCallback callback); 22 | void confirmPositionRiskLimit(PositionDataRequest confirmNewRiskLimitRequest, BybitApiCallback callback); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/restApi/BybitApiBrokerRestClient.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.restApi; 2 | 3 | import com.bybit.api.client.domain.broker.request.BrokerDataRequest; 4 | 5 | public interface BybitApiBrokerRestClient { 6 | // Broker endpoints 7 | Object getBrokerEarningData(BrokerDataRequest brokerDataRequest); 8 | Object getBrokerAccountInfo(); 9 | Object getSubAccountsDeposits(BrokerDataRequest brokerDataRequest); 10 | Object getSubAccountsDeposits(); 11 | Object getVoucherSpec(BrokerDataRequest brokerDataRequest); 12 | Object issueVoucher(BrokerDataRequest brokerDataRequest); 13 | Object getIssuedVoucher(BrokerDataRequest brokerDataRequest); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/restApi/BybitApiCallback.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.restApi; 2 | 3 | /** 4 | * BybitApiCallback is a functional interface used together with the BybitApiAsyncClient to provide a non-blocking REST client. 5 | * 6 | * @param the return type from the callback 7 | */ 8 | public interface BybitApiCallback { 9 | 10 | /** 11 | * Called whenever a response comes back from the Bybit API. 12 | * 13 | * @param response the expected response object 14 | */ 15 | void onResponse(T response); 16 | 17 | /** 18 | * Called whenever an error occurs. 19 | * 20 | * @param cause the cause of the failure 21 | */ 22 | default void onFailure(Throwable cause) {} 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/restApi/BybitApiLendingRestClient.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.restApi; 2 | 3 | import com.bybit.api.client.domain.institution.LendingDataRequest; 4 | import com.bybit.api.client.domain.institution.clientLending.ClientLendingFundsRequest; 5 | import com.bybit.api.client.domain.institution.clientLending.ClientLendingOrderRecordsRequest; 6 | 7 | public interface BybitApiLendingRestClient { 8 | // Institution Endpoints 9 | Object getInsProductInfo(LendingDataRequest lendingDataRequest); 10 | Object getInsMarginCoinInfo(LendingDataRequest lendingDataRequest); 11 | Object getInsLoanOrders(LendingDataRequest lendingDataRequest); 12 | Object getInsRepayOrders(LendingDataRequest lendingDataRequest); 13 | Object getInsLoanToValue(); 14 | Object updateInstitutionLoanUid(LendingDataRequest lendingDataRequest); 15 | // C2C Endpoints 16 | /* Object getC2CLendingCoinInfo(LendingDataRequest lendingDataRequest); 17 | Object C2cLendingDepositFunds(LendingDataRequest lendingDataRequest); 18 | Object C2cLendingRedeemFunds(LendingDataRequest lendingDataRequest); 19 | Object C2cLendingRedeemCancel(LendingDataRequest lendingDataRequest); 20 | Object getC2cOrdersRecords(LendingDataRequest lendingDataRequest); 21 | Object getC2CLendingAccountInfo(LendingDataRequest lendingDataRequest);*/ 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/restApi/BybitApiLoanRestClient.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.restApi; 2 | 3 | import com.bybit.api.client.domain.loan.request.CryptoLoanAdjustLtvRequest; 4 | import com.bybit.api.client.domain.loan.request.CryptoLoanBorrowRequest; 5 | import com.bybit.api.client.domain.loan.request.CryptoLoanDataRequest; 6 | import com.bybit.api.client.domain.loan.request.CryptoLoanRepayRequest; 7 | 8 | public interface BybitApiLoanRestClient { 9 | Object getCollateralCoins(CryptoLoanDataRequest request); 10 | Object getBorrowableCoins(CryptoLoanDataRequest request); 11 | Object getAcctMortgageLoanLimit(CryptoLoanDataRequest request); 12 | Object borrow(CryptoLoanBorrowRequest borrowRequest); 13 | Object repay(CryptoLoanRepayRequest repayRequest); 14 | Object adjustCollateralAmount(CryptoLoanAdjustLtvRequest adjustLtvRequest); 15 | Object getUnpaidOrders(CryptoLoanDataRequest request); 16 | Object getCompletedOrders(CryptoLoanDataRequest request); 17 | Object getRepayTransactions(CryptoLoanDataRequest request); 18 | Object getLtvAdjustmentHistory(CryptoLoanDataRequest request); 19 | Object getMaxReduceAmount(CryptoLoanDataRequest request); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/restApi/BybitApiMarketRestClient.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.restApi; 2 | 3 | import com.bybit.api.client.domain.announcement.request.AnnouncementInfoRequest; 4 | import com.bybit.api.client.domain.market.request.MarketDataRequest; 5 | 6 | public interface BybitApiMarketRestClient { 7 | // Market Data 8 | Object getServerTime(); 9 | Object getMarketLinesData(MarketDataRequest marketKlineRequest); 10 | Object getMarketPriceLinesData(MarketDataRequest marketKlineRequest); 11 | Object getIndexPriceLinesData(MarketDataRequest marketKlineRequest); 12 | Object getPremiumIndexPriceLinesData(MarketDataRequest marketKlineRequest); 13 | Object getInstrumentsInfo(MarketDataRequest instrumentInfoRequest); 14 | Object getMarketOrderBook(MarketDataRequest marketOrderBookRequest); 15 | Object getMarketTickers(MarketDataRequest marketDataTickerRequest); 16 | Object getFundingHistory(MarketDataRequest fundingHistoryRequest); 17 | Object getRecentTradeData(MarketDataRequest recentTradeRequest); 18 | Object getOpenInterest(MarketDataRequest openInterestRequest); 19 | Object getHistoricalVolatility(MarketDataRequest HistoricalVolatilityRequest); 20 | Object getInsurance(MarketDataRequest marketDataRequest); 21 | Object getInsurance(); 22 | Object getRiskLimit(MarketDataRequest marketRiskLimitRequest); 23 | Object getDeliveryPrice(MarketDataRequest deliveryPriceRequest); 24 | Object getMarketAccountRatio(MarketDataRequest marketAccountRatioRequest); 25 | Object getAnnouncementInfo(MarketDataRequest announcementInfoRequest); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/restApi/BybitApiPositionRestClient.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.restApi; 2 | 3 | import com.bybit.api.client.domain.position.request.BatchMovePositionRequest; 4 | import com.bybit.api.client.domain.position.request.PositionDataRequest; 5 | 6 | public interface BybitApiPositionRestClient { 7 | // Position Data 8 | Object getPositionInfo(PositionDataRequest positionListRequest); 9 | Object setPositionLeverage(PositionDataRequest setLeverageRequest); 10 | Object swithMarginRequest(PositionDataRequest switchMarginRequest); 11 | Object switchPositionMode(PositionDataRequest switchPositionModeRequest); 12 | @Deprecated 13 | Object setTpslMode(PositionDataRequest setTpSlModeRequest); 14 | @Deprecated 15 | Object setRiskLimit(PositionDataRequest setRiskLimitRequest); 16 | Object setTradingStop(PositionDataRequest tradingStopRequest); 17 | Object setAutoAddMargin(PositionDataRequest setAutoAddMarginRequest); 18 | Object modifyPositionMargin(PositionDataRequest modifyMarginRequest); 19 | Object getClosePnlList(PositionDataRequest closePnlHistoryRequest); 20 | Object getMovePositionHistory(PositionDataRequest movePositionHistoryRequest); 21 | Object batchMovePositions(BatchMovePositionRequest batchMovePositionRequest); 22 | Object confirmPositionRiskLimit(PositionDataRequest confirmNewRiskLimitRequest); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/restApi/BybitApiTradeRestClient.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.restApi; 2 | 3 | import com.bybit.api.client.domain.position.request.PositionDataRequest; 4 | import com.bybit.api.client.domain.trade.request.BatchOrderRequest; 5 | import com.bybit.api.client.domain.trade.request.TradeOrderRequest; 6 | 7 | import java.io.IOException; 8 | import java.util.Map; 9 | 10 | public interface BybitApiTradeRestClient { 11 | 12 | // Trade 13 | Object getOrderHistory(TradeOrderRequest orderHistoryRequest); 14 | Object setDisconnectCancelAllTime(TradeOrderRequest setDcpRequest); 15 | Object getBorrowQuota(TradeOrderRequest borrowQuotaRequest); 16 | Object getOpenOrders(TradeOrderRequest order); 17 | Object getTradeHistory(TradeOrderRequest order); 18 | Object createOrder(TradeOrderRequest order); 19 | Object createOrder(Map payload); 20 | Object createOrder(String json) throws IOException; 21 | Object createBatchOrder(BatchOrderRequest batchOrderRequest); 22 | Object createBathOrder(Map payload); 23 | Object createBathOrder(String json) throws IOException; 24 | Object amendBatchOrder(BatchOrderRequest batchOrderRequest); 25 | Object amendBatchOrder(Map payload); 26 | Object amendBatchOrder(String json) throws IOException; 27 | Object cancelBatchOrder(BatchOrderRequest batchOrderRequest); 28 | Object cancelBatchOrder(Map payload); 29 | Object cancelBatchOrder(String json) throws IOException; 30 | Object cancelOrder(TradeOrderRequest order); 31 | Object cancelAllOrder(TradeOrderRequest order); 32 | Object amendOrder(TradeOrderRequest order); 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/restApi/BybitApiUserRestClient.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.restApi; 2 | 3 | import com.bybit.api.client.domain.preupgrade.PreUpgradeDataRequest; 4 | import com.bybit.api.client.domain.user.UserDataRequest; 5 | 6 | public interface BybitApiUserRestClient { 7 | // User Data 8 | Object createSubMember(UserDataRequest subUserRequest); 9 | Object createSubAPI(UserDataRequest createApiKeyRequest); 10 | Object getSubUIDList(); 11 | Object freezeSubMember(UserDataRequest freezeSubUIDRequest); 12 | Object getCurrentAPIKeyInfo(); 13 | Object getUIDWalletType(UserDataRequest userDataRequest); 14 | Object modifyMasterApiKey(UserDataRequest userDataRequest); 15 | Object modifySubApiKey(UserDataRequest userDataRequest); 16 | Object deleteMasterApiKey(); 17 | Object deleteSubApiKey(UserDataRequest userDataRequest); 18 | Object getAffiliateUserInfo(UserDataRequest userDataRequest); 19 | 20 | // Pre Upgrade 21 | Object getPreUpgradeOrderHistory(PreUpgradeDataRequest preupgradeOderHistoryRequest); 22 | Object getPreUpgradeTradeHistory(PreUpgradeDataRequest preUpgradeTradeHistoryRequest); 23 | Object getPreUpgradeClosePnl(PreUpgradeDataRequest preUpgradeClosePnlRequest); 24 | Object getPreUpgradeTransaction(PreUpgradeDataRequest preUpgradeTransactionRequest); 25 | Object getPreUpgradeOptionDelivery(PreUpgradeDataRequest preUpgradeOptionDeliveryRequest); 26 | Object getPreUpgradeUsdcSettlement(PreUpgradeDataRequest preUpgradeUsdcSettlementRequest); 27 | 28 | Object getSubUIDListUnlimited(UserDataRequest subUserRequest); 29 | Object getSubUIDListUnlimited(); 30 | Object getSubAccAllAPIKeyInfo(UserDataRequest subUserRequest); 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/security/SignatureGenerator.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.security; 2 | 3 | public interface SignatureGenerator { 4 | String auth(String payload); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/service/CategoryTypeSerializer.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.service; 2 | 3 | import com.bybit.api.client.domain.CategoryType; 4 | import com.fasterxml.jackson.core.JsonGenerator; 5 | import com.fasterxml.jackson.databind.SerializerProvider; 6 | import com.fasterxml.jackson.databind.JsonSerializer; 7 | 8 | import java.io.IOException; 9 | 10 | public class CategoryTypeSerializer extends JsonSerializer { 11 | @Override 12 | public void serialize(CategoryType value, JsonGenerator gen, SerializerProvider provider) throws IOException { 13 | gen.writeString(value.getCategoryTypeId()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/service/PositionIdxSerializer.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.service; 2 | 3 | import com.bybit.api.client.domain.trade.PositionIdx; 4 | import com.fasterxml.jackson.core.JsonGenerator; 5 | import com.fasterxml.jackson.databind.JsonSerializer; 6 | import com.fasterxml.jackson.databind.SerializerProvider; 7 | 8 | import java.io.IOException; 9 | 10 | public class PositionIdxSerializer extends JsonSerializer { 11 | @Override 12 | public void serialize(PositionIdx value, JsonGenerator gen, SerializerProvider provider) throws IOException { 13 | gen.writeNumber(value.getIndex()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/service/SideSerializer.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.service; 2 | 3 | import com.bybit.api.client.domain.trade.Side; 4 | import com.fasterxml.jackson.core.JsonGenerator; 5 | import com.fasterxml.jackson.databind.JsonSerializer; 6 | import com.fasterxml.jackson.databind.SerializerProvider; 7 | 8 | import java.io.IOException; 9 | 10 | public class SideSerializer extends JsonSerializer { 11 | @Override 12 | public void serialize(Side value, JsonGenerator gen, SerializerProvider provider) throws IOException { 13 | gen.writeString(value.getTransactionSide()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/service/SmpTypeSerializer.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.service; 2 | import com.bybit.api.client.domain.trade.SmpType; 3 | import com.fasterxml.jackson.core.JsonGenerator; 4 | import com.fasterxml.jackson.databind.SerializerProvider; 5 | import com.fasterxml.jackson.databind.JsonSerializer; 6 | 7 | import java.io.IOException; 8 | public class SmpTypeSerializer extends JsonSerializer { 9 | @Override 10 | public void serialize(SmpType value, JsonGenerator gen, SerializerProvider provider) throws IOException { 11 | gen.writeString(value.getDescription()); 12 | } 13 | } -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/service/StopOrderTypeSerializer.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.service; 2 | import com.bybit.api.client.domain.trade.StopOrderType; 3 | import com.fasterxml.jackson.core.JsonGenerator; 4 | import com.fasterxml.jackson.databind.SerializerProvider; 5 | import com.fasterxml.jackson.databind.JsonSerializer; 6 | 7 | import java.io.IOException; 8 | public class StopOrderTypeSerializer extends JsonSerializer{ 9 | @Override 10 | public void serialize(StopOrderType value, JsonGenerator gen, SerializerProvider provider) throws IOException { 11 | gen.writeString(value.getDescription()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/service/TimeInForceSerializer.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.service; 2 | import com.bybit.api.client.domain.trade.TimeInForce; 3 | import com.fasterxml.jackson.core.JsonGenerator; 4 | import com.fasterxml.jackson.databind.SerializerProvider; 5 | import com.fasterxml.jackson.databind.JsonSerializer; 6 | 7 | import java.io.IOException; 8 | public class TimeInForceSerializer extends JsonSerializer { 9 | @Override 10 | public void serialize(TimeInForce value, JsonGenerator gen, SerializerProvider provider) throws IOException { 11 | gen.writeString(value.getDescription()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/service/TradeOrderTypeSerializer.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.service; 2 | 3 | import com.bybit.api.client.domain.TradeOrderType; 4 | import com.fasterxml.jackson.core.JsonGenerator; 5 | import com.fasterxml.jackson.databind.JsonSerializer; 6 | import com.fasterxml.jackson.databind.SerializerProvider; 7 | 8 | import java.io.IOException; 9 | 10 | public class TradeOrderTypeSerializer extends JsonSerializer { 11 | @Override 12 | public void serialize(TradeOrderType value, JsonGenerator gen, SerializerProvider provider) throws IOException { 13 | gen.writeString(value.getOType()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/service/TriggerBySerializer.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.service; 2 | import com.bybit.api.client.domain.TriggerBy; 3 | import com.fasterxml.jackson.core.JsonGenerator; 4 | import com.fasterxml.jackson.databind.SerializerProvider; 5 | import com.fasterxml.jackson.databind.JsonSerializer; 6 | 7 | import java.io.IOException; 8 | public class TriggerBySerializer extends JsonSerializer { 9 | @Override 10 | public void serialize(TriggerBy value, JsonGenerator gen, SerializerProvider provider) throws IOException { 11 | gen.writeString(value.getTrigger()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/util/RequestBuilder.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.util; 2 | 3 | import okhttp3.MediaType; 4 | import okhttp3.Request; 5 | 6 | public final class RequestBuilder { 7 | private static final MediaType JSON_TYPE = MediaType.parse("application/json; charset=utf-8"); 8 | private static final String USER_AGENT = "binance-connector-java/3.2.0"; 9 | private static final String CONTENT_TYPE = "application/x-www-form-urlencoded"; 10 | 11 | private RequestBuilder() { 12 | } 13 | public static Request buildWebSocketRequest(String fullUrl) { 14 | return new Request.Builder().url(fullUrl).build(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/util/RequestType.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.util; 2 | 3 | public enum RequestType { 4 | PUBLIC, 5 | SIGNED 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/websocket/api/WebSocketApiModule.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.websocket.api; 2 | 3 | public interface WebSocketApiModule { 4 | } 5 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/websocket/callback/WebSocketClosedCallback.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.websocket.callback; 2 | 3 | @FunctionalInterface 4 | public interface WebSocketClosedCallback { 5 | /** 6 | * onclosed will be called when websocket connection has been successfully released. No further calls to this listener will be made. 7 | * 8 | * @param code The code send by server. 9 | * @param reason The reason send by server. 10 | */ 11 | 12 | void onClosed(int code, String reason); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/websocket/callback/WebSocketClosingCallback.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.websocket.callback; 2 | 3 | @FunctionalInterface 4 | public interface WebSocketClosingCallback { 5 | /** 6 | * onClosing will be called when websocket is informed that no more incoming messages will be transmitted. 7 | * 8 | * @param code The code send by server. 9 | * @param reason The reason send by server. 10 | */ 11 | void onClosing(int code, String reason); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/websocket/callback/WebSocketFailureCallback.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.websocket.callback; 2 | 3 | import okhttp3.Response; 4 | 5 | @FunctionalInterface 6 | public interface WebSocketFailureCallback { 7 | /** 8 | * onFailure will be called when the websocket has been closed and an error has occurred. 9 | * 10 | * @param t The exception thrown by server. 11 | * @param response The associated response. 12 | */ 13 | void onFailure(Throwable t, Response response); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/websocket/callback/WebSocketMessageCallback.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.websocket.callback; 2 | 3 | import com.fasterxml.jackson.core.JsonProcessingException; 4 | 5 | @FunctionalInterface 6 | public interface WebSocketMessageCallback { 7 | void onMessage(String message) throws JsonProcessingException; 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/websocket/callback/WebSocketOpenCallback.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.websocket.callback; 2 | 3 | import okhttp3.Response; 4 | 5 | @FunctionalInterface 6 | public interface WebSocketOpenCallback { 7 | /** 8 | * onOpen will be called when the websocket has been accepted by server and may begin transmitting messages. 9 | * 10 | * @param response The response send by server. 11 | */ 12 | void onOpen(Response response); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/websocket/enums/Category.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.websocket.enums; 2 | 3 | public enum Category { 4 | ACCOUNT, 5 | AUTH, 6 | GENERAL, 7 | MARKET, 8 | TRADE, 9 | USER_DATA_STREAM 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/websocket/httpclient/WebSocketApiClient.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.websocket.httpclient; 2 | 3 | import com.bybit.api.client.websocket.api.WebSocketApiAuth; 4 | import com.bybit.api.client.websocket.api.WebSocketApiTrade; 5 | import com.bybit.api.client.websocket.callback.*; 6 | 7 | public interface WebSocketApiClient { 8 | void connect(WebSocketMessageCallback onMessageCallback); 9 | void connect(WebSocketOpenCallback onOpenCallback, WebSocketMessageCallback onMessageCallback, WebSocketClosingCallback onClosingCallback, WebSocketClosedCallback onClosedCallback, WebSocketFailureCallback onFailureCallback); 10 | void close(); 11 | WebSocketApiAuth auth(); 12 | WebSocketApiTrade trade(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/websocket/httpclient/WebSocketApiHttpClientSingleton.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.websocket.httpclient; 2 | 3 | import lombok.Getter; 4 | import okhttp3.OkHttpClient; 5 | 6 | public final class WebSocketApiHttpClientSingleton { 7 | @Getter 8 | private static final OkHttpClient httpClient = new OkHttpClient(); 9 | 10 | private WebSocketApiHttpClientSingleton() { 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/bybit/api/client/websocket/httpclient/WebSocketStreamHttpClientSingleton.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.client.websocket.httpclient; 2 | 3 | import lombok.Getter; 4 | import okhttp3.OkHttpClient; 5 | import okhttp3.Request; 6 | import okhttp3.WebSocket; 7 | import okhttp3.WebSocketListener; 8 | 9 | import static com.bybit.api.client.log.Slf4jLoggingInterceptor.HandleLoggingInterceptor; 10 | 11 | @Getter 12 | public final class WebSocketStreamHttpClientSingleton { 13 | private final boolean debugMode; 14 | private final String logOption; 15 | 16 | private WebSocketStreamHttpClientSingleton(boolean debugMode, String logOption) { 17 | this.debugMode = debugMode; 18 | this.logOption = logOption; 19 | } 20 | 21 | public static WebSocketStreamHttpClientSingleton createInstance(boolean debugMode, String logOption) { 22 | return new WebSocketStreamHttpClientSingleton(debugMode, logOption); 23 | } 24 | 25 | public OkHttpClient createOkHttpClient(boolean debugMode, String logOption) { 26 | OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder(); 27 | if (debugMode) { 28 | HandleLoggingInterceptor(clientBuilder, logOption); 29 | } 30 | return clientBuilder.build(); 31 | } 32 | 33 | public WebSocket createWebSocket(String url, WebSocketListener listener) { 34 | Request request = new Request.Builder().url(url).build(); 35 | OkHttpClient okHttpClient = createOkHttpClient(debugMode, logOption); 36 | return okHttpClient.newWebSocket(request, listener); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/domain/account/AccountBalanceTest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.domain.account; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.account.AccountType; 5 | import com.bybit.api.client.domain.account.SpotHedgingMode; 6 | import com.bybit.api.client.domain.account.request.AccountDataRequest; 7 | import com.bybit.api.client.restApi.BybitApiAccountRestClient; 8 | import com.bybit.api.client.service.BybitApiClientFactory; 9 | import org.junit.Test; 10 | 11 | public class AccountBalanceTest { 12 | BybitApiAccountRestClient client = BybitApiClientFactory.newInstance("d08Wh6P037IXAvcrL2", "gLfd1BLGU9oq6YoRZRlwXkIQRYB4n5KvXDvv", BybitApiConfig.TESTNET_DOMAIN).newAccountRestClient(); 13 | 14 | @Test 15 | public void Test_GetAccountBalance() { 16 | var unifyWalletBalanceRequest = AccountDataRequest.builder().accountType(AccountType.UNIFIED).build(); 17 | var result = client.getWalletBalance(unifyWalletBalanceRequest); 18 | System.out.println(result); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/domain/account/SetMarginModeTest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.domain.account; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.account.SpotHedgingMode; 5 | import com.bybit.api.client.domain.account.request.AccountDataRequest; 6 | import com.bybit.api.client.domain.position.MarginMode; 7 | import com.bybit.api.client.restApi.BybitApiAccountRestClient; 8 | import com.bybit.api.client.service.BybitApiClientFactory; 9 | import org.junit.Test; 10 | 11 | public class SetMarginModeTest { 12 | BybitApiAccountRestClient client = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET", BybitApiConfig.TESTNET_DOMAIN).newAccountRestClient(); 13 | @Test 14 | public void Test_SetMarginMode() 15 | { 16 | var setAccountMarginModeRequest = AccountDataRequest.builder().setMarginMode(MarginMode.CROSS_MARGIN).build(); 17 | var marginModeResult = client.setAccountMarginMode(setAccountMarginModeRequest); 18 | System.out.println(marginModeResult); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/domain/account/SpotHedgeTest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.domain.account; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.account.SpotHedgingMode; 5 | import com.bybit.api.client.domain.account.request.AccountDataRequest; 6 | import com.bybit.api.client.restApi.BybitApiAccountRestClient; 7 | import com.bybit.api.client.service.BybitApiClientFactory; 8 | import org.junit.Test; 9 | 10 | public class SpotHedgeTest { 11 | BybitApiAccountRestClient client = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET", BybitApiConfig.TESTNET_DOMAIN).newAccountRestClient(); 12 | @Test 13 | public void Test_SpotHedgingMode() 14 | { 15 | var spotHedgingMode = AccountDataRequest.builder().setHedgingMode(SpotHedgingMode.ON).build(); 16 | var setAccountSpotHedging = client.setAccountSpotHedging(spotHedgingMode); 17 | System.out.println(setAccountSpotHedging); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/domain/account/TransactionLogTest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.domain.account; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.account.CollateralSwitch; 5 | import com.bybit.api.client.domain.account.request.AccountDataRequest; 6 | import com.bybit.api.client.domain.account.request.BatchSetCollateralCoinRequest; 7 | import com.bybit.api.client.domain.account.request.SetCollateralCoinRequest; 8 | import com.bybit.api.client.domain.user.IsUta; 9 | import com.bybit.api.client.restApi.BybitApiAccountRestClient; 10 | import com.bybit.api.client.service.BybitApiClientFactory; 11 | import org.junit.Test; 12 | 13 | import java.util.Arrays; 14 | 15 | public class TransactionLogTest { 16 | @Test 17 | public void Test_UTAAccountGetTransaction() 18 | { 19 | BybitApiAccountRestClient client = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET", BybitApiConfig.TESTNET_DOMAIN).newAccountRestClient(); 20 | var transactionLogRequest = AccountDataRequest.builder().build(); 21 | var result = client.getTransactionLog(transactionLogRequest); 22 | System.out.println(result); 23 | } 24 | 25 | @Test 26 | public void Test_ClassicalAccountGetTransaction() 27 | { 28 | BybitApiAccountRestClient client = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET", BybitApiConfig.TESTNET_DOMAIN).newAccountRestClient(); 29 | var transactionLogRequest = AccountDataRequest.builder().isUta(IsUta.CLASSIC_ACCOUNT).build(); 30 | var result = client.getTransactionLog(transactionLogRequest); 31 | System.out.println(result); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/domain/asset/AccountTransferTest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.domain.asset; 2 | 3 | import com.bybit.api.client.domain.account.AccountType; 4 | import com.bybit.api.client.domain.asset.request.AssetDataRequest; 5 | import com.bybit.api.client.restApi.BybitApiAssetRestClient; 6 | import com.bybit.api.client.service.BybitApiClientFactory; 7 | import org.junit.Test; 8 | 9 | public class AccountTransferTest { 10 | BybitApiClientFactory factory = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET"); 11 | BybitApiAssetRestClient client = factory.newAssetRestClient(); 12 | @Test 13 | public void Test_AssetTransferMasterToSubClassical() 14 | { 15 | var universalTransferRequest = AssetDataRequest.builder().coin("USDT").amount("10").fromMemberId(1553904).toMemberId(100366706).fromAccountType(AccountType.FUND).toAccountType(AccountType.SPOT).build(); 16 | var universalTransfer = client.createAssetUniversalTransfer(universalTransferRequest); 17 | System.out.println(universalTransfer); 18 | } 19 | 20 | @Test 21 | public void Test_AssetTransferMasterToSubCustodian() 22 | { 23 | var universalTransferRequest = AssetDataRequest.builder().coin("USDT").amount("14").fromMemberId(1553904).toMemberId(100402546).fromAccountType(AccountType.FUND).toAccountType(AccountType.SPOT).build(); 24 | var universalTransfer = client.createAssetUniversalTransfer(universalTransferRequest); 25 | System.out.println(universalTransfer); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/domain/asset/AssetWithdrawTest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.domain.asset; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.account.AccountType; 5 | import com.bybit.api.client.domain.asset.request.AssetDataRequest; 6 | import com.bybit.api.client.domain.user.ReadOnlyStatus; 7 | import com.bybit.api.client.domain.user.UserDataRequest; 8 | import com.bybit.api.client.domain.user.UserPermissionsMap; 9 | import com.bybit.api.client.restApi.BybitApiAssetRestClient; 10 | import com.bybit.api.client.service.BybitApiClientFactory; 11 | import org.junit.Test; 12 | 13 | import java.util.List; 14 | import java.util.Map; 15 | 16 | public class AssetWithdrawTest { 17 | BybitApiClientFactory factory = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET", BybitApiConfig.TESTNET_DOMAIN); 18 | BybitApiAssetRestClient client = factory.newAssetRestClient(); 19 | 20 | @Test 21 | public void Test_AssetWithdraw() { 22 | Map beneficiary = Map.of( 23 | "vaspEntityId", "test", 24 | "beneficiaryName", "test" 25 | ); 26 | var assetWithdrawRequest = AssetDataRequest.builder().coin("USDT") 27 | .chain("ETH") 28 | .address("xxxxxxxx") 29 | .amount("100") 30 | .forceChain(0) 31 | .accountType(AccountType.FUND) 32 | .beneficiaryMap(beneficiary) 33 | .build(); 34 | var subUser = client.createAssetWithdraw(assetWithdrawRequest); 35 | System.out.println(subUser); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/domain/asset/CoinBalanceTest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.domain.asset; 2 | 3 | import com.bybit.api.client.restApi.BybitApiAssetRestClient; 4 | import com.bybit.api.client.domain.account.AccountType; 5 | import com.bybit.api.client.domain.asset.request.AssetDataRequest; 6 | import com.bybit.api.client.domain.asset.WithBonus; 7 | import com.bybit.api.client.service.BybitApiClientFactory; 8 | import org.junit.Test; 9 | 10 | public class CoinBalanceTest { 11 | BybitApiClientFactory factory = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET"); 12 | BybitApiAssetRestClient client = factory.newAssetRestClient(); 13 | @Test 14 | public void Test_GetSingleCoinBalance() 15 | { 16 | var SingleCoinBalanceRequest = AssetDataRequest.builder().accountType(AccountType.UNIFIED).coin("USDT").withBonus(WithBonus.QUERY).build(); 17 | var SingleCoinBalance = client.getAssetSingleCoinBalance(SingleCoinBalanceRequest); 18 | System.out.println(SingleCoinBalance); 19 | } 20 | 21 | @Test 22 | public void Test_GetAllCoinsBalance() 23 | { 24 | var allCoinsBalanceRequest = AssetDataRequest.builder().accountType(AccountType.UNIFIED).withBonus(WithBonus.QUERY).build(); 25 | var allCoinsBalance = client.getAssetAllCoinsBalance(allCoinsBalanceRequest); 26 | System.out.println(allCoinsBalance); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/domain/market/TickerInfoIndexPriceTest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.domain.market; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.CategoryType; 5 | import com.bybit.api.client.domain.market.request.MarketDataRequest; 6 | import com.bybit.api.client.service.BybitApiClientFactory; 7 | import org.junit.Test; 8 | 9 | public class TickerInfoIndexPriceTest { 10 | @Test 11 | public void Test_IndexPrice() 12 | { 13 | var client = BybitApiClientFactory.newInstance().newAsyncMarketDataRestClient(); 14 | 15 | var spotTickerRequest = MarketDataRequest.builder().category(CategoryType.SPOT).symbol("BTCUSDT").build(); 16 | var inverseTickerRequest = MarketDataRequest.builder().category(CategoryType.INVERSE).symbol("BTCUSD").build(); 17 | // spot ticker 18 | client.getMarketTickers(spotTickerRequest, System.out::println); 19 | // inverse ticker 20 | client.getMarketTickers(inverseTickerRequest, System.out::println); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/domain/position/PositionListCursotTest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.domain.position; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.CategoryType; 5 | import com.bybit.api.client.domain.position.request.PositionDataRequest; 6 | import com.bybit.api.client.restApi.BybitApiPositionRestClient; 7 | import com.bybit.api.client.service.BybitApiClientFactory; 8 | import org.junit.Test; 9 | 10 | public class PositionListCursotTest { 11 | BybitApiPositionRestClient client = BybitApiClientFactory.newInstance("d08Wh6P037IXAvcrL2", "gLfd1BLGU9oq6YoRZRlwXkIQRYB4n5KvXDvv", BybitApiConfig.TESTNET_DOMAIN).newPositionRestClient(); 12 | @Test 13 | public void Test_SwitchPositionMode() 14 | { 15 | var positionDataRequest = PositionDataRequest.builder().category(CategoryType.LINEAR).symbol("XRPUSDT").cursor("XRPUSDT%2C1709884800016%2C0").limit(1).build(); 16 | var switchModeResult = client.getPositionInfo(positionDataRequest); 17 | System.out.println(switchModeResult); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/domain/position/SwitchPositionModeTest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.domain.position; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.CategoryType; 5 | import com.bybit.api.client.domain.position.PositionMode; 6 | import com.bybit.api.client.domain.position.request.PositionDataRequest; 7 | import com.bybit.api.client.restApi.BybitApiPositionRestClient; 8 | import com.bybit.api.client.service.BybitApiClientFactory; 9 | import org.junit.Test; 10 | 11 | public class SwitchPositionModeTest { 12 | BybitApiPositionRestClient client = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET", BybitApiConfig.TESTNET_DOMAIN).newPositionRestClient(); 13 | @Test 14 | public void Test_SwitchPositionMode() 15 | { 16 | var switchPositionMode = PositionDataRequest.builder().category(CategoryType.LINEAR).symbol("BTCUSDT").positionMode(PositionMode.MERGED_SINGLE).build(); 17 | var switchModeResult = client.switchPositionMode(switchPositionMode); 18 | System.out.println(switchModeResult); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/domain/spot_margin/SpotMarginTradeTest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.domain.spot_margin; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.CategoryType; 5 | import com.bybit.api.client.domain.position.MovePositionStatus; 6 | import com.bybit.api.client.domain.position.request.BatchMovePositionRequest; 7 | import com.bybit.api.client.domain.position.request.MovePositionDetailsRequest; 8 | import com.bybit.api.client.domain.position.request.PositionDataRequest; 9 | import com.bybit.api.client.domain.trade.Side; 10 | import com.bybit.api.client.restApi.BybitApiAssetRestClient; 11 | import com.bybit.api.client.restApi.BybitApiPositionRestClient; 12 | import com.bybit.api.client.restApi.BybitApiSpotMarginRestClient; 13 | import com.bybit.api.client.service.BybitApiClientFactory; 14 | import org.junit.Test; 15 | 16 | import java.util.Arrays; 17 | 18 | public class SpotMarginTradeTest { 19 | BybitApiSpotMarginRestClient client = BybitApiClientFactory.newInstance("xx", "xxx", BybitApiConfig.TESTNET_DOMAIN).newSpotMarginRestClient(); 20 | 21 | @Test 22 | public void Test_MovePositions() 23 | { 24 | // Toggle Margin Trade 25 | var utaToggleMarginTradeResult = client.setUTASpotMarginTrade("0"); 26 | System.out.println(utaToggleMarginTradeResult); 27 | 28 | // Set Leverage 29 | var utaLeverageResult = client.setUTASpotMarginTradeLeverage("2"); 30 | System.out.println(utaLeverageResult); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/domain/trade/OrderHistoryTest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.domain.trade; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.CategoryType; 5 | import com.bybit.api.client.domain.trade.request.TradeOrderRequest; 6 | import com.bybit.api.client.restApi.BybitApiTradeRestClient; 7 | import com.bybit.api.client.service.BybitApiClientFactory; 8 | import org.junit.Test; 9 | 10 | public class OrderHistoryTest { 11 | BybitApiTradeRestClient client = BybitApiClientFactory.newInstance("d08Wh6P037IXAvcrL2", "gLfd1BLGU9oq6YoRZRlwXkIQRYB4n5KvXDvv", BybitApiConfig.TESTNET_DOMAIN).newTradeRestClient(); 12 | 13 | @Test 14 | public void Test_GetSpotOrderHistoryWithCursor(){ 15 | var orderHistoryRequest = TradeOrderRequest.builder().category(CategoryType.SPOT) 16 | .cursor("1659014836933362176%3A1712505980064%2C1659014836933362176%3A1712505980064") 17 | .limit(1) 18 | .build(); 19 | var orderResult = client.getOrderHistory(orderHistoryRequest); 20 | System.out.println(orderResult); 21 | } 22 | } 23 | // ts 1712507631016 24 | // payload category=spot&cursor=1659014836933362176%3A1712505980064%2C1659014836933362176%3A1712505980064&limit=1' 25 | // paramStr 17125076310168wYkmpLsMg10eNQyPm5000category=spot&cursor=1659014836933362176%3A1712505980064%2C1659014836933362176%3A1712505980064&limit=1 26 | // paramStr 17125100678938wYkmpLsMg10eNQyPm5000category=spot&cursor=1659014836933362176%253A1712505980064%252C1659014836933362176%253A1712505980064&limit=1 27 | // python signature d6ca6db7ccd6b661f901792a77847da17a55f8c1552c431731e52c3f4e2fb85e 28 | // java signature b913fc1d8455650feb64c0279c550d8fd108b99a7493208b4292bfe63e9e667a -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/domain/user/UserAPIKeyTest.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.domain.user; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.user.*; 5 | import com.bybit.api.client.restApi.BybitApiUserRestClient; 6 | import com.bybit.api.client.service.BybitApiClientFactory; 7 | import org.junit.Test; 8 | 9 | public class UserAPIKeyTest { 10 | BybitApiUserRestClient client = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET", BybitApiConfig.TESTNET_DOMAIN).newUserRestClient(); 11 | 12 | @Test 13 | public void Test_GetSubUsersInfo(){ 14 | System.out.println(client.getSubUIDList()); 15 | } 16 | 17 | @Test 18 | public void Test_GetSubUsersInfoUnlimited(){ 19 | var subUserRequest = UserDataRequest.builder().pageSize("100") 20 | .build(); 21 | System.out.println(client.getSubUIDListUnlimited(subUserRequest)); 22 | } 23 | 24 | @Test 25 | public void Test_GetSubUsersInfoUnlimitedNoParams(){ 26 | System.out.println(client.getSubUIDListUnlimited()); 27 | } 28 | 29 | @Test 30 | public void Test_GetSubAccAllAPIKeyInfo() { 31 | var subUserRequest = UserDataRequest.builder().subMemberId("101583835") 32 | .build(); 33 | var subAccAllAPIKeyInfo = client.getSubAccAllAPIKeyInfo(subUserRequest); 34 | System.out.println(subAccAllAPIKeyInfo); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/examples/Websocket/api/WsStreamAPITrade.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.examples.Websocket.api; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.service.BybitApiClientFactory; 5 | 6 | import java.util.Map; 7 | 8 | import static com.bybit.api.client.config.BybitApiConfig.V5_TRADE; 9 | 10 | public class WsStreamAPITrade { 11 | public static void main(String[] args) { 12 | var client = BybitApiClientFactory.newInstance("8wYkmpLsMg10eNQyPm", "Ouxc34myDnXvei54XsBZgoQzfGxO4bkr2Zsj", BybitApiConfig.STREAM_TESTNET_DOMAIN).newWebsocketClient(20); 13 | var webSocket = client.getTradeChannelStream(Map.of("reqId", "test-001", "category", "spot", "symbol", "XRPUSDT", 14 | "side", "Buy", "orderType", "Market", "qty", "10", "orderLinkId", "t0003"), V5_TRADE); 15 | 16 | client.sendSubscribeMessage(webSocket, Map.of("reqId", "test-002", "category", "spot", "symbol", "XRPUSDT", 17 | "side", "Buy", "orderType", "Market", "qty", "10","orderLinkId", "t0004")); 18 | 19 | // Close websocket 20 | //client.onClose(webSocket, 1000, "close normal"); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/examples/Websocket/api/WsStreamWithWsApiTrade.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.examples.Websocket.api; 2 | 3 | import com.bybit.api.client.security.HmacSHA256Signer; 4 | import com.bybit.api.client.websocket.httpclient.WebSocketApiClient; 5 | import com.bybit.api.client.websocket.impl.WebSocketApiClientImpl; 6 | import org.json.JSONObject; 7 | 8 | import static com.bybit.api.client.config.BybitApiConfig.STREAM_TESTNET_DOMAIN; 9 | import static com.bybit.api.client.config.BybitApiConfig.V5_TRADE; 10 | 11 | public class WsStreamWithWsApiTrade { 12 | private static final double quantity = 0.01; 13 | private static final int waitTime = 5000; 14 | 15 | public static void main(String[] args) throws InterruptedException { 16 | 17 | // ws api call 18 | HmacSHA256Signer signatureGenerator = new HmacSHA256Signer("YOUR_API_SECRET"); 19 | WebSocketApiClient apiClient = new WebSocketApiClientImpl("YOUR_API_KEY", signatureGenerator, STREAM_TESTNET_DOMAIN+ V5_TRADE); 20 | apiClient.connect((System.out::println)); 21 | 22 | JSONObject params = new JSONObject(); 23 | params.put("quantity", quantity); 24 | 25 | apiClient.trade().newOrder("spot", "BTCUSDT", "BUY", "MARKET", "0.01", params); 26 | 27 | Thread.sleep(waitTime); 28 | 29 | // closing all connections 30 | apiClient.close(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/examples/Websocket/stream/WebsocketDebuggerExample.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.examples.Websocket.stream; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.service.BybitApiClientFactory; 5 | 6 | import java.util.List; 7 | 8 | public class WebsocketDebuggerExample { 9 | public static void main(String[] args) { 10 | var client = BybitApiClientFactory.newInstance(BybitApiConfig.STREAM_TESTNET_DOMAIN, true).newWebsocketClient(20); 11 | 12 | // Orderbook 13 | client.getPublicChannelStream(List.of("orderbook.50.MATICUSDT"), BybitApiConfig.V5_PUBLIC_LINEAR); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/examples/Websocket/stream/WebsocketPrivateChannelExamples.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.examples.Websocket.stream; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.service.BybitApiClientFactory; 5 | 6 | import java.util.List; 7 | 8 | public class WebsocketPrivateChannelExamples { 9 | public static void main(String[] args) { 10 | var client = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET", BybitApiConfig.STREAM_TESTNET_DOMAIN, true).newWebsocketClient(5, "60s", (message) -> System.out.println("Handle message :" + message)); 11 | // Position 12 | // client.getPrivateChannelStream(List.of("position"), BybitApiConfig.V5_PRIVATE); 13 | 14 | // Order 15 | var webSocket = client.getPrivateChannelStream(List.of("order"), BybitApiConfig.V5_PRIVATE); 16 | 17 | // Close websocket 18 | client.onClose(webSocket, 1000, "close normal"); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/examples/http/async/AnnouncementEndpointsExampleAsync.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.examples.http.async; 2 | 3 | import com.bybit.api.client.domain.announcement.LanguageSymbol; 4 | import com.bybit.api.client.domain.market.request.MarketDataRequest; 5 | import com.bybit.api.client.service.BybitApiClientFactory; 6 | 7 | public class AnnouncementEndpointsExampleAsync { 8 | public static void main(String[] args) { 9 | var client = BybitApiClientFactory.newInstance().newAsyncMarketDataRestClient(); 10 | 11 | // Get Announcement 12 | var announcementInfoRequest = MarketDataRequest.builder().locale(LanguageSymbol.EN_US).build(); 13 | client.getAnnouncementInfo(announcementInfoRequest, System.out::println); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/examples/http/async/InstituionAsyncExample.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.examples.http.async; 2 | 3 | import com.bybit.api.client.domain.institution.LendingDataRequest; 4 | import com.bybit.api.client.service.BybitApiClientFactory; 5 | 6 | public class InstituionAsyncExample { 7 | public static void main(String[] args) { 8 | var client = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET").newAsyncLendingRestClient(); 9 | 10 | // Get Product info 11 | var insProductInfoRequest = LendingDataRequest.builder().build(); 12 | client.getInsProductInfo(insProductInfoRequest, System.out::println); 13 | 14 | // Get Margin Coin info 15 | var insMarginCoinRequest = LendingDataRequest.builder().build(); 16 | client.getInsMarginCoinInfo(insMarginCoinRequest, System.out::println); 17 | 18 | // Get Loan Orders 19 | var insLoanOrderRequest = LendingDataRequest.builder().build(); 20 | client.getInsLoanOrders(insLoanOrderRequest, System.out::println); 21 | 22 | // Get Repay Orders 23 | var insRepayOrderRequest = LendingDataRequest.builder().build(); 24 | client.getInsRepayOrders(insRepayOrderRequest, System.out::println); 25 | 26 | // Get Loan to Value 27 | client.getInsLoanToValue(System.out::println); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/examples/http/async/UTASpotMarginAsyncExample.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.examples.http.async; 2 | 3 | import com.bybit.api.client.domain.spot.SpotMarginDataRequest; 4 | import com.bybit.api.client.domain.spot.SwitchStatus; 5 | import com.bybit.api.client.service.BybitApiClientFactory; 6 | 7 | public class UTASpotMarginAsyncExample { 8 | public static void main(String[] args) { 9 | var client = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET").newSpotMarginAsyncRestClient(); 10 | 11 | // Get VIP Margin Data 12 | var utaMarginDataRequest = SpotMarginDataRequest.builder().build(); 13 | client.getUtaVipSpotMarginTradeData(utaMarginDataRequest, System.out::println); 14 | 15 | // Toggle Margin Trade 16 | client.setUTASpotMarginTrade("0", System.out::println); 17 | 18 | // Set Leverage 19 | client.setUTASpotMarginTradeLeverage("2", System.out::println); 20 | 21 | // Set Status And Leverage 22 | client.getUTASpotMarginTradeLeverageState(System.out::println); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/examples/http/sync/AnnounceExample.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.examples.http.sync; 2 | 3 | import com.bybit.api.client.domain.announcement.LanguageSymbol; 4 | import com.bybit.api.client.domain.market.request.MarketDataRequest; 5 | import com.bybit.api.client.service.BybitApiClientFactory; 6 | 7 | public class AnnounceExample { 8 | public static void main(String[] args) { 9 | var client = BybitApiClientFactory.newInstance().newMarketDataRestClient(); 10 | 11 | // Get Announcement 12 | var announcementInfoRequest = MarketDataRequest.builder().locale(LanguageSymbol.EN_US).build(); 13 | var announceInfo = client.getAnnouncementInfo(announcementInfoRequest); 14 | System.out.println(announceInfo); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/examples/http/sync/C2CExample.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.examples.http.sync; 2 | 3 | import com.bybit.api.client.domain.institution.LendingDataRequest; 4 | import com.bybit.api.client.service.BybitApiClientFactory; 5 | 6 | public class C2CExample { 7 | public static void main(String[] args) { 8 | var client = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET").newLendingRestClient(); 9 | 10 | /* // Get Lending Coin 11 | var lendingCoinRequest = LendingDataRequest.builder().build(); 12 | var lendingCoinInfo = client.getC2CLendingCoinInfo(lendingCoinRequest); 13 | System.out.println(lendingCoinInfo); 14 | 15 | // Deposit Fund 16 | var despoitFundRequest = LendingDataRequest.builder().coin("USDT").quantity("100").build(); 17 | var depositFundResult = client.C2cLendingDepositFunds(despoitFundRequest); 18 | System.out.println(depositFundResult); 19 | 20 | // Redeem Fund 21 | var redeemFundResult = client.C2cLendingRedeemFunds(despoitFundRequest); 22 | System.out.println(redeemFundResult); 23 | 24 | // Get Order Records 25 | var c2cOrdersRecordsRequest = LendingDataRequest.builder().build(); 26 | var c2cOrdersRecords = client.getC2cOrdersRecords(c2cOrdersRecordsRequest); 27 | System.out.println(c2cOrdersRecords); 28 | 29 | // Get Lending Account 30 | var lendingAccountRequest = LendingDataRequest.builder().coin("USDT").build(); 31 | var lendingAccount = client.getC2CLendingAccountInfo(lendingAccountRequest); 32 | System.out.println(lendingAccount);*/ 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/examples/http/sync/InstituionExample.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.examples.http.sync; 2 | 3 | import com.bybit.api.client.domain.institution.LendingDataRequest; 4 | import com.bybit.api.client.service.BybitApiClientFactory; 5 | 6 | public class InstituionExample { 7 | public static void main(String[] args) { 8 | var client = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET").newLendingRestClient(); 9 | 10 | // Get Product info 11 | var insProductInfoRequest = LendingDataRequest.builder().build(); 12 | var insProductInfo = client.getInsProductInfo(insProductInfoRequest); 13 | System.out.println(insProductInfo); 14 | 15 | // Get Margin Coin info 16 | var insMarginCoinRequest = LendingDataRequest.builder().build(); 17 | var insMarginCoinInfo = client.getInsMarginCoinInfo(insMarginCoinRequest); 18 | System.out.println(insMarginCoinInfo); 19 | 20 | // Get Loan Orders 21 | var insLoanOrderRequest = LendingDataRequest.builder().build(); 22 | var insLoanOrders = client.getInsLoanOrders(insLoanOrderRequest); 23 | System.out.println(insLoanOrders); 24 | 25 | // Get Repay Orders 26 | var insRepayOrderRequest = LendingDataRequest.builder().build(); 27 | var insRepayOrders = client.getInsRepayOrders(insRepayOrderRequest); 28 | System.out.println(insRepayOrders); 29 | 30 | // Get Loan to Value 31 | var insLTVData = client.getInsLoanToValue(); 32 | System.out.println(insLTVData); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/examples/http/sync/SpotLeverageExample.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.examples.http.sync; 2 | 3 | import com.bybit.api.client.domain.spot.SpotMarginDataRequest; 4 | import com.bybit.api.client.service.BybitApiClientFactory; 5 | 6 | public class SpotLeverageExample { 7 | public static void main(String[] args) { 8 | var client = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET").newSpotMarginRestClient(); 9 | 10 | // Get Leverage Token info 11 | var spotLeverageInfoRequest = SpotMarginDataRequest.builder().build(); 12 | var spotLeverageTokenInfo = client.getSpotLeverageTokenInfo(spotLeverageInfoRequest); 13 | System.out.println(spotLeverageTokenInfo); 14 | 15 | // Get Leverage Token market 16 | var spotLeverageMarketRequest = SpotMarginDataRequest.builder().ltCoin("BTC3L").build(); 17 | var spotLeverageTokenReference = client.getSpotLeverageTokenMarket(spotLeverageMarketRequest); 18 | System.out.println(spotLeverageTokenReference); 19 | 20 | var spotLeverageRequest = SpotMarginDataRequest.builder().ltCoin("BTC3L").ltAmount("10").quantity("10").build(); 21 | // Purchase Leverage token 22 | var purchaseSpotLeverageResult = client.purchaseSpotLeverageToken(spotLeverageRequest); 23 | System.out.println(purchaseSpotLeverageResult); 24 | 25 | // Redeem Leverage token 26 | var redeemSpotLeverageResult = client.redeemSpotLeverageToken(spotLeverageRequest); 27 | System.out.println(redeemSpotLeverageResult); 28 | 29 | var spotLeverageRecordsRequest = SpotMarginDataRequest.builder().build(); 30 | var spotLeverageRecords = client.getSpotLeverageRecords(spotLeverageRecordsRequest); 31 | System.out.println(spotLeverageRecords); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/examples/http/sync/UTASpotMarginExample.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.examples.http.sync; 2 | 3 | import com.bybit.api.client.domain.spot.SpotMarginDataRequest; 4 | import com.bybit.api.client.domain.spot.SwitchStatus; 5 | import com.bybit.api.client.domain.spot.marginTrade.VIPMarginDataRequest; 6 | import com.bybit.api.client.service.BybitApiClientFactory; 7 | 8 | public class UTASpotMarginExample { 9 | public static void main(String[] args) { 10 | var client = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET").newSpotMarginRestClient(); 11 | 12 | // Get VIP Margin Data 13 | var utaMarginDataRequest = SpotMarginDataRequest.builder().build(); 14 | var utaMarginData = client.getUtaVipSpotMarginTradeData(utaMarginDataRequest); 15 | System.out.println(utaMarginData); 16 | 17 | // Toggle Margin Trade 18 | var utaToggleMarginTradeResult = client.setUTASpotMarginTrade("0"); 19 | System.out.println(utaToggleMarginTradeResult); 20 | 21 | // Set Leverage 22 | var utaLeverageResult = client.setUTASpotMarginTradeLeverage("2"); 23 | System.out.println(utaLeverageResult); 24 | 25 | // Get Status And Leverage 26 | var utaSpotLeverageState = client.getUTASpotMarginTradeLeverageState(); 27 | System.out.println(utaSpotLeverageState); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/websocket/stream/KlineChannelMessageHandler.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.websocket.stream; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.websocket_message.public_channel.WebSocketKlineMessage; 5 | import com.bybit.api.client.domain.websocket_message.public_channel.WebSocketTradeMessage; 6 | import com.bybit.api.client.service.BybitApiClientFactory; 7 | import com.fasterxml.jackson.databind.ObjectMapper; 8 | 9 | import java.util.List; 10 | 11 | public class KlineChannelMessageHandler { 12 | public static void main(String[] args) { 13 | var client = BybitApiClientFactory.newInstance(BybitApiConfig.STREAM_MAINNET_DOMAIN, true).newWebsocketClient(); 14 | 15 | client.setMessageHandler(message -> { 16 | var klineData = (new ObjectMapper()).readValue(message, WebSocketKlineMessage.class); 17 | // Process message data here 18 | System.out.println("Websocket Message Data: " + klineData.getData().toString()); 19 | }); 20 | 21 | // Kline 22 | client.getPublicChannelStream(List.of("kline.D.BTCUSDT"), BybitApiConfig.V5_PUBLIC_LINEAR); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/websocket/stream/LiquidationChannelMessageHandler.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.websocket.stream; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.websocket_message.public_channel.WebSocketLiquidationMessage; 5 | import com.bybit.api.client.service.BybitApiClientFactory; 6 | import com.fasterxml.jackson.databind.ObjectMapper; 7 | 8 | import java.util.List; 9 | 10 | public class LiquidationChannelMessageHandler { 11 | public static void main(String[] args) { 12 | var client = BybitApiClientFactory.newInstance(BybitApiConfig.STREAM_MAINNET_DOMAIN, true).newWebsocketClient(); 13 | 14 | client.setMessageHandler(message -> { 15 | var liquidationData = (new ObjectMapper()).readValue(message, WebSocketLiquidationMessage.class); 16 | // Process message data here 17 | System.out.println("Websocket Message Data: " + liquidationData.getData().toString()); 18 | }); 19 | 20 | // Liquidation 21 | client.getPublicChannelStream(List.of("liquidation.BTCUSDT"), BybitApiConfig.V5_PUBLIC_LINEAR); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/websocket/stream/OrderBookChannelMessageHandler.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.websocket.stream; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.websocket_message.public_channel.WebsocketOrderbookMessage; 5 | import com.bybit.api.client.service.BybitApiClientFactory; 6 | import com.fasterxml.jackson.databind.ObjectMapper; 7 | 8 | import java.util.List; 9 | 10 | public class OrderBookChannelMessageHandler { 11 | public static void main(String[] args) { 12 | var client = BybitApiClientFactory.newInstance(BybitApiConfig.STREAM_MAINNET_DOMAIN, true).newWebsocketClient(); 13 | 14 | client.setMessageHandler(message -> { 15 | var orderbookMessage = (new ObjectMapper()).readValue(message, WebsocketOrderbookMessage.class); 16 | // Process message data here 17 | System.out.println("Websocket Message Data: " + orderbookMessage.getData().toString()); 18 | }); 19 | 20 | // Order book 21 | client.getPublicChannelStream(List.of("orderbook.50.BTCUSDT"), BybitApiConfig.V5_PUBLIC_LINEAR); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/websocket/stream/OrderChannelMessageHandler.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.websocket.stream; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.websocket_message.private_channel.WebSocketOrderMessage; 5 | import com.bybit.api.client.service.BybitApiClientFactory; 6 | import com.fasterxml.jackson.databind.ObjectMapper; 7 | 8 | import java.util.List; 9 | 10 | public class OrderChannelMessageHandler { 11 | public static void main(String[] args) { 12 | var client = BybitApiClientFactory.newInstance("YOUR_API_KEY", "YOUR_API_SECRET", BybitApiConfig.STREAM_TESTNET_DOMAIN, true) 13 | .newWebsocketClient(5, "60s", (message) -> { 14 | var orderMessage = (new ObjectMapper()).readValue(message, WebSocketOrderMessage.class); 15 | // Process message data here 16 | System.out.println("Websocket Message Data: " + orderMessage.getData().toString()); 17 | }); 18 | 19 | // Order 20 | client.getPrivateChannelStream(List.of("order"), BybitApiConfig.V5_PRIVATE); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/websocket/stream/TickerChannelMessageHandler.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.websocket.stream; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.websocket_message.public_channel.WebSocketTickerMessage; 5 | import com.bybit.api.client.service.BybitApiClientFactory; 6 | import com.fasterxml.jackson.databind.ObjectMapper; 7 | 8 | import java.util.List; 9 | 10 | public class TickerChannelMessageHandler { 11 | public static void main(String[] args) { 12 | var client = BybitApiClientFactory.newInstance(BybitApiConfig.STREAM_MAINNET_DOMAIN, true).newWebsocketClient(); 13 | 14 | client.setMessageHandler(message -> { 15 | var tickerData = (new ObjectMapper()).readValue(message, WebSocketTickerMessage.class); 16 | // Process message data here 17 | System.out.println("Websocket Message Data: " + tickerData.getData().toString()); 18 | }); 19 | 20 | // Ticker 21 | client.getPublicChannelStream(List.of("tickers.BTCUSDT"), BybitApiConfig.V5_PUBLIC_LINEAR); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/test/java/com/bybit/api/websocket/stream/TradeChannelMessageHandler.java: -------------------------------------------------------------------------------- 1 | package com.bybit.api.websocket.stream; 2 | 3 | import com.bybit.api.client.config.BybitApiConfig; 4 | import com.bybit.api.client.domain.websocket_message.public_channel.WebSocketTickerMessage; 5 | import com.bybit.api.client.domain.websocket_message.public_channel.WebSocketTradeMessage; 6 | import com.bybit.api.client.service.BybitApiClientFactory; 7 | import com.fasterxml.jackson.databind.ObjectMapper; 8 | 9 | import java.util.List; 10 | 11 | public class TradeChannelMessageHandler { 12 | public static void main(String[] args) { 13 | var client = BybitApiClientFactory.newInstance(BybitApiConfig.STREAM_MAINNET_DOMAIN, true).newWebsocketClient(); 14 | 15 | client.setMessageHandler(message -> { 16 | var tradeData = (new ObjectMapper()).readValue(message, WebSocketTradeMessage.class); 17 | // Process message data here 18 | System.out.println("Websocket Message Data: " + tradeData.getData().toString()); 19 | }); 20 | 21 | // Trade 22 | client.getPublicChannelStream(List.of("publicTrade.BTCUSDT"), BybitApiConfig.V5_PUBLIC_LINEAR); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /tokens/StoredCredential: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VictorFrWu/bybit-java-api/1dc9fe55219c5afa7e70a273b9dc8940e8dcf23f/tokens/StoredCredential --------------------------------------------------------------------------------