> ## Documentation Index
> Fetch the complete documentation index at: https://docs.0xmonaco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# V0.8.15

# Monaco Protocol SDK v0.8.15

This release switches the **REST API wire format from snake\_case to camelCase** across every endpoint, and adds a **`GET /api/v1/withdrawals`** endpoint for listing the caller's pending withdrawals.

## Breaking

### REST wire format is now camelCase

Every REST request/response JSON field **and** path parameter is now **camelCase** instead of snake\_case. This is a wire-format change that spans the entire REST surface — for example `trading_pair_id` → `tradingPairId`, `order_id` → `orderId`, `asset_id` → `assetId`, `created_at` → `createdAt`, `page_size` → `pageSize`, `sub_account_id` → `subAccountId`, and path params such as `/withdrawals/{withdrawal_index}` → `/withdrawals/{withdrawalIndex}`.

**If you use the TypeScript SDK** (`@0xmonaco/core`, `@0xmonaco/react`), it already speaks camelCase end to end — upgrade to v0.8.15 and no field-name changes are needed in your code.

**If you call the REST API directly** (raw HTTP, or raw JSON via the Rust REST SDK), rename every field and path parameter to camelCase:

```jsonc theme={null}
// Before (v0.8.14) — POST /api/v1/orders
{ "trading_pair_id": "…", "order_type": "LIMIT", "side": "BUY", "quantity": "0.1" }

// After (v0.8.15) — POST /api/v1/orders
{ "tradingPairId": "…", "orderType": "LIMIT", "side": "BUY", "quantity": "0.1" }
```

<Note>
  The **WebSocket API is unchanged.** Its raw wire payloads, event types, and channel names remain snake\_case (`trade`, `orderbook_update`, `positions:{trading_pair_id}`, …). The TypeScript SDK's WebSocket hooks continue to surface camelCase fields to your code as before. **gRPC is also unaffected** — binary field numbers and proto field names are unchanged.
</Note>

## Added

### List pending withdrawals

New `GET /api/v1/withdrawals` (user auth) returns the caller's **pending** withdrawals — those still awaiting on-chain root confirmation, whose merkle proof (and therefore the executable calldata from `GET /api/v1/withdrawals/{withdrawalIndex}`) is not available yet. Scoped to the authenticated user + application, newest first, and paginated.

```typescript theme={null}
const { withdrawals, total, page, pageSize, totalPages } =
  await sdk.withdrawals.listPendingWithdrawals({ pageSize: 50 });

for (const w of withdrawals) {
  // { withdrawalIndex, assetId, assetSymbol, amount, destination, status: "pending", createdAt }
  console.log(w.withdrawalIndex, w.assetSymbol, w.amount);
}
```

Query params (`ListPendingWithdrawalsParams`, all optional): `page` (1-based, default 1), `pageSize` (1–100, default 20).

Response (`ListPendingWithdrawalsResponse`): `withdrawals[]` — each a `PendingWithdrawal` with `withdrawalIndex`, `assetId`, `assetSymbol`, `amount` (raw smallest-unit string), `destination`, `status` (always `"pending"`), and `createdAt` — plus `total`, `page`, `pageSize`, and `totalPages`.

Available across `@0xmonaco/core` (`sdk.withdrawals.listPendingWithdrawals`) and `@0xmonaco/react` (`useVault().listPendingWithdrawals`).

## Upgrade

```bash theme={null}
npm install @0xmonaco/core@0.8.15 @0xmonaco/types@0.8.15 @0xmonaco/react@0.8.15
# or bun
bun add @0xmonaco/core@0.8.15 @0xmonaco/types@0.8.15 @0xmonaco/react@0.8.15
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.