Skip to main content

doc/ccxt-pro-structure-coverage.md

# Binance Pro Structure Coverage

This matrix tracks Binance Pro methods that emit CCXT unified structures and can
enter the raw payload, normalizer, and persistence pipeline.

Source of truth:

- `lib/ccxt/pro_manifest.json`
- `priv/ccxt_structures/binance_pro_structures.json`
- `Ccxt.StructureCoverage`

Current summary:

- total coverage rows: 115
- covered structure rows: 44
- classified non-structure rows: 71
- unclassified rows: 0

Non-structure rows are helpers, parsers, auth/listen-key lifecycle methods,
unsubscribe methods, or runtime handlers whose owning watch/ws-api method carries
the persisted unified structure.

## Covered Matrix

Method | Structure | Raw Table | Persistence Tables | Operations
--- | --- | --- | --- | ---
`cancel_all_orders_ws` | order | `ccxt_raw_ws_api_responses` | `ccxt_orders`<br>`ccxt_order_events` | `upsert`<br>`insert`
`cancel_order_ws` | order | `ccxt_raw_ws_api_responses` | `ccxt_orders`<br>`ccxt_order_events` | `upsert`<br>`insert`
`create_order_ws` | order | `ccxt_raw_ws_api_responses` | `ccxt_orders`<br>`ccxt_order_events` | `upsert`<br>`insert`
`edit_order_ws` | order | `ccxt_raw_ws_api_responses` | `ccxt_orders`<br>`ccxt_order_events` | `upsert`<br>`insert`
`fetch_balance_ws` | balance | `ccxt_raw_ws_api_responses` | `ccxt_balances`<br>`ccxt_balance_events` | `upsert`<br>`insert`
`fetch_closed_orders_ws` | order | `ccxt_raw_ws_api_responses` | `ccxt_orders`<br>`ccxt_order_events` | `upsert`<br>`insert`
`fetch_my_trades_ws` | trade | `ccxt_raw_ws_api_responses` | `ccxt_trades` | `insert`
`fetch_ohlcv_ws` | ohlcv | `ccxt_raw_ws_api_responses` | `ccxt_ohlcvs` | `insert`
`fetch_open_orders_ws` | order | `ccxt_raw_ws_api_responses` | `ccxt_orders`<br>`ccxt_order_events` | `upsert`<br>`insert`
`fetch_order_book_ws` | order_book | `ccxt_raw_ws_api_responses` | `ccxt_order_books`<br>`ccxt_order_book_events` | `upsert`<br>`insert`
`fetch_order_ws` | order | `ccxt_raw_ws_api_responses` | `ccxt_orders`<br>`ccxt_order_events` | `upsert`<br>`insert`
`fetch_orders_ws` | order | `ccxt_raw_ws_api_responses` | `ccxt_orders`<br>`ccxt_order_events` | `upsert`<br>`insert`
`fetch_position_ws` | position | `ccxt_raw_ws_api_responses` | `ccxt_positions`<br>`ccxt_position_events` | `upsert`<br>`insert`
`fetch_positions_ws` | position | `ccxt_raw_ws_api_responses` | `ccxt_positions`<br>`ccxt_position_events` | `upsert`<br>`insert`
`fetch_ticker_ws` | ticker | `ccxt_raw_ws_api_responses` | `ccxt_tickers`<br>`ccxt_ticker_events` | `upsert`<br>`insert`
`fetch_trades_ws` | trade | `ccxt_raw_ws_api_responses` | `ccxt_trades` | `insert`
`stream_balance` | balance | `ccxt_raw_ws_events` | `ccxt_balances`<br>`ccxt_balance_events` | `upsert`<br>`insert`
`stream_my_trades` | trade | `ccxt_raw_ws_events` | `ccxt_trades` | `insert`
`stream_ohlcv` | ohlcv | `ccxt_raw_ws_events` | `ccxt_ohlcvs` | `insert`
`stream_order_book` | order_book | `ccxt_raw_ws_events` | `ccxt_order_books`<br>`ccxt_order_book_events` | `upsert`<br>`insert`
`stream_orders` | order | `ccxt_raw_ws_events` | `ccxt_orders`<br>`ccxt_order_events` | `upsert`<br>`insert`
`stream_positions` | position | `ccxt_raw_ws_events` | `ccxt_positions`<br>`ccxt_position_events` | `upsert`<br>`insert`
`stream_ticker` | ticker | `ccxt_raw_ws_events` | `ccxt_tickers`<br>`ccxt_ticker_events` | `upsert`<br>`insert`
`stream_trades` | trade | `ccxt_raw_ws_events` | `ccxt_trades` | `insert`
`watch_balance` | balance | `ccxt_raw_ws_events` | `ccxt_balances`<br>`ccxt_balance_events` | `upsert`<br>`insert`
`watch_bids_asks` | ticker | `ccxt_raw_ws_events` | `ccxt_tickers`<br>`ccxt_ticker_events` | `upsert`<br>`insert`
`watch_liquidations` | liquidation | `ccxt_raw_ws_events` | `ccxt_liquidations` | `insert`
`watch_liquidations_for_symbols` | liquidation | `ccxt_raw_ws_events` | `ccxt_liquidations` | `insert`
`watch_mark_price` | ticker | `ccxt_raw_ws_events` | `ccxt_tickers`<br>`ccxt_ticker_events` | `upsert`<br>`insert`
`watch_mark_prices` | ticker | `ccxt_raw_ws_events` | `ccxt_tickers`<br>`ccxt_ticker_events` | `upsert`<br>`insert`
`watch_multi_ticker_helper` | ticker | `ccxt_raw_ws_events` | `ccxt_tickers`<br>`ccxt_ticker_events` | `upsert`<br>`insert`
`watch_my_liquidations` | liquidation | `ccxt_raw_ws_events` | `ccxt_liquidations` | `insert`
`watch_my_liquidations_for_symbols` | liquidation | `ccxt_raw_ws_events` | `ccxt_liquidations` | `insert`
`watch_my_trades` | trade | `ccxt_raw_ws_events` | `ccxt_trades` | `insert`
`watch_ohlcv` | ohlcv | `ccxt_raw_ws_events` | `ccxt_ohlcvs` | `insert`
`watch_ohlcv_for_symbols` | ohlcv | `ccxt_raw_ws_events` | `ccxt_ohlcvs` | `insert`
`watch_order_book` | order_book | `ccxt_raw_ws_events` | `ccxt_order_books`<br>`ccxt_order_book_events` | `upsert`<br>`insert`
`watch_order_book_for_symbols` | order_book | `ccxt_raw_ws_events` | `ccxt_order_books`<br>`ccxt_order_book_events` | `upsert`<br>`insert`
`watch_orders` | order | `ccxt_raw_ws_events` | `ccxt_orders`<br>`ccxt_order_events` | `upsert`<br>`insert`
`watch_positions` | position | `ccxt_raw_ws_events` | `ccxt_positions`<br>`ccxt_position_events` | `upsert`<br>`insert`
`watch_ticker` | ticker | `ccxt_raw_ws_events` | `ccxt_tickers`<br>`ccxt_ticker_events` | `upsert`<br>`insert`
`watch_tickers` | ticker | `ccxt_raw_ws_events` | `ccxt_tickers`<br>`ccxt_ticker_events` | `upsert`<br>`insert`
`watch_trades` | trade | `ccxt_raw_ws_events` | `ccxt_trades` | `insert`
`watch_trades_for_symbols` | trade | `ccxt_raw_ws_events` | `ccxt_trades` | `insert`

## Drift Rule

`test/ccxt_pro_binance_test.exs` asserts that every Binance Pro method is either:

- covered by a structure pipeline row, or
- classified as not applicable because it is helper/parser/auth/unsubscribe or
  runtime handler behavior.

Any new Pro method that emits user data must be added to
`sourceMethods` in `binance_pro_structures.json`, otherwise the drift test will
surface it as unclassified.