Rust client for CoinAPI

✨(api): implement remaining CoinAPI REST endpoints #18

Merged ljnsn.tngl.sh
targeting trunk from full-api-coverage
Merged opened by and assigned to ljnsn.tngl.sh
targeting trunk from full-api-coverage

New endpoint groups (mirroring api-bricks SDK organization), all on top of the existing base transport:

  • metadata: assets, exchanges, symbols (incl. active/historical/ unmapped/by-exchange-symbol/map), chains, icons
  • metrics: v1 + v2 listing/current/history for asset/exchange/symbol (v2 history rows are undocumented; kept as raw JSON)
  • ohlcv: periods, symbol timeseries/latest, exchange history
  • orderbooks: L2 current/depth/history + L3 (orderbooks3) current
  • quotes: current/latest/history/latest-by-symbol
  • trades: latest/history/latest-by-symbol
  • options: current groups by exchange

Components: Asset, Exchange, Symbol, SymbolMapping, Chain, Icon, Quote, QuoteTrade, LastTrade, Trade, OrderBook(Base/Depth), TimeseriesItem, OhlcvExchangeTimeseriesItem, Metric(Data/Info), GeneralData, ListingItem, OptionExchangeGroup, Strike, ChainNetworkAddress, Date. Rates/volumes are Decimal (arbitrary-precision serde); orderbook asks/bids stay raw JSON since element types differ per protocol level.

History methods with many params take request structs (clippy too_many_arguments, consistent with the ohlcv/quotes/trades style). The CoinApiResponse trait became redundant with direct deserialization and is removed.

Tests: 14 new mock tests (one per group + edge cases: date param, L3 string order ids, nested options strikes), 12 new ignored live tests. CI runs fmt + clippy -D warnings + cargo test + release build.

Commits 0