TypeScript 타입
응답, 요청, 스트림 프레임의 타입입니다.
Decimal
type Decimal = string터미널이 보내는 그대로의 10진수입니다: "67000.10"은 "67000.10"으로
유지됩니다. 절대 Number()로 변환하지 말고, 산술이 필요하면 10진수
라이브러리를 사용합니다.
Timestamp
type Timestamp = number에포크 이후 UTC 밀리초이며, 정수입니다.
InstrumentAddress
type InstrumentAddress = string종목 주소입니다: exchange:market:symbol, 거래소는 소문자입니다.
Side
type Side = "buy" | "sell"체결 방향입니다.
Scope
type Scope = "market:read" | "connections:read" | "account:read" | "trading:write" | OpenStringv1에 알려진 토큰 권한입니다. v1 안에서 새 권한이 추가될 수 있습니다.
MarketTopic
type MarketTopic = "trades" | "ticker" | "mark_price" | "book.top" | "clusters"시장 토픽입니다: 구독 시 instrument가 필수이며, connection_id는 공통 규칙에 따라 선택됩니다.
AccountTopic
type AccountTopic = "account.orders" | "account.positions" | "account.balances" | "account.fills"계정 토픽입니다: 구독 시 connection_id가 필수이며, instrument는 사용하지 않습니다.
TerminalTopic
type TerminalTopic = "workspace" | "settings"터미널 자체의 토픽입니다: 터미널마다 하나이며, 종목이나 연결 없이 구독합니다.
WorkspaceTopic
type WorkspaceTopic = "workspace"Topic
type Topic = MarketTopic | AccountTopic | TerminalTopicv1에 알려진 스트림 토픽입니다.
ErrorCode
type ErrorCode = | "unauthorized"
| "forbidden"
| "forbidden_scope"
| "not_found"
| "invalid_request"
| "unsupported"
| "not_active"
| "rate_limited"
| "not_tradable"
| "unavailable"
| OpenString계약의 오류 코드입니다. v1 안에서 새 코드가 추가될 수 있습니다.
ConnectionState
type ConnectionState = "disabled" | "enabled" | "connecting" | "connected" | "failed"연결의 status.state입니다.
OrderType
type OrderType = "limit" | "market"주문 유형입니다: limit에는 가격이 필요하고, market은 받지 않습니다.
OrderStatus
type OrderStatus = "pending" | "open" | "partially_filled"미체결 주문의 상태입니다.
TriggerType
type TriggerType = "stop_loss" | "take_profit" | "stop"트리거 주문의 종류입니다.
TriggerRule
type TriggerRule = "price_above_or_equal" | "price_below_or_equal"트리거가 발동하는 시점입니다.
TriggerStatus
type TriggerStatus = "open" | "finished" | "inactive" | "invalid"트리거 주문의 상태입니다.
PositionSide
type PositionSide = "long" | "short"포지션의 방향입니다.
TimeInForce
type TimeInForce = "gtc" | "ioc" | "fok" | "post_only"넣은 주문의 유효 기간(time in force)이며, 없으면 거래소의 기본값입니다.
ErrorEnvelope
2xx가 아닌 모든 응답이 담는 오류 엔벨로프입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
error | { code: ErrorCode; message: string; } |
List
목록은 { data: [...] }로 감싸집니다.
| 필드 | 타입 | 설명 |
|---|---|---|
data | T[] |
Limits
/v1/meta가 출력하는 제한입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
ws_connections_per_token | number | |
subscriptions_per_connection | number | |
api_only_instruments | number | |
exchange_subscriptions_per_second | number | |
commands_per_second선택 | number | 리스너당 초당 거래 명령 수입니다. Local API의 쓰기 단계보다 오래된 터미널에는 없습니다. |
workspace_commands_per_second선택 | number | 리스너당 초당 워크스페이스 명령 수입니다. 창 단계 이전에는 없습니다. |
settings_commands_per_second선택 | number | 리스너당 초당 설정 쓰기 수입니다. 설정 단계 이전에는 없습니다. |
Meta
GET /v1/meta.
| 필드 | 타입 | 설명 |
|---|---|---|
api_version | string | 이 계약에서는 "1"입니다. |
app_version | string | |
build_hash | string | |
build_env | string | |
features | string | 활성화된 빌드 피처이며, 하나의 문자열입니다. |
scopes | Scope[] | 요청에 사용된 토큰에 부여된 권한입니다. |
limits | Limits | |
topics | Topic[] | 터미널이 시장 데이터 수집부(tap) 없이 빌드되었으면 비어 있습니다. |
Health
GET /v1/health.
| 필드 | 타입 | 설명 |
|---|---|---|
status | string | |
uptime_ms | number | |
clients | number | 열려 있는 스트림 연결 수입니다. |
streams | number | 허브가 보유한 페어 수입니다. |
api_only_instruments | number | API만을 위해 열린 페어 수입니다. |
dropped_events | number | 허브가 시장 데이터 루프에서 받아들이지 않은 이벤트 수입니다. |
dropped_frames | number | 클라이언트 큐에 들어가지 못한 프레임 수입니다. |
overflow_closes | number | 코드 4008로 닫힌 클라이언트 수입니다. |
stream_available | boolean | 빌드에 시장 데이터 수집부(tap)가 없으면 false입니다. |
ConnectionEvent
연결 히스토리의 마지막 기록입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
code | string | Settings App이 보여 주는 것과 같은 피드의 코드입니다. |
ts | Timestamp |
ConnectionStatus
토글과 히스토리 피드에서 도출한 연결 상태입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
state | ConnectionState | |
last_event선택 | ConnectionEvent | 이 세션에 연결의 히스토리 기록이 없으면 없습니다. |
Connection
터미널 연결입니다. 비밀 정보는 담지 않습니다: 키도, 주소도, 마스크도 없습니다.
| 필드 | 타입 | 설명 |
|---|---|---|
id | number | |
exchange | string | 종목 주소에서와 같이 소문자로 쓴 거래소 이름입니다. |
market | string | spot, futures, … |
label | string | |
enabled | boolean | |
read_only | boolean | 자격 증명이 없는 연결이며, 터미널이 시장 데이터를 위해 만든 것입니다. |
has_credentials | boolean | |
proxy_bound | boolean | |
status | ConnectionStatus |
Instrument
거래소 카탈로그의 종목입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
instrument | InstrumentAddress | |
exchange | string | |
market | string | |
symbol | string | |
base | string | |
quote | string | |
status | string | 거래소가 보고한 그대로입니다: active, inactive, … |
tick_size | Decimal | null | 거래소가 보고하지 않았으면 null입니다. |
lot_size | Decimal | null | |
min_size | Decimal | null | |
contract_value | Decimal | null |
InstrumentsPage
GET /v1/instruments의 한 페이지입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
exchange | string | |
market | string | |
data | Instrument[] | |
next_cursor | string | null | 다음 페이지를 요청할 때 cursor로 전달합니다. 마지막 페이지에서는 null입니다. |
Candle
캔들입니다. ts는 봉의 시작 시각이고, volume은 기준 코인 단위입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
ts | Timestamp | |
open | Decimal | |
high | Decimal | |
low | Decimal | |
close | Decimal | |
volume | Decimal | |
quote_volume | Decimal | |
closed | boolean |
Candles
GET /v1/market/candles.
| 필드 | 타입 | 설명 |
|---|---|---|
instrument | InstrumentAddress | |
connection_id | number | |
interval | string | |
data | Candle[] |
Interval
터미널이 아는 인터벌입니다. duration_ms는 명목값입니다(1M은 30일).
| 필드 | 타입 | 설명 |
|---|---|---|
id | string | |
duration_ms | number |
Intervals
GET /v1/market/intervals.
| 필드 | 타입 | 설명 |
|---|---|---|
candles | Interval[] | |
clusters | Interval[] |
Trade
체결입니다. ts는 터미널을 통과한 시각입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
id | string | null | 거래소 체결 id이며, v1에서는 항상 null입니다. |
price | Decimal | |
qty | Decimal | |
side | Side | |
ts | Timestamp | |
exchange_ts | Timestamp |
Trades
GET /v1/market/trades이며, 오래된 것부터 최신 순입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
instrument | InstrumentAddress | |
connection_id | number | |
data | Trade[] |
Level
type Level = [price: Decimal, size: Decimal][price, size] 형태의 호가창 레벨입니다.
Ticker
24시간 티커입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
price | Decimal | |
change_24h_pct | Decimal | null | |
volume_24h | Decimal | |
high_24h | Decimal | null | |
low_24h | Decimal | null | |
best_bid | Decimal | null | |
best_ask | Decimal | null | |
ts | Timestamp |
MarkPrice
마크 가격이며, mark_price 이벤트의 data입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
mark_price | Decimal | |
ts | Timestamp |
Snapshot
GET /v1/market/snapshot: 허브가 페어에 대해 아는 최신 정보입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
instrument | InstrumentAddress | |
connection_id | number | |
ts | Timestamp | |
best_bid | Level | null | 허브의 호가창에서 가져오며, 호가창 스냅샷이 도착할 때까지 null입니다. |
best_ask | Level | null | |
last_trade | Trade | null | |
mark_price | Decimal | null | |
ticker | Ticker | null |
BookTop
호가창 상단입니다: 매수 호가는 최우선 가격부터 아래로, 매도 호가는 최우선 가격부터 위로.
| 필드 | 타입 | 설명 |
|---|---|---|
ts | Timestamp | |
depth | number | |
bids | Level[] | |
asks | Level[] |
Orderbook
interface Orderbook extends BookTopGET /v1/market/orderbook.
| 필드 | 타입 | 설명 |
|---|---|---|
instrument | InstrumentAddress | |
connection_id | number |
ClusterLevel
클러스터 버킷의 가격 레벨 하나입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
price | Decimal | |
volume | Decimal | |
buy_volume | Decimal | |
sell_volume | Decimal | |
buy_trades | number | |
sell_trades | number |
ClusterBucket
클러스터 버킷입니다. levels는 가장 낮은 가격부터 가장 높은 가격 순입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
interval | string | |
ts | Timestamp | 버킷 시작 시각입니다. |
end_ts | Timestamp | |
volume | Decimal | |
buy_volume | Decimal | |
sell_volume | Decimal | |
trades | number | |
vwap | Decimal | null | 체결이 없는 버킷은 null입니다. |
min_price | Decimal | null | |
max_price | Decimal | null | |
completed | boolean | |
last_trade_ts | Timestamp | 체결 시각이 없는 히스토리 버킷은 0입니다. |
levels | ClusterLevel[] |
Clusters
GET /v1/market/clusters이며, 오래된 것부터 최신 순으로 최대 10개의 버킷입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
instrument | InstrumentAddress | |
connection_id | number | |
interval | string | 터미널에서 해당 종목에 선택된 인터벌입니다. |
ts | Timestamp | |
data | ClusterBucket[] |
Order
연결의 미체결 주문입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
key | string | null | 터미널의 주문 키(t-…)이며, 알려질 때까지 null입니다. |
exchange_id | string | null | 거래소의 주문 id이며, 알려질 때까지 null입니다. |
instrument | InstrumentAddress | |
side | Side | |
type | OrderType | |
price | Decimal | |
size | Decimal | 기준 코인 단위입니다. |
filled | Decimal | |
remaining | Decimal | |
notional | Decimal | null | 트레이더가 입력한 호가 통화 금액이며, 거래소 스냅샷에서 온 주문은 null입니다. |
status | OrderStatus | |
created_ts | Timestamp |
TriggerOrder
연결의 트리거 주문(스톱로스, 테이크프로핏, 스톱)입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
id | string | |
instrument | InstrumentAddress | |
type | TriggerType | |
trigger_price | Decimal | |
rule | TriggerRule | |
size | Decimal | null | |
notional | Decimal | null | |
status | TriggerStatus | |
order_type | string | null | 트리거가 발동할 때 넣는 주문이며, 알 수 없으면 null입니다. |
client_id | string | null | |
created_ts | Timestamp | null |
AccountOrders
GET /v1/account/orders: 한 연결의 미체결 주문과 트리거 주문입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
connection_id | number | |
data | Order[] | |
triggers | TriggerOrder[] |
Position
열린 포지션입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
instrument | InstrumentAddress | |
side | PositionSide | |
size | Decimal | 기준 코인 단위이며, MOEX에서는 랏(lot) 단위입니다. |
lot_size | Decimal | 1랏(lot)에 해당하는 기준 코인 수량입니다. |
entry_price | Decimal | |
notional | Decimal | 호가 통화 단위입니다. |
unrealized_pnl | Decimal | 터미널이 계산한 값입니다. |
mark_price | Decimal | null | 터미널의 마크 가격입니다: 롱이면 최우선 매수 호가, 숏이면 최우선 매도 호가이며, 첫 호가창 틱까지는 null입니다. |
AccountPositions
GET /v1/account/positions.
| 필드 | 타입 | 설명 |
|---|---|---|
connection_id | number | |
data | Position[] |
Balance
한 통화의 최신 잔고이며, 거래소가 보고한 그대로입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
currency | string | |
total | Decimal | |
available | Decimal | null | 거래소가 보고하지 않으면 null입니다. |
locked | Decimal | null | |
ts | Timestamp | 거래소 시각이 있으면 거래소 시각, 없으면 수신 시각입니다. |
AccountBalances
GET /v1/account/balances: API를 켠 뒤 변동이 있었던 통화입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
connection_id | number | |
data | Balance[] |
Fill
연결 자신의 주문에 대한 체결 내역입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
trade_id | string | |
order_id | string | |
instrument | InstrumentAddress | |
side | Side | |
price | Decimal | |
qty | Decimal | |
fee | Decimal | |
fee_currency | string | |
position_side | PositionSide | null | 헤지 모드가 있는 거래소에서는 long / short, 그 외에는 null입니다. |
ts | Timestamp |
AccountFills
GET /v1/account/fills이며, 오래된 것부터 최신 순입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
connection_id | number | |
data | Fill[] |
PlaceOrderRequest
와이어로 전송되는 그대로의 POST /v1/orders 본문입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
connection_id | number | |
instrument | InstrumentAddress | |
side | Side | |
type | OrderType | |
price선택 | Decimal | limit에는 필수이고, market에는 없습니다. |
size선택 | Decimal | 기준 코인 단위의 수량이며, size와 notional 중 정확히 하나만 전달합니다. |
notional선택 | Decimal | 호가 통화 금액이며, size와 notional 중 정확히 하나만 전달합니다. |
reduce_only선택 | boolean | |
post_only선택 | boolean | |
time_in_force선택 | TimeInForce | |
client_key선택 | string | 멱등성 키입니다: 같은 키로 반복하면 이전 응답을 반환합니다. |
InstrumentCommandRequest
POST /v1/orders/cancel-all, POST /v1/orders/trigger/cancel-all, POST /v1/positions/close의 본문입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
connection_id | number | |
instrument | InstrumentAddress |
PlaceTriggerRequest
POST /v1/orders/trigger의 본문입니다. stop_loss와 take_profit은 열린
포지션에 걸립니다(방향, 수량, 규칙을 포지션에서 가져옵니다). stop은 자체
side, notional과 선택적 rule을 가집니다.
| 필드 | 타입 | 설명 |
|---|---|---|
connection_id | number | |
instrument | InstrumentAddress | |
kind | TriggerType | |
trigger_price | Decimal | |
side선택 | Side | stop 전용입니다. |
notional선택 | Decimal | stop 전용입니다: 호가 통화 금액입니다. |
rule선택 | TriggerRule | stop 전용입니다. 없으면 매수는 시장 가격 위, 매도는 시장 가격 아래를 뜻합니다. |
client_key선택 | string | 멱등성 키이며, POST /v1/orders에서와 같습니다. |
AmendTriggerRequest
PATCH /v1/orders/trigger/{id}의 본문입니다: 새 트리거 가격입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
connection_id | number | |
instrument | InstrumentAddress | |
kind | TriggerType | |
trigger_price | Decimal | |
side선택 | Side | stop 전용입니다. |
rule선택 | TriggerRule | stop 전용입니다. |
LeverageMode
type LeverageMode = "manual" | "max" | "smart"종목에 대한 터미널의 레버리지 모드이며, 거래소의 것이 아닙니다.
MarginMode
type MarginMode = "cross" | "isolated"선물 종목의 마진 모드입니다.
Leverage
GET /v1/account/leverage: 선물 종목 하나의 레버리지와 마진 모드이며,
터미널의 캐시에서 가져옵니다. 터미널이 아직 다루지 않은 종목은
409 not_active로 응답합니다.
| 필드 | 타입 | 설명 |
|---|---|---|
connection_id | number | |
instrument | InstrumentAddress | |
leverage | number | |
max_leverage | number | |
mode | LeverageMode | |
margin_mode | MarginMode |
SetLeverageRequest
POST /v1/account/leverage의 본문입니다: leverage와 mode 중 정확히 하나만 전달합니다.
| 필드 | 타입 | 설명 |
|---|---|---|
connection_id | number | |
instrument | InstrumentAddress | |
leverage선택 | number | 1 이상의 정수입니다. |
mode선택 | "max" | "smart" |
SetMarginModeRequest
POST /v1/account/margin-mode의 본문입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
connection_id | number | |
instrument | InstrumentAddress | |
margin_mode | MarginMode |
Accepted
모든 거래 명령의 응답입니다: 거래소가 아니라 터미널이 접수했다는
뜻입니다. 거래소의 확인, 체결 또는 거부는 스트림의 account.orders나
GET /v1/account/orders로 도착합니다.
| 필드 | 타입 | 설명 |
|---|---|---|
accepted | boolean | |
operation_id | string | 터미널의 작업 로그 파일에 기록되는 작업입니다. |
key | string | null | 주문(t-…) 또는 트리거(sl_…, tp_…, stop_…)가 account.orders에
나타나는 터미널의 키입니다. 취소, 수정, 레버리지에서는 null입니다. |
connection_id | number | |
instrument | InstrumentAddress |
CellPosition
탭 그리드의 셀입니다: 열은 왼쪽에서 오른쪽, 행은 위에서 아래, 셀은 행 안에서의 위치입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
column | number | |
row | number | |
cell | number |
Stack
탭 안의 스택 — 체결 테이프와 클러스터가 있는 호가창 — 입니다. widget_id는
터미널의 이번 실행에서 전역이며, 스택이 empty인 동안 instrument와
connection_id는 null이고, 스택 그룹 안에 숨겨진 스택은 position이
null입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
widget_id | number | |
instrument | InstrumentAddress | null | |
connection_id | number | null | |
empty | boolean | |
frozen | boolean | |
position | CellPosition | null |
Chart
탭 안의 차트입니다. owner_widget_id는 차트가 따르는 스택이며, 독립된 차트는 null입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
widget_id | number | |
instrument | InstrumentAddress | null | |
connection_id | number | null | |
interval | string | 캔들 인터벌 코드(1m, 5m, …)입니다. |
owner_widget_id | number | null | |
position | CellPosition | null |
Tab
창의 탭입니다: id는 창마다 1부터 번호가 매겨지며, 창마다 정확히 하나의 탭이 active입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
id | number | |
name | string | |
active | boolean | |
stacks | Stack[] | |
charts | Chart[] |
WindowGeometry
화면의 논리 픽셀 단위로 나타낸 창의 위치와 크기입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
x | number | |
y | number | |
width | number | |
height | number | |
maximized | boolean |
Window
터미널 창입니다. main은 API로 닫을 수 없으며, chart_window는 분리된 차트입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
id | number | |
main | boolean | |
chart_window | boolean | |
focused | boolean | |
geometry | WindowGeometry | |
monitor | string | null | OS의 모니터 이름 또는 null입니다. |
tabs | Tab[] |
WorkspaceSnapshot
GET /v1/workspace와 workspace 이벤트의 data입니다: 모든 창이 id 오름차순으로 나열됩니다.
| 필드 | 타입 | 설명 |
|---|---|---|
windows | Window[] |
Workspace
GET /v1/workspace. id는 터미널의 이번 실행에서만 쓰이는 내부 번호입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
data | WorkspaceSnapshot |
WorkspaceWindow
GET /v1/workspace/windows/{id}.
| 필드 | 타입 | 설명 |
|---|---|---|
data | Window |
OpenTarget
type OpenTarget = "new_tab" | "new_window"워크스페이스에서 연 것이 놓이는 위치입니다.
OpenStackRequest
POST /v1/workspace/stacks의 본문입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
instrument | InstrumentAddress | |
connection_id선택 | number | |
chart선택 | boolean | 스택 위에 여는 같은 종목의 차트입니다. |
target선택 | OpenTarget | new_tab(기본값) 또는 new_window입니다. |
window_id선택 | number | 새 탭을 열 창이며, 생략하면 포커스된 창입니다. |
activate선택 | boolean | false는 탭을 백그라운드에서 엽니다. 새 창은 항상 포커스를 가져갑니다. |
OpenMultiviewRequest
POST /v1/workspace/multiview의 본문입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
base | string | 코인(BTC) 또는 페어(BTC/USDT)입니다. |
target선택 | OpenTarget | 생략하면 멀티뷰의 «열기» 설정이 결정합니다. |
window_id선택 | number | |
activate선택 | boolean |
TabItemRequest
POST /v1/workspace/tabs와 …/tabs/{tab}/stacks의 열 하나입니다: 스택과, chart가 있으면 그 위의 차트입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
instrument | InstrumentAddress | |
connection_id선택 | number | |
chart선택 | boolean |
OpenTabRequest
POST /v1/workspace/tabs의 본문입니다: 항목마다 열 하나이며, 1개에서 50개까지입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
items | TabItemRequest[] | |
name선택 | string | 최대 64자이며, 생략하면 터미널이 종목 이름을 따라 탭 이름을 짓습니다. |
target선택 | OpenTarget | |
window_id선택 | number | |
activate선택 | boolean |
AddStacksRequest
POST /v1/workspace/windows/{id}/tabs/{tab}/stacks의 본문입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
items | TabItemRequest[] |
StackInstrumentRequest
PATCH /v1/workspace/stacks/{widget_id}의 본문입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
instrument | InstrumentAddress | |
connection_id선택 | number |
WorkspaceOutcome
워크스페이스 명령에 대해 창이 한 일입니다. 열기의 경우: 창, 새 탭, 그리고
열 순서대로의 stacks와 charts입니다. 닫기와 활성화의 경우: 해당 id이며,
나머지는 null이거나 비어 있습니다.
| 필드 | 타입 | 설명 |
|---|---|---|
window_id | number | null | |
tab_id | number | null | |
stacks | number[] | |
charts | number[] |
SettingRow
터미널 설정 테이블의 행 하나이며, 저장된 그대로입니다. scope는 global
또는 order_book이고, scope_id는 default, 종목 주소, 또는 핫키의 경우
null이며, connection_id는 소유한 연결 또는 null입니다. value는
디코딩된 JSON이며 숫자는 쓰인 그대로입니다. writable은
PATCH /v1/settings가 그 키를 받는지를 알려 줍니다. settings 스트림
프레임에는 이 플래그가 없습니다.
| 필드 | 타입 | 설명 |
|---|---|---|
scope | string | |
scope_id | string | null | |
connection_id | number | null | |
category | string | |
key | string | |
value | unknown | |
writable선택 | boolean |
Settings
GET /v1/settings: 저장된 그대로의 행이며, 기본값 단계는 채우지 않습니다.
| 필드 | 타입 | 설명 |
|---|---|---|
data | SettingRow[] |
ResolvedFrom
type ResolvedFrom = "instrument" | "connection" | "app_instrument" | "global" | OpenString스택 설정을 가져온 단계입니다.
OrderbookSetting
스택 설정 하나와 그 값을 가져온 단계입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
value | unknown | |
resolved_from | ResolvedFrom | |
writable | boolean |
OrderbookSettings
GET /v1/settings/orderbook: 종목의 스택이 보는 그대로의 data[category][key]입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
connection_id | number | |
instrument | InstrumentAddress | |
data | Record<string, Record<string, OrderbookSetting>> |
SettingChange
PATCH /v1/settings의 변경 하나입니다. instrument는 페어의 행(scope
order_book)을 가리키고, scope: "order_book"에 종목 없이 connection_id만
있으면 연결의 기본값을, 둘 다 없으면 전역 기본값을 가리킵니다. 전역 설정은
연결을 받지 않습니다.
| 필드 | 타입 | 설명 |
|---|---|---|
scope선택 | "global" | "order_book" | |
instrument선택 | InstrumentAddress | |
connection_id선택 | number | |
category | string | |
key | string | |
value | unknown |
UpdateSettingsRequest
PATCH /v1/settings의 본문입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
changes | SettingChange[] |
SettingsApplied
PATCH /v1/settings: 적용된 변경 수입니다(전부 적용되거나, 호출이 거부됩니다).
| 필드 | 타입 | 설명 |
|---|---|---|
applied | number |
BookTopParams
book.top 구독의 매개변수이며, 다른 토픽은 받지 않습니다. 와이어 이름을 씁니다.
| 필드 | 타입 | 설명 |
|---|---|---|
depth선택 | number | 1–200, 기본값은 50입니다. |
interval_ms선택 | number | 컨플레이션 간격이며, 최소 50, 기본값은 100입니다. |
SubscribeRequest
와이어로 전송되는 그대로의 subscribe 요청입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
type | "subscribe" | |
request_id | string | |
topic | Topic | |
instrument선택 | InstrumentAddress | 시장 토픽에는 필수이며, account.*에서는 생략합니다. |
connection_id선택 | number | 시장 토픽에서는 공통 규칙에 따라 선택되며, account.*에는 필수입니다. |
params선택 | BookTopParams |
UnsubscribeRequest
와이어로 전송되는 그대로의 unsubscribe 요청입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
type | "unsubscribe" | |
request_id | string | |
sub | string |
SubscribedFrame
subscribe에 대한 서버 응답입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
type | "subscribed" | |
request_id선택 | string | |
sub | string | 구독 id이며, "{stream}:{topic}"("{connection}:account.<topic>", "workspace") 형태입니다. unsubscribe에 전달합니다. |
connection_id선택 | number | 시장 토픽과 계정 토픽에 대해 선택된 연결이며, workspace에는 없습니다. |
UnsubscribedFrame
unsubscribe에 대한 서버 응답입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
type | "unsubscribed" | |
request_id선택 | string | |
sub | string |
ErrorFrame
error 프레임입니다: request_id가 있으면 요청에 대한 응답이고, sub는
있고 request_id가 없으면 서버가 그 구독을 제거했다는 뜻입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
type | "error" | |
request_id선택 | string | |
sub선택 | string | |
code | ErrorCode | |
message | string |
EventFrame
클라이언트가 토픽으로 태그하기 전, 도착한 그대로의 event 프레임입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
type | "event" | |
sub | string | |
seq | number | 구독 내 이벤트 번호이며, trades에서는 1씩 증가합니다. |
ts | Timestamp | |
data | T |
Gap
gap 프레임입니다: trades 구독의 from_seq..to_seq 이벤트가 손실되었습니다.
| 필드 | 타입 | 설명 |
|---|---|---|
type | "gap" | |
sub | string | |
from_seq | number | |
to_seq | number | |
reason | string |
SubscriptionError
서버가 구독을 제거했습니다(sub는 있고 request_id가 없는 error 프레임).
| 필드 | 타입 | 설명 |
|---|---|---|
type | "error" | |
sub | string | |
code | ErrorCode | |
message | string |
Subscribed
interface Subscribed extends SubscribedFramesubscribe가 완료하며 반환하는 값입니다: subscribed 프레임에 요청한 내용을 더한 것입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
topic | Topic | |
instrument선택 | InstrumentAddress | account.* 구독에는 없습니다. |
OrdersUpdate
account.orders 이벤트의 data입니다: 변경 후 한 종목의 주문과 트리거입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
instrument | InstrumentAddress | |
orders | Order[] | |
triggers | TriggerOrder[] |
PositionUpdate
account.positions 이벤트의 data입니다. 청산은 position: null로 도착합니다.
| 필드 | 타입 | 설명 |
|---|---|---|
instrument | InstrumentAddress | |
position | Position | null |
TradesEvent
interface TradesEvent extends EventFrame<Trade[]>클라이언트가 토픽으로 태그할 수 있는 모든 이벤트입니다. topic은 sub에서 읽습니다(첫 콜론 뒤의 부분).
| 필드 | 타입 | 설명 |
|---|---|---|
topic | "trades" |
TickerEvent
interface TickerEvent extends EventFrame<Ticker>| 필드 | 타입 | 설명 |
|---|---|---|
topic | "ticker" |
MarkPriceEvent
interface MarkPriceEvent extends EventFrame<MarkPrice>| 필드 | 타입 | 설명 |
|---|---|---|
topic | "mark_price" |
BookTopEvent
interface BookTopEvent extends EventFrame<BookTop>| 필드 | 타입 | 설명 |
|---|---|---|
topic | "book.top" |
ClustersEvent
interface ClustersEvent extends EventFrame<ClusterBucket>| 필드 | 타입 | 설명 |
|---|---|---|
topic | "clusters" |
AccountOrdersEvent
interface AccountOrdersEvent extends EventFrame<OrdersUpdate>| 필드 | 타입 | 설명 |
|---|---|---|
topic | "account.orders" |
AccountPositionsEvent
interface AccountPositionsEvent extends EventFrame<PositionUpdate>| 필드 | 타입 | 설명 |
|---|---|---|
topic | "account.positions" |
AccountBalancesEvent
interface AccountBalancesEvent extends EventFrame<Balance>| 필드 | 타입 | 설명 |
|---|---|---|
topic | "account.balances" |
AccountFillsEvent
interface AccountFillsEvent extends EventFrame<Fill>| 필드 | 타입 | 설명 |
|---|---|---|
topic | "account.fills" |
WorkspaceEvent
interface WorkspaceEvent extends EventFrame<WorkspaceSnapshot>workspace 이벤트의 data입니다: 전체 레이아웃이며, 첫 프레임은 현재 스냅샷입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
topic | "workspace" |
SettingsEvent
interface SettingsEvent extends EventFrame<SettingRow>settings 이벤트의 data입니다: 기록된 행 하나이며, writable은 없습니다.
| 필드 | 타입 | 설명 |
|---|---|---|
topic | "settings" |
UnknownTopicEvent
interface UnknownTopicEvent extends EventFrame<unknown>이 클라이언트 버전이 모르는 토픽의 이벤트입니다(계약은 v1 안에서 토픽을
추가할 수 있습니다). topic은 undefined이며, 원래 토픽 이름은 sub에서
콜론 뒤의 부분입니다.
| 필드 | 타입 | 설명 |
|---|---|---|
topic | undefined |
Event
type Event = | TradesEvent
| TickerEvent
| MarkPriceEvent
| BookTopEvent
| ClustersEvent
| AccountOrdersEvent
| AccountPositionsEvent
| AccountBalancesEvent
| AccountFillsEvent
| WorkspaceEvent
| SettingsEvent
| UnknownTopicEventtopic으로 구별되는 이벤트 프레임입니다.
StreamFrame
type StreamFrame = Event | Gap | SubscriptionErrorStream을 순회할 때 나오는 것이며, 도착 순서대로입니다.
@spectre-trade/terminal 코드의 커밋 2d1c324에서 생성되었습니다.