bitforum-crypto-api.postman_collection.json 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. {
  2. "info": {
  3. "_postman_id": "bf-crypto-api-collection",
  4. "name": "bitForum Crypto API",
  5. "description": "bitForum 암호화폐 Quotation API 컬렉션\n\n- REST API: 초기 로딩용 (마켓, 시세, 체결, 호가, 캔들)\n- Live API: WebSocket → Redis 실시간 데이터 조회",
  6. "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  7. },
  8. "variable": [
  9. {
  10. "key": "baseUrl",
  11. "value": "https://localhost:4000",
  12. "type": "string"
  13. },
  14. {
  15. "key": "symbol",
  16. "value": "BTC",
  17. "type": "string"
  18. }
  19. ],
  20. "item": [
  21. {
  22. "name": "Market",
  23. "item": [
  24. {
  25. "name": "마켓 목록 조회",
  26. "request": {
  27. "method": "GET",
  28. "header": [],
  29. "url": {
  30. "raw": "{{baseUrl}}/api/crypto/markets",
  31. "host": ["{{baseUrl}}"],
  32. "path": ["api", "crypto", "markets"]
  33. },
  34. "description": "KRW 거래 가능 마켓 전체 목록을 조회합니다.\n\n- 캐시: 30분\n- Upbit API: GET /v1/market/all"
  35. },
  36. "response": []
  37. }
  38. ]
  39. },
  40. {
  41. "name": "Ticker",
  42. "item": [
  43. {
  44. "name": "시세 목록 조회",
  45. "request": {
  46. "method": "GET",
  47. "header": [],
  48. "url": {
  49. "raw": "{{baseUrl}}/api/crypto/tickers",
  50. "host": ["{{baseUrl}}"],
  51. "path": ["api", "crypto", "tickers"]
  52. },
  53. "description": "활성화된 전체 코인의 실시간 시세 목록을 조회합니다.\n\n- 소스: Redis(WebSocket) + DB(코인 정보) 병합"
  54. },
  55. "response": []
  56. },
  57. {
  58. "name": "추천 시세 목록 조회",
  59. "request": {
  60. "method": "GET",
  61. "header": [],
  62. "url": {
  63. "raw": "{{baseUrl}}/api/crypto/tickers/featured",
  64. "host": ["{{baseUrl}}"],
  65. "path": ["api", "crypto", "tickers", "featured"]
  66. },
  67. "description": "큐레이션된 추천 코인의 실시간 시세 목록을 조회합니다.\n\n- 소스: Redis(WebSocket) + DB(코인 정보) 병합\n- IsFeatured = true 인 코인만 필터링"
  68. },
  69. "response": []
  70. },
  71. {
  72. "name": "현재가 상세 조회",
  73. "request": {
  74. "method": "GET",
  75. "header": [],
  76. "url": {
  77. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/ticker",
  78. "host": ["{{baseUrl}}"],
  79. "path": ["api", "crypto", "{{symbol}}", "ticker"]
  80. },
  81. "description": "특정 코인의 현재가 상세 정보를 조회합니다.\n\n- 캐시: 10초\n- Upbit API: GET /v1/ticker\n- 응답: 시가, 고가, 저가, 종가, 전일종가, 52주 최고/최저가, 누적 거래량/금액 등 17개 필드"
  82. },
  83. "response": []
  84. }
  85. ]
  86. },
  87. {
  88. "name": "Trade",
  89. "item": [
  90. {
  91. "name": "최근 체결 내역 조회",
  92. "request": {
  93. "method": "GET",
  94. "header": [],
  95. "url": {
  96. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/trades?count=50",
  97. "host": ["{{baseUrl}}"],
  98. "path": ["api", "crypto", "{{symbol}}", "trades"],
  99. "query": [
  100. {
  101. "key": "count",
  102. "value": "50",
  103. "description": "체결 내역 개수 (1~100, 기본값: 50)"
  104. }
  105. ]
  106. },
  107. "description": "특정 코인의 최근 체결 내역을 조회합니다.\n\n- 캐시: 5초\n- Upbit API: GET /v1/trades/ticks\n- 응답: 체결가, 체결량, 매수/매도(ASK/BID), 체결번호"
  108. },
  109. "response": []
  110. },
  111. {
  112. "name": "실시간 체결 조회 (Live)",
  113. "request": {
  114. "method": "GET",
  115. "header": [],
  116. "url": {
  117. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/trades/live",
  118. "host": ["{{baseUrl}}"],
  119. "path": ["api", "crypto", "{{symbol}}", "trades", "live"]
  120. },
  121. "description": "WebSocket으로 수신된 최신 체결 1건을 조회합니다.\n\n- 소스: Redis (WebSocket → Redis 저장)\n- 응답: 체결가, 체결량, 매수/매도, 타임스탬프"
  122. },
  123. "response": []
  124. }
  125. ]
  126. },
  127. {
  128. "name": "Orderbook",
  129. "item": [
  130. {
  131. "name": "호가 정보 조회",
  132. "request": {
  133. "method": "GET",
  134. "header": [],
  135. "url": {
  136. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/orderbook",
  137. "host": ["{{baseUrl}}"],
  138. "path": ["api", "crypto", "{{symbol}}", "orderbook"]
  139. },
  140. "description": "특정 코인의 호가 정보를 조회합니다.\n\n- 캐시: 5초\n- Upbit API: GET /v1/orderbook\n- 응답: 매도/매수 호가 리스트, 매도/매수 잔량 합계"
  141. },
  142. "response": []
  143. },
  144. {
  145. "name": "실시간 호가 조회 (Live)",
  146. "request": {
  147. "method": "GET",
  148. "header": [],
  149. "url": {
  150. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/orderbook/live",
  151. "host": ["{{baseUrl}}"],
  152. "path": ["api", "crypto", "{{symbol}}", "orderbook", "live"]
  153. },
  154. "description": "WebSocket으로 수신된 실시간 호가 정보를 조회합니다.\n\n- 소스: Redis (WebSocket → Redis 저장)\n- 응답: 매도/매수 호가 리스트, 잔량 합계, 타임스탬프"
  155. },
  156. "response": []
  157. }
  158. ]
  159. },
  160. {
  161. "name": "Candle",
  162. "item": [
  163. {
  164. "name": "초봉 조회",
  165. "request": {
  166. "method": "GET",
  167. "header": [],
  168. "url": {
  169. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/seconds?count=200",
  170. "host": ["{{baseUrl}}"],
  171. "path": ["api", "crypto", "{{symbol}}", "candles", "seconds"],
  172. "query": [
  173. {
  174. "key": "count",
  175. "value": "200",
  176. "description": "캔들 개수 (1~200, 기본값: 200)"
  177. }
  178. ]
  179. },
  180. "description": "초봉 캔들 데이터를 조회합니다.\n\n- 캐시: 1분\n- Upbit API: GET /v1/candles/seconds"
  181. },
  182. "response": []
  183. },
  184. {
  185. "name": "분봉 조회 (1분)",
  186. "request": {
  187. "method": "GET",
  188. "header": [],
  189. "url": {
  190. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/minutes/1?count=200",
  191. "host": ["{{baseUrl}}"],
  192. "path": ["api", "crypto", "{{symbol}}", "candles", "minutes", "1"],
  193. "query": [
  194. {
  195. "key": "count",
  196. "value": "200",
  197. "description": "캔들 개수 (1~200, 기본값: 200)"
  198. }
  199. ]
  200. },
  201. "description": "분봉 캔들 데이터를 조회합니다.\n\n- 캐시: 5분\n- Upbit API: GET /v1/candles/minutes/{unit}\n- 허용 unit: 1, 3, 5, 10, 15, 30, 60, 240"
  202. },
  203. "response": []
  204. },
  205. {
  206. "name": "분봉 조회 (5분)",
  207. "request": {
  208. "method": "GET",
  209. "header": [],
  210. "url": {
  211. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/minutes/5?count=200",
  212. "host": ["{{baseUrl}}"],
  213. "path": ["api", "crypto", "{{symbol}}", "candles", "minutes", "5"],
  214. "query": [
  215. {
  216. "key": "count",
  217. "value": "200",
  218. "description": "캔들 개수 (1~200, 기본값: 200)"
  219. }
  220. ]
  221. },
  222. "description": "5분봉 캔들 데이터를 조회합니다.\n\n- 캐시: 5분\n- Upbit API: GET /v1/candles/minutes/5"
  223. },
  224. "response": []
  225. },
  226. {
  227. "name": "분봉 조회 (15분)",
  228. "request": {
  229. "method": "GET",
  230. "header": [],
  231. "url": {
  232. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/minutes/15?count=200",
  233. "host": ["{{baseUrl}}"],
  234. "path": ["api", "crypto", "{{symbol}}", "candles", "minutes", "15"],
  235. "query": [
  236. {
  237. "key": "count",
  238. "value": "200",
  239. "description": "캔들 개수 (1~200, 기본값: 200)"
  240. }
  241. ]
  242. },
  243. "description": "15분봉 캔들 데이터를 조회합니다.\n\n- 캐시: 5분\n- Upbit API: GET /v1/candles/minutes/15"
  244. },
  245. "response": []
  246. },
  247. {
  248. "name": "분봉 조회 (60분)",
  249. "request": {
  250. "method": "GET",
  251. "header": [],
  252. "url": {
  253. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/minutes/60?count=200",
  254. "host": ["{{baseUrl}}"],
  255. "path": ["api", "crypto", "{{symbol}}", "candles", "minutes", "60"],
  256. "query": [
  257. {
  258. "key": "count",
  259. "value": "200",
  260. "description": "캔들 개수 (1~200, 기본값: 200)"
  261. }
  262. ]
  263. },
  264. "description": "60분봉 (1시간) 캔들 데이터를 조회합니다.\n\n- 캐시: 5분\n- Upbit API: GET /v1/candles/minutes/60"
  265. },
  266. "response": []
  267. },
  268. {
  269. "name": "분봉 조회 (240분)",
  270. "request": {
  271. "method": "GET",
  272. "header": [],
  273. "url": {
  274. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/minutes/240?count=200",
  275. "host": ["{{baseUrl}}"],
  276. "path": ["api", "crypto", "{{symbol}}", "candles", "minutes", "240"],
  277. "query": [
  278. {
  279. "key": "count",
  280. "value": "200",
  281. "description": "캔들 개수 (1~200, 기본값: 200)"
  282. }
  283. ]
  284. },
  285. "description": "240분봉 (4시간) 캔들 데이터를 조회합니다.\n\n- 캐시: 5분\n- Upbit API: GET /v1/candles/minutes/240"
  286. },
  287. "response": []
  288. },
  289. {
  290. "name": "일봉 조회",
  291. "request": {
  292. "method": "GET",
  293. "header": [],
  294. "url": {
  295. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/days?count=200",
  296. "host": ["{{baseUrl}}"],
  297. "path": ["api", "crypto", "{{symbol}}", "candles", "days"],
  298. "query": [
  299. {
  300. "key": "count",
  301. "value": "200",
  302. "description": "캔들 개수 (1~200, 기본값: 200)"
  303. }
  304. ]
  305. },
  306. "description": "일봉 캔들 데이터를 조회합니다.\n\n- 캐시: 5분\n- Upbit API: GET /v1/candles/days"
  307. },
  308. "response": []
  309. },
  310. {
  311. "name": "주봉 조회",
  312. "request": {
  313. "method": "GET",
  314. "header": [],
  315. "url": {
  316. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/weeks?count=200",
  317. "host": ["{{baseUrl}}"],
  318. "path": ["api", "crypto", "{{symbol}}", "candles", "weeks"],
  319. "query": [
  320. {
  321. "key": "count",
  322. "value": "200",
  323. "description": "캔들 개수 (1~200, 기본값: 200)"
  324. }
  325. ]
  326. },
  327. "description": "주봉 캔들 데이터를 조회합니다.\n\n- 캐시: 5분\n- Upbit API: GET /v1/candles/weeks"
  328. },
  329. "response": []
  330. },
  331. {
  332. "name": "월봉 조회",
  333. "request": {
  334. "method": "GET",
  335. "header": [],
  336. "url": {
  337. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/months?count=200",
  338. "host": ["{{baseUrl}}"],
  339. "path": ["api", "crypto", "{{symbol}}", "candles", "months"],
  340. "query": [
  341. {
  342. "key": "count",
  343. "value": "200",
  344. "description": "캔들 개수 (1~200, 기본값: 200)"
  345. }
  346. ]
  347. },
  348. "description": "월봉 캔들 데이터를 조회합니다.\n\n- 캐시: 5분\n- Upbit API: GET /v1/candles/months"
  349. },
  350. "response": []
  351. },
  352. {
  353. "name": "연봉 조회",
  354. "request": {
  355. "method": "GET",
  356. "header": [],
  357. "url": {
  358. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/years?count=200",
  359. "host": ["{{baseUrl}}"],
  360. "path": ["api", "crypto", "{{symbol}}", "candles", "years"],
  361. "query": [
  362. {
  363. "key": "count",
  364. "value": "200",
  365. "description": "캔들 개수 (1~200, 기본값: 200)"
  366. }
  367. ]
  368. },
  369. "description": "연봉 캔들 데이터를 조회합니다.\n\n- 캐시: 5분\n- Upbit API: GET /v1/candles/years"
  370. },
  371. "response": []
  372. },
  373. {
  374. "name": "실시간 캔들 조회 (Live)",
  375. "request": {
  376. "method": "GET",
  377. "header": [],
  378. "url": {
  379. "raw": "{{baseUrl}}/api/crypto/{{symbol}}/candles/live/m1",
  380. "host": ["{{baseUrl}}"],
  381. "path": ["api", "crypto", "{{symbol}}", "candles", "live", "m1"]
  382. },
  383. "description": "WebSocket으로 수신된 실시간 1분봉 캔들 1건을 조회합니다.\n\n- 소스: Redis (WebSocket → Redis 저장)\n- interval: m1 (1분봉)\n- 응답: 시가, 고가, 저가, 종가, 거래량, 거래금액"
  384. },
  385. "response": []
  386. }
  387. ]
  388. }
  389. ]
  390. }