How capctl commands map to the Capital.com Open API. "Covered" means a command
issues the request and surfaces the response (via tables or --json).
| Endpoint |
Command |
Status |
GET /time |
session time |
Covered |
GET /ping |
session ping |
Covered |
GET /session |
session details |
Covered |
GET /session/encryptionKey |
session encryption-key |
Covered (key fetch; encrypted-password login flow not used) |
POST /session |
session login |
Covered |
PUT /session |
session switch |
Covered |
DELETE /session |
session logout |
Covered |
| Endpoint |
Command |
Status |
GET /accounts |
account list |
Covered |
GET /accounts/preferences |
account prefs-get |
Covered |
PUT /accounts/preferences |
account prefs-set (--hedging, --leverage) |
Covered |
GET /history/activity |
account history-activity |
Covered |
GET /history/transactions |
account history-transactions |
Covered |
POST /accounts/topUp |
account topup |
Covered (demo only) |
| Endpoint |
Command |
Status |
GET /markets |
market search |
Covered |
GET /markets/{epic} |
market get |
Covered |
GET /marketnavigation |
market nav-root |
Covered |
GET /marketnavigation/{id} |
market nav-node |
Covered |
GET /prices/{epic} |
market prices |
Covered |
GET /clientsentiment |
market sentiment A,B |
Covered (batch) |
GET /clientsentiment/{id} |
market sentiment A |
Covered |
| Endpoint |
Command |
Status |
GET /positions |
trade positions |
Covered |
GET /positions/{dealId} |
trade position |
Covered |
POST /positions |
trade preview-position → trade execute-position |
Covered |
PUT /positions/{dealId} |
trade amend-position |
Covered |
DELETE /positions/{dealId} |
trade close |
Covered |
GET /workingorders |
trade orders |
Covered |
POST /workingorders |
trade preview-order → trade execute-order |
Covered |
PUT /workingorders/{dealId} |
trade amend-order |
Covered |
DELETE /workingorders/{dealId} |
trade cancel |
Covered |
GET /confirms/{dealReference} |
trade confirm |
Covered |
| Endpoint |
Command |
Status |
GET /watchlists |
watchlist list |
Covered |
POST /watchlists |
watchlist create |
Covered |
GET /watchlists/{id} |
watchlist get |
Covered |
PUT /watchlists/{id} |
watchlist add |
Covered |
DELETE /watchlists/{id} |
watchlist delete |
Covered |
DELETE /watchlists/{id}/{epic} |
watchlist remove |
Covered |
| Destination |
Command |
Status |
marketData.subscribe (quotes) |
stream prices, stream alerts, stream portfolio |
Covered |
OHLCMarketData.subscribe (candles) |
stream candles |
Covered |
ping (keep-alive) |
(internal) |
Covered |
Verified coverage. Every endpoint below is exercised by automated tests on the
real demo API across four cells — CLI positive, CLI negative, SDK positive, SDK
negative — generated from tests/e2e/endpoints.py (regenerate with
make coverage-doc). Both the CLI and the SDK cover the full Open API surface;
the only surface not exposed as a command is the RSA encrypted-password login flow
(the CLI uses the standard credential login). See the matrix at the bottom of this
file.
| Endpoint |
HTTP / WS |
CLI + |
CLI − |
SDK + |
SDK − |
session.time |
GET /time |
tested |
tested |
tested |
tested |
session.ping |
GET /ping |
tested |
tested |
tested |
tested |
session.details |
GET /session |
tested |
tested |
tested |
tested |
session.encryption_key |
GET /session/encryptionKey |
tested |
tested |
tested |
tested |
session.login |
POST /session |
tested |
tested |
tested |
tested |
session.switch |
PUT /session |
tested |
tested |
tested |
tested |
session.logout |
DELETE /session |
tested |
tested |
tested |
tested |
account.list |
GET /accounts |
tested |
tested |
tested |
tested |
account.prefs_get |
GET /accounts/preferences |
tested |
tested |
tested |
tested |
account.prefs_set |
PUT /accounts/preferences |
tested |
tested |
tested |
tested |
account.history_activity |
GET /history/activity |
tested |
tested |
tested |
tested |
account.history_transactions |
GET /history/transactions |
tested |
tested |
tested |
tested |
account.topup |
POST /accounts/topUp |
tested |
tested |
tested |
tested |
market.search |
GET /markets |
tested |
tested |
tested |
tested |
market.get |
GET /markets/{epic} |
tested |
tested |
tested |
tested |
market.nav_root |
GET /marketnavigation |
tested |
tested |
tested |
tested |
market.nav_node |
GET /marketnavigation/{id} |
tested |
tested |
tested |
tested |
market.prices |
GET /prices/{epic} |
tested |
tested |
tested |
tested |
market.sentiment |
GET /clientsentiment |
tested |
tested |
tested |
tested |
position.list |
GET /positions |
tested |
tested |
tested |
tested |
position.get |
GET /positions/{dealId} |
tested |
tested |
tested |
tested |
position.preview |
(local) |
tested |
tested |
tested |
tested |
position.execute |
POST /positions |
tested |
tested |
tested |
tested |
position.amend |
PUT /positions/{dealId} |
tested |
tested |
tested |
tested |
position.close |
DELETE /positions/{dealId} |
tested |
tested |
tested |
tested |
order.list |
GET /workingorders |
tested |
tested |
tested |
tested |
order.preview |
(local) |
tested |
tested |
tested |
tested |
order.execute |
POST /workingorders |
tested |
tested |
tested |
tested |
order.amend |
PUT /workingorders/{dealId} |
tested |
tested |
tested |
tested |
order.cancel |
DELETE /workingorders/{dealId} |
tested |
tested |
tested |
tested |
trade.confirm |
GET /confirms/{dealRef} |
tested |
tested |
tested |
tested |
watchlist.list |
GET /watchlists |
tested |
tested |
tested |
tested |
watchlist.create |
POST /watchlists |
tested |
tested |
tested |
tested |
watchlist.get |
GET /watchlists/{id} |
tested |
tested |
tested |
tested |
watchlist.add |
PUT /watchlists/{id} |
tested |
tested |
tested |
tested |
watchlist.remove |
DELETE /watchlists/{id}/{epic} |
tested |
tested |
tested |
tested |
watchlist.delete |
DELETE /watchlists/{id} |
tested |
tested |
tested |
tested |
stream.prices |
WS marketData.subscribe |
tested |
tested |
tested |
tested |
stream.candles |
WS OHLCMarketData.subscribe |
tested |
tested |
tested |
tested |
stream.alerts |
WS quotes (level cross) |
tested |
tested |
tested |
tested |
stream.portfolio |
WS quotes (position epics) |
tested |
tested |
tested |
tested |
Coverage: 164/164 applicable cells tested (100%) across 41 endpoints — CLI and SDK, positive and negative.