Schemas
AuthorizationSignatureDto
r32-byte hex, 0x-prefixed.
s32-byte hex, 0x-prefixed.
yParityS2sPoolTokenView
symbolchaincontractAddressdecimalsScale of the token, and of every amount the transaction endpoints take for it.
PoolUtilizationLevel
high from 90%, critical from 98% by default; a pool leaves a level 3 points below its threshold.
S2sPoolUtilizationView
levelhigh from 90%, critical from 98% by default; a pool leaves a level 3 points below its threshold.
rateShare of depositor assets that cannot be withdrawn right now, in percent. At 100 an unstake reverts.
availableLiquidityBase-token amount that can be withdrawn right now.
baseTokenSymbolobservedAtWhen the reading was taken. Readings are hourly.
S2sPoolView
slugStable identifier every other endpoint keys off.
nameprojectchainpoolTypecontractAddressAddress of the pool contract itself.
riskScoreRaw 0-100 score. riskCategory is the bucket it falls in.
riskCategoryapyCurrent annual percentage yield.
avg30dApyMean APY over the last 30 days.
tvlUsdTotal value locked, in USD.
feePercentstakingEnabledFalse when the pool is listed for data only and cannot be staked into.
websitebaseTokenThe token a stake is denominated in.
quoteTokenwrapTokenThe share token an unstake is denominated in.
utilizationExit liquidity. Null for pools that are not monitored or not read yet.
updatedAtWhen the stats above were last recomputed, for a partner's own caching.
S2sSimpleStrategyTableRes
S2sFeeEstimateView
amountThe amount priced, in amountToken units.
amountTokenfeePercentTier percentage, in percent units.
systemFeeUsdgasFeeUsdGas coverage: the batch’s approximate gas at the live price.
totalFeeUsdfeeTokenSymbolfinalAmountWhat is left once the fee is taken, in finalAmountToken units. Stake, buy, bridge: amount less the fee — about what a wallet holding amount can send. Unstake, sell: the proceeds less the fee.
finalAmountTokenBatchCall
targetContract the call is made against.
valueNative value to send, as a hex quantity.
dataABI-encoded calldata, hex.
UserOperationV07
senderThe user's smart account address.
noncecallDataEncoded executeBatch over calls, hex.
callGasLimitverificationGasLimitpreVerificationGasmaxFeePerGasmaxPriorityFeePerGassignaturePlaceholder used for gas estimation. The wallet replaces it with its signature over userOpHash.
paymasterSponsoring paymaster contract from the chain's Gas Manager policy. Set on every built op: gas is always sponsored.
paymasterDatapaymasterVerificationGasLimitpaymasterPostOpGasLimitEip7702Authorization
chainIdaddressDelegate implementation the EOA points at.
nonceThe EOA's own transaction nonce.
BatchUserOperationBundle
chainIdentryPointdelegateuserOpHashThe digest the wallet signs.
authorizationThe EIP-7702 tuple to sign, or null when the EOA already delegates to delegate — then sign only userOpHash and send no authorization.
StakeBatchTransactionRes
intentIdHandle for the server-side intent. Single-use and short-lived: the user op itself is never accepted back from the client.
amountThe amount the batch moves: base-token units for a stake, share units for an unstake.
S2sConstructStakeTransactionDto
sluguserIdPublic uuid of the partner user the transaction is built for.
amountStake: base-token units; unstake: wrap-token (share) units. Required unless maxAmount is true.
maxAmountBuild for the largest amount the wallet can send right now, fee included; amount is then ignored. The amount used is returned.
SendBatchUserOperationResponse
userOpHashHash of the submitted user operation, to track it on-chain.
S2sSendBatchUserOperationDto
intentIdsignatureWallet signature over userOpHash, 0x-prefixed hex.
userIdPublic uuid of the partner user the transaction is built for.
Signature over bundle.authorization. Required when the bundle carried one; must be omitted when it was null.
S2sTokenRequestDto
grant_typeOnly client_credentials is supported.
client_idOmit when authenticating with an HTTP Basic header.
client_secretOmit when authenticating with an HTTP Basic header.
scopeSpace-delimited subset of the credential scopes. Defaults to all of them. all:read / all:write may be used as shorthand; the granted scope in the response always lists the individual permissions.
S2sTokenResponse
access_tokenSend as Authorization: Bearer <token>.
token_typeexpires_inLifetime in seconds.
scopeSpace-delimited scopes actually granted — a wildcard grant arrives here already expanded, and anything asked for but not held is dropped.
S2sOauthError
S2sOauthErrorResponse
errorerror_descriptionHuman-readable detail. Every authentication failure carries the same wording on purpose: an unknown client_id must not be distinguishable from a wrong secret.
S2sUserView
userIdPublic uuid — what every other endpoint addresses the user by.
emailwalletAddressSet once and never replaced.
userNamelanguageavatarstatuscountryCodeISO 3166-1 code of the user's country, null when none is set.
kycLevelNumeric KYC tier the user has reached, null before any KYC.
createdAtupdatedAtCreateS2sUserDto
emailUnique across all users. Stored lowercased.
walletAddressEVM address, unique across all users. Stored lowercased. Optional: an account may be created without one and link it later, once.
userNamelanguageBCP 47 tag (en, pt-BR). Defaults to en.
countryCodeISO 3166-1 alpha-2. Must be a country the platform knows.
UpdateS2sUserDto
emailMust stay unique.
walletAddressOnly settable while the user has no wallet — an existing one is never replaced.
userNamelanguagecountryCodeS2sPortfolioSyncStatus
Refresh of the balances from the on-chain indexer. current means the last refresh is still inside the freshness window.
S2sPortfolioSyncView
assetsRefresh of the balances from the on-chain indexer. current means the last refresh is still inside the freshness window.
transactionsRegistration of the user's wallet with the transaction indexer, which is what keeps balances and positions moving between refreshes. current means it was already registered.
S2sAssetTokenView
symbolchaincontractAddressNull for a chain-native coin, which has no contract.
decimalsScale of the token.
verifiedFalse for a token discovered on-chain that Restake has not vetted. Unverified tokens are excluded from portfolio valuations — treat a balance in one as untrusted.
S2sWalletAssetView
assetIdStable identifier of this balance row.
amountHuman-readable amount, already scaled by token.decimals.
tokenS2sWalletAssetsRes
walletAddressThe wallet these balances belong to, null when none is set.
BlockchainTransactionCategory
S2sWalletTransactionView
txIdStable identifier of this transfer row.
txHashOn-chain transaction hash.
blockNumberdirectionRelative to the user's own wallet.
amountAlways positive — direction carries the sign.
fromAddresstoAddresscategorytokencreatedAtWhen Restake indexed the transfer, not when it was mined.
S2sWalletTransactionsRes
Newest first.
S2sPortfolioSnapshotView
totalValueUsdTotal value of the wallet at that moment.
unrealizedPnlUsdSum of the unrealized PnL of every open position at that moment. Zero when the user held no positions.
createdAtS2sPositionView
positionIdStable identifier of the position.
poolSlugSlug of the pool staked into — the handle the staking API takes.
poolNameprojectchainpoolTypestatusamountSize of the position in wrap-token (share) units — the same units the unstake endpoint takes.
tokenThe share token the position is held in.
openUsdValueCost basis: what the deposits were worth when they were made, time-weighted across top-ups.
currentUsdValueValue at the last valuation — openUsdValue plus the PnL.
unrealizedProfitUsdGain or loss against the cost basis.
forecastApyUsdProjection of a year at the rate realised so far.
apyPercentThe same projection as a percentage. Null before the first valuation of a freshly opened position.
openedAtTime-weighted across top-ups, so it moves when a user adds.
updatedAtWhen the figures above were last recomputed.
StockCategory
S2sStockPositionStockView
slugSlug of the stock — the handle the stocks API takes.
symbolnamelogochaincategoryS2sStockPositionView
positionIdStable identifier of the position.
stockNull only for a holding whose catalogue row has gone.
statusamountShares held, in stock-token units — the units the sell endpoint takes. Not rounded: it is a token balance, not a USD amount.
openUsdValueCost basis: what the shares were bought for, in USD. Average-cost — a partial sell reduces it proportionally, so selling half leaves the average entry price exactly where it was.
avgEntryPriceUsdopenUsdValue / amount. Null for an empty position.
currentPriceUsdLive spot price, falling back to the last one this position was valued at when the price feed could not be reached. Null when neither exists.
currentUsdValueamount * currentPriceUsd, null when there is no price.
unrealizedProfitUsdGain or loss against the cost basis.
unrealizedProfitPercentThe same figure as a percentage. A simple return, never annualized.
marketOpenWhether the stock's market is open right now.
nextOpenAtWhen the next session opens, null while open. A PnL that has not moved since Friday is a shut market, not a stale read.
openedAtUSD-weighted across top-ups, so it moves when a user buys.
updatedAtStockTradingSession
The venue's sessions this stock trades in, as Ondo lists them. Empty when Ondo lists none for it. Read marketOpen rather than deriving the state from this — the windows carry holiday rules and per-stock pauses.
S2sStockTokenView
symbolchaincontractAddressdecimalsScale of the token.
S2sStockView
marketOpenWhether the stock is inside one of its sessions, and not paused for a corporate action, right now.
nextOpenAtWhen the stock next becomes tradable. Null while it is open.
priceMarket price in USD, as the issuing venue reports it. A trade's fill price differs by the route's spread — see the quote.
sparklineHourly closes over the last 24 hours of open market, oldest first, with the live price appended. Empty when no price is available.
change24hPercentChange over the last 24 hours of open market, as a percentage.
change24hUsdThe same change in USD.
slugStable identifier every other endpoint keys off.
symbolnamelogochainassetTypeWhat the token stands for: a share (equity) or a physical commodity such as gold (commodity). The value ?assetType= filters the list on.
categoryThe sector of an equity. Always other for a commodity.
buyEnabledFalse when Restake has switched buying of this stock off.
sellEnabledFalse when Restake has switched selling of this stock off.
tradableSessionsThe venue's sessions this stock trades in, as Ondo lists them. Empty when Ondo lists none for it. Read marketOpen rather than deriving the state from this — the windows carry holiday rules and per-stock pauses.
stockTokenThe share token. A sell is denominated in this one.
paymentTokenThe USD stablecoin the stock is traded against. A buy is denominated in this one, and it is what a sell settles in.
S2sStockSpotPriceView
marketOpenWhether the stock is inside one of its sessions, and not paused for a corporate action, right now.
nextOpenAtWhen the stock next becomes tradable. Null while it is open.
priceMarket price in USD, as the issuing venue reports it. A trade's fill price differs by the route's spread — see the quote.
sparklineHourly closes over the last 24 hours of open market, oldest first, with the live price appended. Empty when no price is available.
change24hPercentChange over the last 24 hours of open market, as a percentage.
change24hUsdThe same change in USD.
slugsymbolcurrencyS2sStockQuoteFeeView
notionalUsdThe USD leg the percentage was applied to: the amount going in on a buy, the route's proceeds on a sell.
feePercentThe tier that notional fell in, as a percentage.
systemFeeUsdThe tiered platform fee.
gasCoverageUsdFlat contribution to the sponsored gas.
totalFeeUsdThe single transfer the batch makes: the two above, summed.
feeAmountRawThat total in the fee token's base units, after being rounded up to its smallest unit. This is the amount that settles on-chain.
feeTokenSymbolfeeTokenDecimalsScale of the fee token.
S2sStockQuoteView
slugsidesourceTokenAddress of the token going in.
destinationTokenAddress of the token coming out.
sourceAmountHuman-readable amount going in — what was asked for.
destinationAmountHuman-readable amount the route returns, before slippage.
executionPricePayment-token units per share this amount fills at on the route, at 8 decimal places, on both sides of the trade.
spotPriceUsdThe market price the catalogue shows, for comparison against the route: the gap to executionPrice is the route's spread and price impact for this amount. Null when it could not be fetched — which never fails the quote.
estimatedGasThe route's own gas estimate. Nullable and indicative.
feeWhat this trade would be charged. Null means nothing would be — not that the fee is unknown.
S2sStockChartPoint
timeUnix timestamp, seconds.
valueS2sConstructStockSwapRes
intentIdHandle for the server-side intent. Single-use and short-lived: the user op itself is never accepted back from the client.
slugsideThe routing this batch was built against.
S2sConstructStockSwapDto
sluguserIdPublic uuid of the partner user the trade is built for.
amountHuman-readable source token amount, for example 100 or 0.5. Required unless maxAmount is true.
maxAmountTrade the largest amount the wallet can right now, fee included; amount is then ignored. A buy keeps back the fee; a sale sells every share and pays the fee from the proceeds. The amount used is the returned quote.sourceAmount.
slippageMaximum slippage, in percent. Capped at 5: on Ethereum the batch goes through the public mempool and can be sandwiched up to this bound.
S2sSendStockBatchUserOperationDto
intentIdsignatureWallet signature over userOpHash, 0x-prefixed hex.
userIdPublic uuid of the partner user the trade is built for.
Signature over bundle.authorization. Required when the bundle carried one; must be omitted when it was null.
S2sBridgeTokenView
symbolchainchainIdcontractAddressdecimalsS2sBridgeLimitsView
minAmountSmallest amount in, in source-token units.
maxAmountLargest amount in that fills at the quoted speed, in source-token units.
minAmountRawmaxAmountRawfetchedAtS2sBridgeTargetsView
bridgeThe bridge contract the deposit calls (Across SpokePool).
tokenThe source token: approved, and pays the gas fee.
treasuryReceives the gas-fee transfer. Null when none is charged.
S2sBridgeRouteView
routeIdThe handle quote and construct take.
providerlimitsLive from the provider. Null when it cannot be reached; quote and construct on the route answer 503 until it can.
Every contract a batch on this route calls, on the source chain — the allowlist for verifying a batch before the user signs it.
S2sBridgeQuoteView
routeIdamountInDeposited, in source-token units.
amountInRawamountOutDelivered to the user, in destination-token units.
amountOutRawproviderFeeWhat the bridge keeps (in − out), in source-token units.
providerFeeRawgasFeeGas-sponsorship coverage, charged on top of amountIn in gasFeeToken. The wallet needs amountIn + gasFee.
gasFeeRawgasFeeTokenetaSecExpected seconds from signing to delivery.
expiresAtS2sBridgeQuoteDto
routeIdFrom GET bridge/routes.
amountAmount to deposit, in source-token units (1.5 is 1.5 USDC). The gas fee is charged on top of it.
userIdPublic uuid of the partner user. Required on a quote because the wallet it is priced for is theirs.
S2sConstructBridgeTransactionRes
transferIdintentIdEcho back to transaction/batch/send with the signatures. Single-use; it lapses with the quote.
S2sConstructBridgeTransactionDto
routeIdFrom GET bridge/routes.
userIdPublic uuid of the partner user.
amountAmount to deposit, in source-token units (1.5 is 1.5 USDC). The gas fee is charged on top of it. Required unless maxAmount is true.
maxAmountBridge the largest amount the wallet can right now: the balance less the gas fee, within the route’s live limits; amount is then ignored. The amount used is the returned quote.amountIn.
S2sSendBridgeBatchUserOperationDto
intentIdsignatureWallet signature over userOpHash, 0x-prefixed hex.
userIdPublic uuid of the partner user.
Signature over bundle.authorization. Required when the bundle carried one; must be omitted when it was null.
BridgeTransferStatus
S2sBridgeTransferLegView
chainchainIdtokentokenAddressdecimalsamountamountRawS2sBridgeTransferView
transferIduserIdPublic uuid of the partner user.
routeIdstatusproviderproviderRefThe provider's id for the deposit (Across: depositId).
providerFeeproviderFeeRawgasFeegasFeeRawgasFeeTokensrcTxHashdstTxHashrefundTxHashfailureReasoncreatedAtupdatedAtS2sBridgeTransfersPage
nextCursorPass as cursor for the next page. Null on the last page.
ApiError
statusCodeerrorThe HTTP reason phrase.
code^[A-Z][A-Z0-9]*(_[A-… · requiredStable, upper snake case identifier of the failure.
messageHuman-readable description. On VALIDATION_FAILED it joins every failure with ; .
errorsEvery failed constraint, only on VALIDATION_FAILED.
