bitforum-crypto.postman_collection.json 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. {
  2. "info": {
  3. "name": "bitForum Crypto API",
  4. "description": "bitForum 코인 관련 API 엔드포인트 (https://api.bitforum.io)",
  5. "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  6. },
  7. "variable": [
  8. {
  9. "key": "baseUrl",
  10. "value": "https://localhost:4000",
  11. "type": "string"
  12. },
  13. {
  14. "key": "symbol",
  15. "value": "btc",
  16. "type": "string"
  17. }
  18. ],
  19. "item": [
  20. {
  21. "name": "Tickers",
  22. "description": "현재가 관련 API",
  23. "item": [
  24. {
  25. "name": "전체 Ticker 목록",
  26. "request": {
  27. "method": "GET",
  28. "header": [],
  29. "url": {
  30. "raw": "{{baseUrl}}/api/crypto/tickers",
  31. "host": ["{{baseUrl}}"],
  32. "path": ["api", "crypto", "tickers"]
  33. },
  34. "description": "등록된 모든 코인의 현재가 목록을 조회합니다."
  35. }
  36. },
  37. {
  38. "name": "주요 Ticker 목록",
  39. "request": {
  40. "method": "GET",
  41. "header": [],
  42. "url": {
  43. "raw": "{{baseUrl}}/api/crypto/tickers/featured",
  44. "host": ["{{baseUrl}}"],
  45. "path": ["api", "crypto", "tickers", "featured"]
  46. },
  47. "description": "주요(Featured) 코인의 현재가 목록을 조회합니다."
  48. }
  49. },
  50. {
  51. "name": "Ticker 상세",
  52. "request": {
  53. "method": "GET",
  54. "header": [],
  55. "url": {
  56. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/ticker",
  57. "host": ["{{baseUrl}}"],
  58. "path": ["api", "crypto", "{{symbol}}", "ticker"]
  59. },
  60. "description": "특정 코인의 현재가 상세 정보를 조회합니다.\n\nRoute Params:\n- symbol: 코인 심볼 (예: btc, eth, xrp)"
  61. }
  62. }
  63. ]
  64. },
  65. {
  66. "name": "Candles",
  67. "description": "캔들(차트) 관련 API",
  68. "item": [
  69. {
  70. "name": "초(Seconds) 캔들",
  71. "request": {
  72. "method": "GET",
  73. "header": [],
  74. "url": {
  75. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/seconds?count=200",
  76. "host": ["{{baseUrl}}"],
  77. "path": ["api", "crypto", "{{symbol}}", "candles", "seconds"],
  78. "query": [
  79. {
  80. "key": "count",
  81. "value": "200",
  82. "description": "조회할 캔들 수 (1~200, 기본값: 200)"
  83. }
  84. ]
  85. },
  86. "description": "특정 코인의 초 단위 캔들 데이터를 조회합니다.\n\n최근 3개월 이내 데이터만 조회 가능합니다."
  87. }
  88. },
  89. {
  90. "name": "분(Minutes) 캔들",
  91. "request": {
  92. "method": "GET",
  93. "header": [],
  94. "url": {
  95. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/minutes/1?count=200",
  96. "host": ["{{baseUrl}}"],
  97. "path": ["api", "crypto", "{{symbol}}", "candles", "minutes", "1"],
  98. "query": [
  99. {
  100. "key": "count",
  101. "value": "200",
  102. "description": "조회할 캔들 수 (1~200, 기본값: 200)"
  103. }
  104. ]
  105. },
  106. "description": "특정 코인의 분 단위 캔들 데이터를 조회합니다.\n\nRoute Params:\n- unit: 캔들 집계 단위 (1, 3, 5, 10, 15, 30, 60, 240분)"
  107. }
  108. },
  109. {
  110. "name": "일(Days) 캔들",
  111. "request": {
  112. "method": "GET",
  113. "header": [],
  114. "url": {
  115. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/days?count=200",
  116. "host": ["{{baseUrl}}"],
  117. "path": ["api", "crypto", "{{symbol}}", "candles", "days"],
  118. "query": [
  119. {
  120. "key": "count",
  121. "value": "200",
  122. "description": "조회할 캔들 수 (1~200, 기본값: 200)"
  123. }
  124. ]
  125. },
  126. "description": "특정 코인의 일 단위 캔들 데이터를 조회합니다.\n\n추가 필드: prevClosingPrice, changePrice, changeRate"
  127. }
  128. },
  129. {
  130. "name": "주(Weeks) 캔들",
  131. "request": {
  132. "method": "GET",
  133. "header": [],
  134. "url": {
  135. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/weeks?count=200",
  136. "host": ["{{baseUrl}}"],
  137. "path": ["api", "crypto", "{{symbol}}", "candles", "weeks"],
  138. "query": [
  139. {
  140. "key": "count",
  141. "value": "200",
  142. "description": "조회할 캔들 수 (1~200, 기본값: 200)"
  143. }
  144. ]
  145. },
  146. "description": "특정 코인의 주 단위 캔들 데이터를 조회합니다.\n\n추가 필드: firstDayOfPeriod (캔들 집계 시작일)"
  147. }
  148. },
  149. {
  150. "name": "월(Months) 캔들",
  151. "request": {
  152. "method": "GET",
  153. "header": [],
  154. "url": {
  155. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/months?count=200",
  156. "host": ["{{baseUrl}}"],
  157. "path": ["api", "crypto", "{{symbol}}", "candles", "months"],
  158. "query": [
  159. {
  160. "key": "count",
  161. "value": "200",
  162. "description": "조회할 캔들 수 (1~200, 기본값: 200)"
  163. }
  164. ]
  165. },
  166. "description": "특정 코인의 월 단위 캔들 데이터를 조회합니다.\n\n추가 필드: firstDayOfPeriod (캔들 집계 시작일)"
  167. }
  168. },
  169. {
  170. "name": "연(Years) 캔들",
  171. "request": {
  172. "method": "GET",
  173. "header": [],
  174. "url": {
  175. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/years?count=200",
  176. "host": ["{{baseUrl}}"],
  177. "path": ["api", "crypto", "{{symbol}}", "candles", "years"],
  178. "query": [
  179. {
  180. "key": "count",
  181. "value": "200",
  182. "description": "조회할 캔들 수 (1~200, 기본값: 200)"
  183. }
  184. ]
  185. },
  186. "description": "특정 코인의 연 단위 캔들 데이터를 조회합니다.\n\n추가 필드: firstDayOfPeriod (캔들 집계 시작일)"
  187. }
  188. },
  189. {
  190. "name": "실시간(Live) 캔들",
  191. "request": {
  192. "method": "GET",
  193. "header": [],
  194. "url": {
  195. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/live/m1",
  196. "host": ["{{baseUrl}}"],
  197. "path": ["api", "crypto", "{{symbol}}", "candles", "live", "m1"]
  198. },
  199. "description": "특정 코인의 실시간 캔들 데이터를 조회합니다 (Redis 캐시).\n\nRoute Params:\n- interval: 캔들 간격 (예: m1, m3, m5, m10, m15, m30, m60, m240)"
  200. }
  201. }
  202. ]
  203. },
  204. {
  205. "name": "Trades",
  206. "description": "체결 내역 관련 API",
  207. "item": [
  208. {
  209. "name": "최근 체결 내역",
  210. "request": {
  211. "method": "GET",
  212. "header": [],
  213. "url": {
  214. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/trades?count=50",
  215. "host": ["{{baseUrl}}"],
  216. "path": ["api", "crypto", "{{symbol}}", "trades"],
  217. "query": [
  218. {
  219. "key": "count",
  220. "value": "50",
  221. "description": "조회할 체결 수 (1~100, 기본값: 50)"
  222. }
  223. ]
  224. },
  225. "description": "특정 코인의 최근 체결 내역을 조회합니다 (Upbit REST API)."
  226. }
  227. },
  228. {
  229. "name": "실시간(Live) 체결",
  230. "request": {
  231. "method": "GET",
  232. "header": [],
  233. "url": {
  234. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/trades/live",
  235. "host": ["{{baseUrl}}"],
  236. "path": ["api", "crypto", "{{symbol}}", "trades", "live"]
  237. },
  238. "description": "특정 코인의 실시간 체결 데이터를 조회합니다 (Redis 캐시, WebSocket 수신 데이터)."
  239. }
  240. }
  241. ]
  242. },
  243. {
  244. "name": "Orderbook",
  245. "description": "호가 정보 관련 API",
  246. "item": [
  247. {
  248. "name": "호가 정보",
  249. "request": {
  250. "method": "GET",
  251. "header": [],
  252. "url": {
  253. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/orderbook",
  254. "host": ["{{baseUrl}}"],
  255. "path": ["api", "crypto", "{{symbol}}", "orderbook"]
  256. },
  257. "description": "특정 코인의 호가(매수/매도) 정보를 조회합니다 (Upbit REST API)."
  258. }
  259. },
  260. {
  261. "name": "실시간(Live) 호가",
  262. "request": {
  263. "method": "GET",
  264. "header": [],
  265. "url": {
  266. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/orderbook/live",
  267. "host": ["{{baseUrl}}"],
  268. "path": ["api", "crypto", "{{symbol}}", "orderbook", "live"]
  269. },
  270. "description": "특정 코인의 실시간 호가 데이터를 조회합니다 (Redis 캐시, WebSocket 수신 데이터)."
  271. }
  272. }
  273. ]
  274. },
  275. {
  276. "name": "Markets",
  277. "description": "마켓 목록 관련 API",
  278. "item": [
  279. {
  280. "name": "전체 마켓 목록",
  281. "request": {
  282. "method": "GET",
  283. "header": [],
  284. "url": {
  285. "raw": "{{baseUrl}}/api/crypto/markets",
  286. "host": ["{{baseUrl}}"],
  287. "path": ["api", "crypto", "markets"]
  288. },
  289. "description": "Upbit에 등록된 전체 마켓(거래쌍) 목록을 조회합니다.\n\n마켓 이벤트(유의 종목, 경보) 정보를 포함합니다."
  290. }
  291. }
  292. ]
  293. },
  294. {
  295. "name": "SignalR Hub (WebSocket)",
  296. "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) — 메시지 끝 구분자",
  297. "item": [
  298. {
  299. "name": "negotiate (연결 협상)",
  300. "request": {
  301. "method": "POST",
  302. "header": [],
  303. "url": {
  304. "raw": "{{baseUrl}}/hubs/crypto/negotiate?negotiateVersion=1",
  305. "host": ["{{baseUrl}}"],
  306. "path": ["hubs", "crypto", "negotiate"],
  307. "query": [
  308. {
  309. "key": "negotiateVersion",
  310. "value": "1",
  311. "description": "SignalR negotiate 프로토콜 버전"
  312. }
  313. ]
  314. },
  315. "description": "SignalR Hub 연결 전 협상 엔드포인트.\n\n응답으로 connectionId, availableTransports 등을 반환합니다.\nWebSocket 연결 시 자동으로 호출되지만, 직접 테스트도 가능합니다."
  316. }
  317. },
  318. {
  319. "name": "[WSS] SubscribeSymbol",
  320. "request": {
  321. "method": "GET",
  322. "header": [],
  323. "url": {
  324. "raw": "{{baseUrl}}/hubs/crypto",
  325. "host": ["{{baseUrl}}"],
  326. "path": ["hubs", "crypto"]
  327. },
  328. "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 로 직접 연결하세요."
  329. }
  330. },
  331. {
  332. "name": "[WSS] SubscribeTickers",
  333. "request": {
  334. "method": "GET",
  335. "header": [],
  336. "url": {
  337. "raw": "{{baseUrl}}/hubs/crypto",
  338. "host": ["{{baseUrl}}"],
  339. "path": ["hubs", "crypto"]
  340. },
  341. "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 로 직접 연결하세요."
  342. }
  343. }
  344. ]
  345. }
  346. ]
  347. }