Expand description
§Monaco SDK
Typed Rust client for the Monaco DEX REST API — auto-generated from the OpenAPI specification via progenitor.
§Quick start
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = monaco_sdk::Client::new("https://develop.apimonaco.xyz");
// Public endpoints (no auth required)
let health = client.health_check().await?.into_inner();
println!("Status: {:?}", health.status);
let pairs = client
.list_trading_pairs(None, Some(true), None, None, None, None)
.await?
.into_inner();
println!("Trading pairs: {:?}", pairs.trading_pairs);
Ok(())
}§Authentication
Monaco uses noncustodial session-key auth. At login the client generates a
random ed25519 keypair locally and registers the public key through the
challenge → wallet-sign → verify flow (the wallet signature authorizes the
session public key). Every authenticated request is then signed with the
session private key and carries X-Monaco-PublicKey, X-Monaco-Timestamp,
and X-Monaco-Signature headers over
METHOD\nPATH_WITH_QUERY\nTIMESTAMP_MS\nSHA256_BODY_HEX.
Per-request signing requires a request-signing layer that this generated client does not yet provide; until it lands, sign requests yourself (e.g. a reqwest layer that injects the headers above) when calling authenticated endpoints. The public challenge/verify endpoints work out of the box.
§API coverage
The client exposes every operation from the Monaco REST API:
| Category | Methods |
|---|---|
| Market data | list_trading_pairs, get_trading_pair_by_id, get_market_metadata, get_candles |
| Orderbook | get_orderbook_snapshot |
| Trades | get_trades |
| Orders | create_order, replace_order, cancel_order, get_orders, get_order_by_id |
| Batch orders | batch_create_orders, batch_replace_orders, batch_cancel_orders, batch_cancel_all, batch_cancel_all_by_pair |
| Accounts | get_user_profile, get_user_balances, get_user_balance_by_asset, get_user_movements |
| Sub-accounts | list_sub_accounts_with_balances, create_sub_account_limit, get_sub_account_limits, update_sub_account_limit, delete_sub_account_limit |
| Auth | create_challenge, verify_signature, refresh_token, revoke_session, authenticate_backend |
| Fees | simulate_fees |
| Whitelist | submit_whitelist |
| Faucet | mint_tokens |
| Health | health_check |
All request/response types live in the types module.
Modules§
- prelude
- Items consumers will typically use such as the Client.
- types
- Types used as operation parameters and responses.
Structs§
- Byte
Stream - Untyped byte stream used for both success and error responses.
- Client
- Client for Monaco Protocol API
- Response
Value - Typed value returned by generated client methods.
Enums§
- Error
- Error produced by generated client methods.
Traits§
- Client
Info - Interface for which an implementation is generated for all clients.