{ "info": { "_postman_id": "bf-crypto-api-collection", "name": "bitForum Crypto API", "description": "bitForum 암호화폐 Quotation API 컬렉션\n\n- REST API: 초기 로딩용 (마켓, 시세, 체결, 호가, 캔들)\n- Live API: WebSocket → Redis 실시간 데이터 조회", "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": "Market", "item": [ { "name": "마켓 목록 조회", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/markets", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "markets"] }, "description": "KRW 거래 가능 마켓 전체 목록을 조회합니다.\n\n- 캐시: 30분\n- Upbit API: GET /v1/market/all" }, "response": [] } ] }, { "name": "Ticker", "item": [ { "name": "시세 목록 조회", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/tickers", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "tickers"] }, "description": "활성화된 전체 코인의 실시간 시세 목록을 조회합니다.\n\n- 소스: Redis(WebSocket) + DB(코인 정보) 병합" }, "response": [] }, { "name": "추천 시세 목록 조회", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/tickers/featured", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "tickers", "featured"] }, "description": "큐레이션된 추천 코인의 실시간 시세 목록을 조회합니다.\n\n- 소스: Redis(WebSocket) + DB(코인 정보) 병합\n- IsFeatured = true 인 코인만 필터링" }, "response": [] }, { "name": "현재가 상세 조회", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/ticker", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "ticker"] }, "description": "특정 코인의 현재가 상세 정보를 조회합니다.\n\n- 캐시: 10초\n- Upbit API: GET /v1/ticker\n- 응답: 시가, 고가, 저가, 종가, 전일종가, 52주 최고/최저가, 누적 거래량/금액 등 17개 필드" }, "response": [] } ] }, { "name": "Trade", "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": "특정 코인의 최근 체결 내역을 조회합니다.\n\n- 캐시: 5초\n- Upbit API: GET /v1/trades/ticks\n- 응답: 체결가, 체결량, 매수/매도(ASK/BID), 체결번호" }, "response": [] }, { "name": "실시간 체결 조회 (Live)", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/trades/live", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "trades", "live"] }, "description": "WebSocket으로 수신된 최신 체결 1건을 조회합니다.\n\n- 소스: Redis (WebSocket → Redis 저장)\n- 응답: 체결가, 체결량, 매수/매도, 타임스탬프" }, "response": [] } ] }, { "name": "Orderbook", "item": [ { "name": "호가 정보 조회", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/orderbook", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "orderbook"] }, "description": "특정 코인의 호가 정보를 조회합니다.\n\n- 캐시: 5초\n- Upbit API: GET /v1/orderbook\n- 응답: 매도/매수 호가 리스트, 매도/매수 잔량 합계" }, "response": [] }, { "name": "실시간 호가 조회 (Live)", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/orderbook/live", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "orderbook", "live"] }, "description": "WebSocket으로 수신된 실시간 호가 정보를 조회합니다.\n\n- 소스: Redis (WebSocket → Redis 저장)\n- 응답: 매도/매수 호가 리스트, 잔량 합계, 타임스탬프" }, "response": [] } ] }, { "name": "Candle", "item": [ { "name": "초봉 조회", "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- 캐시: 1분\n- Upbit API: GET /v1/candles/seconds" }, "response": [] }, { "name": "분봉 조회 (1분)", "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\n- 캐시: 5분\n- Upbit API: GET /v1/candles/minutes/{unit}\n- 허용 unit: 1, 3, 5, 10, 15, 30, 60, 240" }, "response": [] }, { "name": "분봉 조회 (5분)", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/minutes/5?count=200", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "candles", "minutes", "5"], "query": [ { "key": "count", "value": "200", "description": "캔들 개수 (1~200, 기본값: 200)" } ] }, "description": "5분봉 캔들 데이터를 조회합니다.\n\n- 캐시: 5분\n- Upbit API: GET /v1/candles/minutes/5" }, "response": [] }, { "name": "분봉 조회 (15분)", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/minutes/15?count=200", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "candles", "minutes", "15"], "query": [ { "key": "count", "value": "200", "description": "캔들 개수 (1~200, 기본값: 200)" } ] }, "description": "15분봉 캔들 데이터를 조회합니다.\n\n- 캐시: 5분\n- Upbit API: GET /v1/candles/minutes/15" }, "response": [] }, { "name": "분봉 조회 (60분)", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/minutes/60?count=200", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "candles", "minutes", "60"], "query": [ { "key": "count", "value": "200", "description": "캔들 개수 (1~200, 기본값: 200)" } ] }, "description": "60분봉 (1시간) 캔들 데이터를 조회합니다.\n\n- 캐시: 5분\n- Upbit API: GET /v1/candles/minutes/60" }, "response": [] }, { "name": "분봉 조회 (240분)", "request": { "method": "GET", "header": [], "url": { "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/minutes/240?count=200", "host": ["{{baseUrl}}"], "path": ["api", "crypto", "{{symbol}}", "candles", "minutes", "240"], "query": [ { "key": "count", "value": "200", "description": "캔들 개수 (1~200, 기본값: 200)" } ] }, "description": "240분봉 (4시간) 캔들 데이터를 조회합니다.\n\n- 캐시: 5분\n- Upbit API: GET /v1/candles/minutes/240" }, "response": [] }, { "name": "일봉 조회", "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- 캐시: 5분\n- Upbit API: GET /v1/candles/days" }, "response": [] }, { "name": "주봉 조회", "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- 캐시: 5분\n- Upbit API: GET /v1/candles/weeks" }, "response": [] }, { "name": "월봉 조회", "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- 캐시: 5분\n- Upbit API: GET /v1/candles/months" }, "response": [] }, { "name": "연봉 조회", "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- 캐시: 5분\n- Upbit API: GET /v1/candles/years" }, "response": [] }, { "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": "WebSocket으로 수신된 실시간 1분봉 캔들 1건을 조회합니다.\n\n- 소스: Redis (WebSocket → Redis 저장)\n- interval: m1 (1분봉)\n- 응답: 시가, 고가, 저가, 종가, 거래량, 거래금액" }, "response": [] } ] } ] }