{ "info": { "name": "bitForum Crypto API", "description": "bitForum 코인 관련 API 엔드포인트 (https://api.bitforum.io)", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "variable": [ { "key": "baseUrl", "value": "https://localhost:4000", "type": "string" }, { "key": "symbol", "value": "btc", "type": "string" } ], "item": [ { "name": "Tickers", "description": "현재가 관련 API", "item": [ { "name": "전체 Ticker 목록", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/tickers", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "tickers"] }, "description": "등록된 모든 코인의 현재가 목록을 조회합니다." } }, { "name": "주요 Ticker 목록", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/tickers/featured", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "tickers", "featured"] }, "description": "주요(Featured) 코인의 현재가 목록을 조회합니다." } }, { "name": "Ticker 상세", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/ticker", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "ticker"] }, "description": "특정 코인의 현재가 상세 정보를 조회합니다.\n\nRoute Params:\n- symbol: 코인 심볼 (예: btc, eth, xrp)" } } ] }, { "name": "Candles", "description": "캔들(차트) 관련 API", "item": [ { "name": "초(Seconds) 캔들", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/seconds?count=200", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "candles", "seconds"], "query": [ { "key": "count", "value": "200", "description": "조회할 캔들 수 (1~200, 기본값: 200)" } ] }, "description": "특정 코인의 초 단위 캔들 데이터를 조회합니다.\n\n최근 3개월 이내 데이터만 조회 가능합니다." } }, { "name": "분(Minutes) 캔들", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/minutes/1?count=200", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "candles", "minutes", "1"], "query": [ { "key": "count", "value": "200", "description": "조회할 캔들 수 (1~200, 기본값: 200)" } ] }, "description": "특정 코인의 분 단위 캔들 데이터를 조회합니다.\n\nRoute Params:\n- unit: 캔들 집계 단위 (1, 3, 5, 10, 15, 30, 60, 240분)" } }, { "name": "일(Days) 캔들", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/days?count=200", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "candles", "days"], "query": [ { "key": "count", "value": "200", "description": "조회할 캔들 수 (1~200, 기본값: 200)" } ] }, "description": "특정 코인의 일 단위 캔들 데이터를 조회합니다.\n\n추가 필드: prevClosingPrice, changePrice, changeRate" } }, { "name": "주(Weeks) 캔들", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/weeks?count=200", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "candles", "weeks"], "query": [ { "key": "count", "value": "200", "description": "조회할 캔들 수 (1~200, 기본값: 200)" } ] }, "description": "특정 코인의 주 단위 캔들 데이터를 조회합니다.\n\n추가 필드: firstDayOfPeriod (캔들 집계 시작일)" } }, { "name": "월(Months) 캔들", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/months?count=200", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "candles", "months"], "query": [ { "key": "count", "value": "200", "description": "조회할 캔들 수 (1~200, 기본값: 200)" } ] }, "description": "특정 코인의 월 단위 캔들 데이터를 조회합니다.\n\n추가 필드: firstDayOfPeriod (캔들 집계 시작일)" } }, { "name": "연(Years) 캔들", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/years?count=200", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "candles", "years"], "query": [ { "key": "count", "value": "200", "description": "조회할 캔들 수 (1~200, 기본값: 200)" } ] }, "description": "특정 코인의 연 단위 캔들 데이터를 조회합니다.\n\n추가 필드: firstDayOfPeriod (캔들 집계 시작일)" } }, { "name": "실시간(Live) 캔들", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/live/m1", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "candles", "live", "m1"] }, "description": "특정 코인의 실시간 캔들 데이터를 조회합니다 (Redis 캐시).\n\nRoute Params:\n- interval: 캔들 간격 (예: m1, m3, m5, m10, m15, m30, m60, m240)" } } ] }, { "name": "Trades", "description": "체결 내역 관련 API", "item": [ { "name": "최근 체결 내역", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/trades?count=50", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "trades"], "query": [ { "key": "count", "value": "50", "description": "조회할 체결 수 (1~100, 기본값: 50)" } ] }, "description": "특정 코인의 최근 체결 내역을 조회합니다 (Upbit REST API)." } }, { "name": "실시간(Live) 체결", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/trades/live", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "trades", "live"] }, "description": "특정 코인의 실시간 체결 데이터를 조회합니다 (Redis 캐시, WebSocket 수신 데이터)." } } ] }, { "name": "Orderbook", "description": "호가 정보 관련 API", "item": [ { "name": "호가 정보", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/orderbook", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "orderbook"] }, "description": "특정 코인의 호가(매수/매도) 정보를 조회합니다 (Upbit REST API)." } }, { "name": "실시간(Live) 호가", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/orderbook/live", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "orderbook", "live"] }, "description": "특정 코인의 실시간 호가 데이터를 조회합니다 (Redis 캐시, WebSocket 수신 데이터)." } } ] }, { "name": "Markets", "description": "마켓 목록 관련 API", "item": [ { "name": "전체 마켓 목록", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/markets", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "markets"] }, "description": "Upbit에 등록된 전체 마켓(거래쌍) 목록을 조회합니다.\n\n마켓 이벤트(유의 종목, 경보) 정보를 포함합니다." } } ] }, { "name": "SignalR Hub (WebSocket)", "description": "실시간 데이터 Push — SignalR Hub\n\nWebSocket URL: wss://localhost:4000/hubs/crypto\n운영: wss://api.bitforum.io/hubs/crypto\n\n── 연결 방법 (Postman WebSocket 탭) ──\n\n1. Postman > New > WebSocket 선택\n2. URL: wss://localhost:4000/hubs/crypto 입력 후 Connect\n3. 핸드셰이크 메시지 전송:\n {\"protocol\":\"json\",\"version\":1}\\x1e\n4. 구독 메시지 전송 (아래 예시 참고)\n\n── Hub 메서드 (클라이언트 → 서버) ──\n\nSubscribeSymbol: 특정 코인 구독 (ticker/trade/orderbook/candle)\n {\"type\":1,\"target\":\"SubscribeSymbol\",\"arguments\":[\"btc\"]}\\x1e\n\nUnsubscribeSymbol: 특정 코인 구독 해제\n {\"type\":1,\"target\":\"UnsubscribeSymbol\",\"arguments\":[\"btc\"]}\\x1e\n\nSubscribeTickers: 전체 Ticker 목록 구독\n {\"type\":1,\"target\":\"SubscribeTickers\",\"arguments\":[]}\\x1e\n\nUnsubscribeTickers: 전체 Ticker 목록 구독 해제\n {\"type\":1,\"target\":\"UnsubscribeTickers\",\"arguments\":[]}\\x1e\n\n── 수신 이벤트 (서버 → 클라이언트) ──\n\nReceiveTicker: 개별 코인 현재가\nReceiveTickers: 전체 코인 현재가 목록\nReceiveTrade: 체결\nReceiveOrderbook: 호가\nReceiveCandle: 캔들\n\n참고: \\x1e 는 SignalR Record Separator (U+001E) — 메시지 끝 구분자", "item": [ { "name": "negotiate (연결 협상)", "request": { "method": "POST", "header": [], "url": { "raw": "{{baseUrl}}/hubs/crypto/negotiate?negotiateVersion=1", "host": ["{{baseUrl}}"], "path": ["hubs", "crypto", "negotiate"], "query": [ { "key": "negotiateVersion", "value": "1", "description": "SignalR negotiate 프로토콜 버전" } ] }, "description": "SignalR Hub 연결 전 협상 엔드포인트.\n\n응답으로 connectionId, availableTransports 등을 반환합니다.\nWebSocket 연결 시 자동으로 호출되지만, 직접 테스트도 가능합니다." } }, { "name": "[WSS] SubscribeSymbol", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/hubs/crypto", "host": ["{{baseUrl}}"], "path": ["hubs", "crypto"] }, "description": "WebSocket 연결 후 전송할 메시지:\n\n1. 핸드셰이크:\n{\"protocol\":\"json\",\"version\":1}\\x1e\n\n2. 구독:\n{\"type\":1,\"target\":\"SubscribeSymbol\",\"arguments\":[\"btc\"]}\\x1e\n\n구독 후 수신 이벤트:\n- ReceiveTicker: 해당 코인 현재가\n- ReceiveTrade: 해당 코인 체결\n- ReceiveOrderbook: 해당 코인 호가\n- ReceiveCandle: 해당 코인 캔들\n\n구독 해제:\n{\"type\":1,\"target\":\"UnsubscribeSymbol\",\"arguments\":[\"btc\"]}\\x1e\n\n※ Postman WebSocket 탭에서 wss://localhost:4000/hubs/crypto 로 직접 연결하세요." } }, { "name": "[WSS] SubscribeTickers", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/hubs/crypto", "host": ["{{baseUrl}}"], "path": ["hubs", "crypto"] }, "description": "WebSocket 연결 후 전송할 메시지:\n\n1. 핸드셰이크:\n{\"protocol\":\"json\",\"version\":1}\\x1e\n\n2. 전체 Ticker 구독:\n{\"type\":1,\"target\":\"SubscribeTickers\",\"arguments\":[]}\\x1e\n\n구독 후 수신 이벤트:\n- ReceiveTickers: 전체 코인 현재가 목록 (주기적 갱신)\n- ReceiveTicker: 개별 코인 현재가 (변동 시)\n\n구독 해제:\n{\"type\":1,\"target\":\"UnsubscribeTickers\",\"arguments\":[]}\\x1e\n\n※ Postman WebSocket 탭에서 wss://localhost:4000/hubs/crypto 로 직접 연결하세요." } } ] } ] }