Summary
Coverage of the Kraken Spot REST API as of 2026-09-11, against Kraken’s OpenAPI spec (info.version: 1.1.0) and master at b4672b7 .
52 of 61 core endpoints are typed (85.2%). The 9 Trading endpoints are enum-only. Funding (Beta) has 15 additional operations without typed or enum support.
Coverage per group
Market Data — 12/12 typed ✅
Endpoint
Summary
Typed method(s)
Enum constant
Unit tests
Example / documentation
GET /public/Time
Get Server Time
serverTime() ✅
Public.TIME
No
SimpleExamples
GET /public/SystemStatus
Get System Status
systemStatus() ✅
Public.SYSTEM_STATUS
No
SimpleExamples
GET /public/MaintenanceSchedule
Get Maintenance Schedule
maintenanceSchedule() ✅
Public.MAINTENANCE_SCHEDULE
Yes
MarketDataExample
GET /public/Assets
Get Asset Info
assetInfo(List<String>); assetInfo(List<String>, String) ✅
Public.ASSETS
No
SimpleExamples — both overloads
GET /public/AssetPairs
Get Tradable Asset Pairs
assetPairs(); assetPairs(List<String>); assetPairs(List<String>, AssetPairParams.Info) ✅
Public.ASSET_PAIRS
No
SimpleExamples — list overloads; StakingRewardsSummaryExample — assetPairs()
GET /public/Ticker
Get Ticker Information
ticker(List<String>) ✅
Public.TICKER
No
StakingRewardsSummaryExample — ticker(List); SimpleExamples — generic query
GET /public/OHLC
Get OHLC Data
ohlc(String); ohlc(OhlcParams) ✅
Public.OHLC
Yes
MarketDataExample — ohlc(OhlcParams) only
GET /public/Depth
Get Order Book
orderBook(String); orderBook(OrderBookParams) ✅
Public.DEPTH
Yes
MarketDataExample — orderBook(OrderBookParams) only
POST /private/Level3
Query L3 Order Book
level3OrderBook(String); level3OrderBook(Level3OrderBookParams) ✅
Private.LEVEL3
Yes
None
GET /public/GroupedBook
Get Grouped Order Book
groupedOrderBook(String); groupedOrderBook(GroupedOrderBookParams) ✅
Public.GROUPED_BOOK
Yes
MarketDataExample — groupedOrderBook(GroupedOrderBookParams) only
GET /public/Trades
Get Recent Trades
recentTrades(String); recentTrades(RecentTradesParams) ✅
Public.TRADES
Yes
MarketDataExample — recentTrades(RecentTradesParams); SimpleExamples — raw query
GET /public/Spread
Get Recent Spreads
recentSpreads(String); recentSpreads(RecentSpreadsParams) ✅
Public.SPREAD
Yes
MarketDataExample — recentSpreads(String) only
Account Data — 20/20 typed ✅
Endpoint
Summary
Typed method(s)
Enum constant
Unit tests
Example / documentation
POST /private/Balance
Get Account Balance
accountBalance(); accountBalance(AccountBalanceParams) ✅
Private.BALANCE
Yes
README snippet — accountBalance(); SimpleExamples / EarnOverview use generic query(Private.BALANCE)
POST /private/BalanceEx
Get Extended Balance
extendedBalance(); extendedBalance(ExtendedBalanceParams) ✅
Private.BALANCE_EX
Yes
None
POST /private/CreditLines
Get Credit Lines
creditLines(); creditLines(CreditLinesParams) ✅
Private.CREDIT_LINES
Yes
None
POST /private/TradeBalance
Get Trade Balance
tradeBalance(); tradeBalance(TradeBalanceParams) ✅
Private.TRADE_BALANCE
Yes
None
POST /private/OpenOrders
Get Open Orders
openOrders(); openOrders(OpenOrdersParams) ✅
Private.OPEN_ORDERS
Yes
README snippet — params overload
POST /private/ClosedOrders
Get Closed Orders
closedOrders(); closedOrders(ClosedOrdersParams) ✅
Private.CLOSED_ORDERS
Yes
README snippet — params overload
POST /private/QueryOrders
Query Orders Info
queryOrders(QueryOrdersParams) ✅
Private.QUERY_ORDERS
Yes
None
POST /private/OrderAmends
Get Order Amends
orderAmends(); orderAmends(OrderAmendsParams) ✅
Private.ORDER_AMENDS
Yes
None
POST /private/TradesHistory
Get Trades History
tradesHistory(); tradesHistory(TradesHistoryParams) ✅
Private.TRADES_HISTORY
Yes
None
POST /private/QueryTrades
Query Trades Info
queryTrades(QueryTradesParams) ✅
Private.QUERY_TRADES
Yes
README snippet
POST /private/OpenPositions
Get Open Positions
openPositions(); openPositions(OpenPositionsParams) ✅
Private.OPEN_POSITIONS
Yes
None
POST /private/Ledgers
Get Ledgers Info
ledgerInfo(LedgerInfoParams) ✅
Private.LEDGERS
No
None
POST /private/QueryLedgers
Query Ledgers
ledgerEntries(LedgerEntriesParams) ✅
Private.QUERY_LEDGERS
No
None
POST /private/TradeVolume
Get Trade Volume
tradeVolume(); tradeVolume(TradeVolumeParams) ✅
Private.TRADE_VOLUME
Yes
README snippet — params overload
POST /private/AddExport
Request Export Report
requestReport(RequestReportParams) ✅
Private.ADD_EXPORT
No
ReportFetcher
POST /private/ExportStatus
Get Export Report Status
reportsStatuses(ReportType) ✅
Private.EXPORT_STATUS
No
ReportFetcher
POST /private/RetrieveExport
Retrieve Data Export
reportData(String) ✅
Private.RETRIEVE_EXPORT
No
ReportFetcher
POST /private/RemoveExport
Delete Export Report
deleteReport(String); cancelReport(String) ✅
Private.REMOVE_EXPORT
No
ReportFetcher — deleteReport(String) only; no cancelReport(String) example
POST /private/GetApiKeyInfo
Get API Key Info
apiKeyInfo(); apiKeyInfo(ApiKeyInfoParams) ✅
Private.GET_API_KEY_INFO
Yes
None
POST /private/ListWalletAccounts
List Wallet Accounts
walletAccounts(); walletAccounts(WalletAccountsParams) ✅
Private.LIST_WALLET_ACCOUNTS
Yes
None
Trading — 0/9 typed
Endpoint
Summary
Typed method(s)
Enum constant
Unit tests
Example / documentation
POST /private/AddOrder
Add Order
—
Private.ADD_ORDER
—
SimpleExamples — query(Private.ADD_ORDER, Map), validate=true
POST /private/AmendOrder
Amend Order
—
Private.AMEND_ORDER
—
None
POST /private/CancelOrder
Cancel Order
—
Private.CANCEL_ORDER
—
None
POST /private/CancelAll
Cancel All Orders
—
Private.CANCEL_ALL
—
None
POST /private/CancelAllOrdersAfter
Cancel All Orders After X
—
Private.CANCEL_ALL_ORDERS_AFTER
—
None
POST /private/GetWebSocketsToken
Get Websockets Token
—
Private.GET_WEBSOCKETS_TOKEN
—
None
POST /private/AddOrderBatch
Add Order Batch
—
Private.ADD_ORDER_BATCH
—
None
POST /private/CancelOrderBatch
Cancel Order Batch
—
Private.CANCEL_ORDER_BATCH
—
None
POST /private/EditOrder
Edit Order
—
Private.EDIT_ORDER
—
None
Funding — 10/10 typed ✅
Endpoint
Summary
Typed method(s)
Enum constant
Unit tests
Example / documentation
POST /private/DepositMethods
Get Deposit Methods
depositMethods(DepositMethodsParams) ✅
Private.DEPOSIT_METHODS
Yes
README snippet
POST /private/DepositAddresses
Get Deposit Addresses
depositAddresses(DepositAddressesParams) ✅
Private.DEPOSIT_ADDRESSES
Yes
None
POST /private/DepositStatus
Get Status of Recent Deposits
depositStatus(); depositStatus(DepositStatusParams) ✅
Private.DEPOSIT_STATUS
Yes
README snippet — params overload
POST /private/WithdrawMethods
Get Withdrawal Methods
withdrawalMethods(); withdrawalMethods(WithdrawalMethodsParams) ✅
Private.WITHDRAW_METHODS
Yes
None
POST /private/WithdrawAddresses
Get Withdrawal Addresses
withdrawalAddresses(); withdrawalAddresses(WithdrawalAddressesParams) ✅
Private.WITHDRAW_ADDRESSES
Yes
None
POST /private/WithdrawInfo
Get Withdrawal Information
withdrawalInfo(WithdrawalInfoParams) ✅
Private.WITHDRAW_INFO
Yes
README snippet
POST /private/Withdraw
Withdraw Funds
withdraw(WithdrawParams) ✅
Private.WITHDRAW
Yes
None
POST /private/WithdrawStatus
Get Status of Recent Withdrawals
withdrawalStatus(); withdrawalStatus(WithdrawalStatusParams) ✅
Private.WITHDRAW_STATUS
Yes
None
POST /private/WithdrawCancel
Request Withdrawal Cancellation
cancelWithdrawal(CancelWithdrawalParams) ✅
Private.WITHDRAW_CANCEL
Yes
None
POST /private/WalletTransfer
Request Wallet Transfer
walletTransfer(WalletTransferParams) ✅
Private.WALLET_TRANSFER
Yes
None
Subaccounts — 2/2 typed ✅
Endpoint
Summary
Typed method(s)
Enum constant
Unit tests
Example / documentation
POST /private/CreateSubaccount
Create Subaccount
createSubaccount(CreateSubaccountParams) ✅
Private.CREATE_SUB_ACCOUNT
No
None
POST /private/AccountTransfer
Account Transfer
accountTransfer(AccountTransferParams) ✅
Private.ACCOUNT_TRANSFER
No
None
Earn — 6/6 typed ✅
Endpoint
Summary
Typed method(s)
Enum constant
Unit tests
Example / documentation
POST /private/Earn/Allocate
Allocate Earn Funds
earnAllocate(EarnAllocationParams) ✅
Private.EARN_ALLOCATE
No
None
POST /private/Earn/Deallocate
Deallocate Earn Funds
earnDeallocate(EarnAllocationParams) ✅
Private.EARN_DEALLOCATE
No
None
POST /private/Earn/AllocateStatus
Get Allocation Status
earnAllocateStatus(String) ✅
Private.EARN_ALLOCATE_STATUS
No
None
POST /private/Earn/DeallocateStatus
Get Deallocation Status
earnDeallocateStatus(String) ✅
Private.EARN_DEALLOCATE_STATUS
No
None
POST /private/Earn/Strategies
List Earn Strategies
earnStrategies(); earnStrategies(EarnStrategiesParams) ✅
Private.EARN_STRATEGIES
No
EarnOverview — earnStrategies() directly; params overload only through delegation
POST /private/Earn/Allocations
List Earn Allocations
earnAllocations(); earnAllocations(EarnAllocationsParams) ✅
Private.EARN_ALLOCATIONS
No
EarnOverview — earnAllocations() directly; params overload only through delegation
Transparency — 2/2 typed ✅
Endpoint
Summary
Typed method(s)
Enum constant
Unit tests
Example / documentation
GET /public/PreTrade
Pre-Trade Data
preTrade(String) ✅
Public.PRE_TRADE
No
None
GET /public/PostTrade
Post-Trade Data
postTrade(String); postTrade(PostTradeParams) ✅
Public.POST_TRADE
No
None
Funding (Beta) — 0/15 typed
Endpoint
Summary
Typed method(s)
Enum constant
Unit tests
Example / documentation
GET /funding/v1/fees/{method_id}
Calculate Funding Fees
—
—
—
None
PUT /funding/v1/deposit/address
Claim Funding Deposit Address
—
—
—
None
GET /funding/v1/addresses
List Funding Addresses
—
—
—
None
POST /funding/v1/addresses
Create Funding Address
—
—
—
None
GET /funding/v1/withdrawals
List Funding Withdrawals
—
—
—
None
POST /funding/v1/withdrawals
Create Funding Withdrawal
—
—
—
None
PUT /funding/v1/addresses/{id}
Update Funding Address
—
—
—
None
DELETE /funding/v1/addresses/{id}
Delete Funding Address
—
—
—
None
GET /funding/v1/assets/{direction}
List Funding Assets
—
—
—
None
GET /funding/v2/deposit/addresses
List Funding Claimed Addresses (v2)
—
—
—
None
GET /funding/v1/limits/deposit/{asset_class}/{asset}
List Funding Deposit Limits
—
—
—
None
GET /funding/v1/deposits
List Funding Deposits
—
—
—
None
GET /funding/v1/methods/{direction}
List Funding Methods
—
—
—
None
GET /funding/v1/networks
List Funding Networks
—
—
—
None
GET /funding/v1/limits/withdrawal/{asset_class}/{asset}
List Funding Withdrawal Limits
—
—
—
None
Generic methods
Method / component
Automated coverage
Example / documentation
query(PublicEndpoint<T>)
Indirectly exercised by typed public facade tests; no dedicated external custom endpoint test
README snippet — MyOrderBookEndpoint
query(PrivateEndpoint<T>)
Indirectly exercised by typed private facade tests, including missing credentials; no dedicated external custom endpoint test
No executable custom private endpoint example
query(Public)
No dedicated test
None
query(Public, Map)
No dedicated test
SimpleExamples — Public.TICKER
queryPrivate(String) / queryPrivate(String, Map)
No dedicated test
None
queryPublic(String)
No dedicated test
None
queryPublic(String, Map)
No dedicated test
SimpleExamples — Trades
query(Private)
No dedicated test
SimpleExamples and EarnOverview — Private.BALANCE
query(Private, Map)
No dedicated test
SimpleExamples — Private.ADD_ORDER, validation only
KrakenCredentials.sign(...)
KrakenCredentialsTest — reference signatures for form and JSON bodies, path excludes query
Exercised implicitly by private examples
DefaultKrakenRestRequester.execute(...)
Account , Market , and Funding tests use a mocked HttpsURLConnection; selected production mapping/signing/error paths are covered
Used by executable examples
The unit suite uses JUnit 5, Mockito, AssertJ, and JSON fixtures: 257 tests pass on Java 25. There are no automated tests using real HTTP connections or live Kraken calls. Executable examples and README snippets demonstrate usage; they do not replace unit tests.
Funding (Beta) support
The 15 Beta operations use the base URL https://api.kraken.com, /funding/v1/* or /funding/v2/* paths, path parameters, and multiple HTTP verbs. The current PublicEndpoint and PrivateEndpoint abstraction fixes /0/public GET and /0/private POST. The built-in requester/query extension path therefore does not support the Beta shape as-is; address base URL, path, verb, authentication, and response handling before implementing these operations.
Definition of done, per endpoint
Params type covering every documented request field.
Response record(s) with correct Jackson mapping, precision, optional values, and forward-compatible enums.
Endpoint subclass wiring path, HTTP method, parameters, and response type.
Method on KrakenAPI.
Enum constant present and correctly named where supported by the query model.
Unit tests for request construction, response mapping, relevant edge cases/errors, and facade overload routing.
Runnable example or README snippet where useful; an example does not replace a test.
Sub-tasks
Trading — AddOrder, AddOrderBatch, AmendOrder, EditOrder, CancelOrder, CancelOrderBatch, CancelAll, CancelAllOrdersAfter, GetWebSocketsToken (9)
Funding (Beta) — support the /funding/v1, /funding/v2 shape (base URL without /0, path parameters, PUT/DELETE, signing and response handling), then type the 15 operations
Unit tests — Market Data: Time, SystemStatus, Assets, AssetPairs, Ticker (5); Account Data: Ledgers, QueryLedgers, AddExport, ExportStatus, RetrieveExport, RemoveExport, including both delete/cancel methods (6); Subaccounts (2); Earn (6); Transparency (2) — 21 typed operations without dedicated tests
Generic/custom query tests — every generic/raw overload and user-defined public/private endpoints
Market Data — 12 typed operations — PR feat: complete typed Market Data coverage #99 ; unit tests cover 7/12
Account Data: balances and volume — Balance, BalanceEx, CreditLines, TradeBalance, TradeVolume, GetApiKeyInfo, ListWalletAccounts (7) — PR feat: complete typed Account Data API #100 ; unit tests cover 7/7
Account Data: orders, trades, positions — OpenOrders, ClosedOrders, QueryOrders, OrderAmends, TradesHistory, QueryTrades, OpenPositions (7) — PR feat: complete typed Account Data API #100 ; unit tests cover 7/7
Funding (Legacy) — 10 typed operations — PR feat: complete typed Funding API #101 ; unit tests cover 10/10
Test infrastructure — JUnit 5, Mockito, AssertJ, JSON fixtures, and requester mocks
Earn — Earn/Strategies, Earn/Allocations, Earn/Allocate, Earn/Deallocate, Earn/AllocateStatus, Earn/DeallocateStatus (6) — **Earn** — Earn/Strategies, Earn/Allocations, Earn/Allocate, Earn/Deallocate, Earn/AllocateStatus, Earn/DeallocateStatus (6) #95 , PR feat: type the Earn endpoints #96 ; no dedicated unit tests
Subaccounts — CreateSubaccount, AccountTransfer (2) — **Subaccounts** — CreateSubaccount, AccountTransfer (2) #85 , PR feat: type the Subaccounts endpoints #89 ; no dedicated unit tests
Transparency — PreTrade, PostTrade (2) — **Transparency** — PreTrade, PostTrade (2) #87 , PR feat: type the Transparency endpoints #90 ; no dedicated unit tests
Enum coverage — all 61 core operations have enum constants
Summary
Coverage of the Kraken Spot REST API as of 2026-09-11, against Kraken’s OpenAPI spec (
info.version: 1.1.0) andmasteratb4672b7.52 of 61 core endpoints are typed (85.2%). The 9 Trading endpoints are enum-only. Funding (Beta) has 15 additional operations without typed or enum support.
Coverage per group
Market Data — 12/12 typed✅GET /public/TimeGet Server TimeserverTime()✅Public.TIMEGET /public/SystemStatusGet System StatussystemStatus()✅Public.SYSTEM_STATUSGET /public/MaintenanceScheduleGet Maintenance SchedulemaintenanceSchedule()✅Public.MAINTENANCE_SCHEDULEGET /public/AssetsGet Asset InfoassetInfo(List<String>);assetInfo(List<String>, String)✅Public.ASSETSGET /public/AssetPairsGet Tradable Asset PairsassetPairs();assetPairs(List<String>);assetPairs(List<String>, AssetPairParams.Info)✅Public.ASSET_PAIRSassetPairs()GET /public/TickerGet Ticker Informationticker(List<String>)✅Public.TICKERticker(List); SimpleExamples — generic queryGET /public/OHLCGet OHLC Dataohlc(String);ohlc(OhlcParams)✅Public.OHLCohlc(OhlcParams)onlyGET /public/DepthGet Order BookorderBook(String);orderBook(OrderBookParams)✅Public.DEPTHorderBook(OrderBookParams)onlyPOST /private/Level3Query L3 Order Booklevel3OrderBook(String);level3OrderBook(Level3OrderBookParams)✅Private.LEVEL3GET /public/GroupedBookGet Grouped Order BookgroupedOrderBook(String);groupedOrderBook(GroupedOrderBookParams)✅Public.GROUPED_BOOKgroupedOrderBook(GroupedOrderBookParams)onlyGET /public/TradesGet Recent TradesrecentTrades(String);recentTrades(RecentTradesParams)✅Public.TRADESrecentTrades(RecentTradesParams); SimpleExamples — raw queryGET /public/SpreadGet Recent SpreadsrecentSpreads(String);recentSpreads(RecentSpreadsParams)✅Public.SPREADrecentSpreads(String)onlyAccount Data — 20/20 typed✅POST /private/BalanceGet Account BalanceaccountBalance();accountBalance(AccountBalanceParams)✅Private.BALANCEaccountBalance(); SimpleExamples / EarnOverview use genericquery(Private.BALANCE)POST /private/BalanceExGet Extended BalanceextendedBalance();extendedBalance(ExtendedBalanceParams)✅Private.BALANCE_EXPOST /private/CreditLinesGet Credit LinescreditLines();creditLines(CreditLinesParams)✅Private.CREDIT_LINESPOST /private/TradeBalanceGet Trade BalancetradeBalance();tradeBalance(TradeBalanceParams)✅Private.TRADE_BALANCEPOST /private/OpenOrdersGet Open OrdersopenOrders();openOrders(OpenOrdersParams)✅Private.OPEN_ORDERSPOST /private/ClosedOrdersGet Closed OrdersclosedOrders();closedOrders(ClosedOrdersParams)✅Private.CLOSED_ORDERSPOST /private/QueryOrdersQuery Orders InfoqueryOrders(QueryOrdersParams)✅Private.QUERY_ORDERSPOST /private/OrderAmendsGet Order AmendsorderAmends();orderAmends(OrderAmendsParams)✅Private.ORDER_AMENDSPOST /private/TradesHistoryGet Trades HistorytradesHistory();tradesHistory(TradesHistoryParams)✅Private.TRADES_HISTORYPOST /private/QueryTradesQuery Trades InfoqueryTrades(QueryTradesParams)✅Private.QUERY_TRADESPOST /private/OpenPositionsGet Open PositionsopenPositions();openPositions(OpenPositionsParams)✅Private.OPEN_POSITIONSPOST /private/LedgersGet Ledgers InfoledgerInfo(LedgerInfoParams)✅Private.LEDGERSPOST /private/QueryLedgersQuery LedgersledgerEntries(LedgerEntriesParams)✅Private.QUERY_LEDGERSPOST /private/TradeVolumeGet Trade VolumetradeVolume();tradeVolume(TradeVolumeParams)✅Private.TRADE_VOLUMEPOST /private/AddExportRequest Export ReportrequestReport(RequestReportParams)✅Private.ADD_EXPORTPOST /private/ExportStatusGet Export Report StatusreportsStatuses(ReportType)✅Private.EXPORT_STATUSPOST /private/RetrieveExportRetrieve Data ExportreportData(String)✅Private.RETRIEVE_EXPORTPOST /private/RemoveExportDelete Export ReportdeleteReport(String);cancelReport(String)✅Private.REMOVE_EXPORTdeleteReport(String)only; nocancelReport(String)examplePOST /private/GetApiKeyInfoGet API Key InfoapiKeyInfo();apiKeyInfo(ApiKeyInfoParams)✅Private.GET_API_KEY_INFOPOST /private/ListWalletAccountsList Wallet AccountswalletAccounts();walletAccounts(WalletAccountsParams)✅Private.LIST_WALLET_ACCOUNTSTrading — 0/9 typed
POST /private/AddOrderPrivate.ADD_ORDERquery(Private.ADD_ORDER, Map),validate=truePOST /private/AmendOrderPrivate.AMEND_ORDERPOST /private/CancelOrderPrivate.CANCEL_ORDERPOST /private/CancelAllPrivate.CANCEL_ALLPOST /private/CancelAllOrdersAfterPrivate.CANCEL_ALL_ORDERS_AFTERPOST /private/GetWebSocketsTokenPrivate.GET_WEBSOCKETS_TOKENPOST /private/AddOrderBatchPrivate.ADD_ORDER_BATCHPOST /private/CancelOrderBatchPrivate.CANCEL_ORDER_BATCHPOST /private/EditOrderPrivate.EDIT_ORDERFunding — 10/10 typed✅POST /private/DepositMethodsGet Deposit MethodsdepositMethods(DepositMethodsParams)✅Private.DEPOSIT_METHODSPOST /private/DepositAddressesGet Deposit AddressesdepositAddresses(DepositAddressesParams)✅Private.DEPOSIT_ADDRESSESPOST /private/DepositStatusGet Status of Recent DepositsdepositStatus();depositStatus(DepositStatusParams)✅Private.DEPOSIT_STATUSPOST /private/WithdrawMethodsGet Withdrawal MethodswithdrawalMethods();withdrawalMethods(WithdrawalMethodsParams)✅Private.WITHDRAW_METHODSPOST /private/WithdrawAddressesGet Withdrawal AddresseswithdrawalAddresses();withdrawalAddresses(WithdrawalAddressesParams)✅Private.WITHDRAW_ADDRESSESPOST /private/WithdrawInfoGet Withdrawal InformationwithdrawalInfo(WithdrawalInfoParams)✅Private.WITHDRAW_INFOPOST /private/WithdrawWithdraw Fundswithdraw(WithdrawParams)✅Private.WITHDRAWPOST /private/WithdrawStatusGet Status of Recent WithdrawalswithdrawalStatus();withdrawalStatus(WithdrawalStatusParams)✅Private.WITHDRAW_STATUSPOST /private/WithdrawCancelRequest Withdrawal CancellationcancelWithdrawal(CancelWithdrawalParams)✅Private.WITHDRAW_CANCELPOST /private/WalletTransferRequest Wallet TransferwalletTransfer(WalletTransferParams)✅Private.WALLET_TRANSFERSubaccounts — 2/2 typed✅POST /private/CreateSubaccountCreate SubaccountcreateSubaccount(CreateSubaccountParams)✅Private.CREATE_SUB_ACCOUNTPOST /private/AccountTransferAccount TransferaccountTransfer(AccountTransferParams)✅Private.ACCOUNT_TRANSFEREarn — 6/6 typed✅POST /private/Earn/AllocateAllocate Earn FundsearnAllocate(EarnAllocationParams)✅Private.EARN_ALLOCATEPOST /private/Earn/DeallocateDeallocate Earn FundsearnDeallocate(EarnAllocationParams)✅Private.EARN_DEALLOCATEPOST /private/Earn/AllocateStatusGet Allocation StatusearnAllocateStatus(String)✅Private.EARN_ALLOCATE_STATUSPOST /private/Earn/DeallocateStatusGet Deallocation StatusearnDeallocateStatus(String)✅Private.EARN_DEALLOCATE_STATUSPOST /private/Earn/StrategiesList Earn StrategiesearnStrategies();earnStrategies(EarnStrategiesParams)✅Private.EARN_STRATEGIESearnStrategies()directly; params overload only through delegationPOST /private/Earn/AllocationsList Earn AllocationsearnAllocations();earnAllocations(EarnAllocationsParams)✅Private.EARN_ALLOCATIONSearnAllocations()directly; params overload only through delegationTransparency — 2/2 typed✅GET /public/PreTradePre-Trade DatapreTrade(String)✅Public.PRE_TRADEGET /public/PostTradePost-Trade DatapostTrade(String);postTrade(PostTradeParams)✅Public.POST_TRADEFunding (Beta) — 0/15 typed
GET /funding/v1/fees/{method_id}PUT /funding/v1/deposit/addressGET /funding/v1/addressesPOST /funding/v1/addressesGET /funding/v1/withdrawalsPOST /funding/v1/withdrawalsPUT /funding/v1/addresses/{id}DELETE /funding/v1/addresses/{id}GET /funding/v1/assets/{direction}GET /funding/v2/deposit/addressesGET /funding/v1/limits/deposit/{asset_class}/{asset}GET /funding/v1/depositsGET /funding/v1/methods/{direction}GET /funding/v1/networksGET /funding/v1/limits/withdrawal/{asset_class}/{asset}Generic methods
query(PublicEndpoint<T>)MyOrderBookEndpointquery(PrivateEndpoint<T>)query(Public)query(Public, Map)Public.TICKERqueryPrivate(String)/queryPrivate(String, Map)queryPublic(String)queryPublic(String, Map)Tradesquery(Private)Private.BALANCEquery(Private, Map)Private.ADD_ORDER, validation onlyKrakenCredentials.sign(...)DefaultKrakenRestRequester.execute(...)HttpsURLConnection; selected production mapping/signing/error paths are coveredThe unit suite uses JUnit 5, Mockito, AssertJ, and JSON fixtures: 257 tests pass on Java 25. There are no automated tests using real HTTP connections or live Kraken calls. Executable examples and README snippets demonstrate usage; they do not replace unit tests.
Funding (Beta) support
The 15 Beta operations use the base URL
https://api.kraken.com,/funding/v1/*or/funding/v2/*paths, path parameters, and multiple HTTP verbs. The current PublicEndpoint and PrivateEndpoint abstraction fixes/0/publicGET and/0/privatePOST. The built-in requester/query extension path therefore does not support the Beta shape as-is; address base URL, path, verb, authentication, and response handling before implementing these operations.Definition of done, per endpoint
KrakenAPI.Sub-tasks
AddOrder,AddOrderBatch,AmendOrder,EditOrder,CancelOrder,CancelOrderBatch,CancelAll,CancelAllOrdersAfter,GetWebSocketsToken(9)/funding/v1,/funding/v2shape (base URL without/0, path parameters,PUT/DELETE, signing and response handling), then type the 15 operationsTime,SystemStatus,Assets,AssetPairs,Ticker(5); Account Data:Ledgers,QueryLedgers,AddExport,ExportStatus,RetrieveExport,RemoveExport, including both delete/cancel methods (6); Subaccounts (2); Earn (6); Transparency (2) — 21 typed operations without dedicated testsMarket Data — 12 typed operations— PR feat: complete typed Market Data coverage #99; unit tests cover 7/12Account Data: balances and volume —— PR feat: complete typed Account Data API #100; unit tests cover 7/7Balance,BalanceEx,CreditLines,TradeBalance,TradeVolume,GetApiKeyInfo,ListWalletAccounts(7)Account Data: orders, trades, positions —— PR feat: complete typed Account Data API #100; unit tests cover 7/7OpenOrders,ClosedOrders,QueryOrders,OrderAmends,TradesHistory,QueryTrades,OpenPositions(7)Funding (Legacy) — 10 typed operations— PR feat: complete typed Funding API #101; unit tests cover 10/10Test infrastructure — JUnit 5, Mockito, AssertJ, JSON fixtures, and requester mocksEarn —— **Earn** —Earn/Strategies,Earn/Allocations,Earn/Allocate,Earn/Deallocate,Earn/AllocateStatus,Earn/DeallocateStatus(6)Earn/Strategies,Earn/Allocations,Earn/Allocate,Earn/Deallocate,Earn/AllocateStatus,Earn/DeallocateStatus(6) #95, PR feat: type the Earn endpoints #96; no dedicated unit testsSubaccounts —— **Subaccounts** —CreateSubaccount,AccountTransfer(2)CreateSubaccount,AccountTransfer(2) #85, PR feat: type the Subaccounts endpoints #89; no dedicated unit testsTransparency —— **Transparency** —PreTrade,PostTrade(2)PreTrade,PostTrade(2) #87, PR feat: type the Transparency endpoints #90; no dedicated unit testsEnum coverage — all 61 core operations have enum constants