Donation.postman_collection.json 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455
  1. {
  2. "info": {
  3. "_postman_id": "a1b2c3d4-1001-4000-a001-000000000002",
  4. "name": "Donation",
  5. "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
  6. "_exporter_id": "40701166"
  7. },
  8. "item": [
  9. {
  10. "name": "후원",
  11. "item": [
  12. {
  13. "name": "후원 전송",
  14. "request": {
  15. "method": "POST",
  16. "header": [],
  17. "body": {
  18. "mode": "raw",
  19. "raw": "{\n \"SponsorMemberID\": 0,\n \"ChannelID\": 1,\n \"Amount\": 1000,\n \"Message\": \"응원합니다!\",\n \"SendName\": \"익명후원자\",\n \"CrewSessionID\": null,\n \"CrewMemberID\": null,\n \"IsTest\": false\n}",
  20. "options": {
  21. "raw": {
  22. "language": "json"
  23. }
  24. }
  25. },
  26. "url": {
  27. "raw": "{{baseUrl}}/api/donation/send",
  28. "host": [
  29. "{{baseUrl}}"
  30. ],
  31. "path": [
  32. "api",
  33. "donation",
  34. "send"
  35. ]
  36. },
  37. "description": "후원을 전송합니다. 지갑 차감 후 Donation 생성, 알림 큐 및 SignalR 브로드캐스트."
  38. },
  39. "response": []
  40. },
  41. {
  42. "name": "후원 내역",
  43. "request": {
  44. "method": "GET",
  45. "header": [],
  46. "url": {
  47. "raw": "{{baseUrl}}/api/donation/history?type=sent&page=1&perPage=20",
  48. "host": [
  49. "{{baseUrl}}"
  50. ],
  51. "path": [
  52. "api",
  53. "donation",
  54. "history"
  55. ],
  56. "query": [
  57. {
  58. "key": "type",
  59. "value": "sent",
  60. "description": "sent=보낸 후원, received=받은 후원"
  61. },
  62. {
  63. "key": "page",
  64. "value": "1"
  65. },
  66. {
  67. "key": "perPage",
  68. "value": "20"
  69. }
  70. ]
  71. },
  72. "description": "후원 내역을 조회합니다. type으로 보낸/받은 후원을 구분합니다."
  73. },
  74. "response": []
  75. }
  76. ]
  77. },
  78. {
  79. "name": "알림 위젯",
  80. "item": [
  81. {
  82. "name": "알림 설정 조회",
  83. "request": {
  84. "method": "GET",
  85. "header": [],
  86. "url": {
  87. "raw": "{{baseUrl}}/api/donation/alert/config/1",
  88. "host": [
  89. "{{baseUrl}}"
  90. ],
  91. "path": [
  92. "api",
  93. "donation",
  94. "alert",
  95. "config",
  96. "1"
  97. ]
  98. },
  99. "description": "채널 ID로 후원 알림 위젯 설정을 조회합니다. OBS 브라우저 소스용."
  100. },
  101. "response": []
  102. },
  103. {
  104. "name": "알림 설정 저장",
  105. "request": {
  106. "method": "POST",
  107. "header": [],
  108. "body": {
  109. "mode": "raw",
  110. "raw": "{\n \"ChannelID\": 1,\n \"MemberID\": 0,\n \"ID\": null,\n \"Title\": \"기본 알림\",\n \"Amount\": 1000,\n \"Message\": \"{{sender}}님이 {{amount}}원을 후원했습니다!\",\n \"PlayDelaySec\": 0.0,\n \"DisplayDurationSec\": 5.0,\n \"Sound\": null,\n \"EnableThumbnail\": true,\n \"ThumbnailUrl\": null,\n \"IsActive\": true\n}",
  111. "options": {
  112. "raw": {
  113. "language": "json"
  114. }
  115. }
  116. },
  117. "url": {
  118. "raw": "{{baseUrl}}/api/donation/alert/config",
  119. "host": [
  120. "{{baseUrl}}"
  121. ],
  122. "path": [
  123. "api",
  124. "donation",
  125. "alert",
  126. "config"
  127. ]
  128. },
  129. "description": "후원 알림 위젯 설정을 저장/수정합니다."
  130. },
  131. "response": []
  132. }
  133. ]
  134. },
  135. {
  136. "name": "리모콘",
  137. "item": [
  138. {
  139. "name": "리모콘 상태 조회",
  140. "request": {
  141. "method": "GET",
  142. "header": [],
  143. "url": {
  144. "raw": "{{baseUrl}}/api/donation/remote/state/1",
  145. "host": [
  146. "{{baseUrl}}"
  147. ],
  148. "path": [
  149. "api",
  150. "donation",
  151. "remote",
  152. "state",
  153. "1"
  154. ]
  155. },
  156. "description": "리모콘 상태(일시정지/후원수신/음성만/영상만) 및 대기열을 조회합니다."
  157. },
  158. "response": []
  159. },
  160. {
  161. "name": "리모콘 상태 변경",
  162. "request": {
  163. "method": "POST",
  164. "header": [],
  165. "body": {
  166. "mode": "raw",
  167. "raw": "{\n \"ChannelID\": 1,\n \"MemberID\": 0,\n \"IsPaused\": false,\n \"IsAccepting\": true,\n \"IsAudioOnly\": false,\n \"IsVideoOnly\": false\n}",
  168. "options": {
  169. "raw": {
  170. "language": "json"
  171. }
  172. }
  173. },
  174. "url": {
  175. "raw": "{{baseUrl}}/api/donation/remote/state",
  176. "host": [
  177. "{{baseUrl}}"
  178. ],
  179. "path": [
  180. "api",
  181. "donation",
  182. "remote",
  183. "state"
  184. ]
  185. },
  186. "description": "리모콘 상태를 변경합니다. (일시정지, 후원수신, 음성만, 영상만)"
  187. },
  188. "response": []
  189. },
  190. {
  191. "name": "알림 무시",
  192. "request": {
  193. "method": "POST",
  194. "header": [],
  195. "url": {
  196. "raw": "{{baseUrl}}/api/donation/remote/ignore/1",
  197. "host": [
  198. "{{baseUrl}}"
  199. ],
  200. "path": [
  201. "api",
  202. "donation",
  203. "remote",
  204. "ignore",
  205. "1"
  206. ]
  207. },
  208. "description": "미재생 알림을 Ignored로 변경합니다. 재생 중인 알림은 사용 불가."
  209. },
  210. "response": []
  211. },
  212. {
  213. "name": "알림 재전송",
  214. "request": {
  215. "method": "POST",
  216. "header": [],
  217. "url": {
  218. "raw": "{{baseUrl}}/api/donation/remote/resend/1",
  219. "host": [
  220. "{{baseUrl}}"
  221. ],
  222. "path": [
  223. "api",
  224. "donation",
  225. "remote",
  226. "resend",
  227. "1"
  228. ]
  229. },
  230. "description": "실패/무시된 알림을 대기열 맨 뒤에 재추가합니다. Queued로 초기화."
  231. },
  232. "response": []
  233. },
  234. {
  235. "name": "알림 건너뛰기",
  236. "request": {
  237. "method": "POST",
  238. "header": [],
  239. "url": {
  240. "raw": "{{baseUrl}}/api/donation/remote/skip/1",
  241. "host": [
  242. "{{baseUrl}}"
  243. ],
  244. "path": [
  245. "api",
  246. "donation",
  247. "remote",
  248. "skip",
  249. "1"
  250. ]
  251. },
  252. "description": "현재 재생 중인 알림을 즉시 종료하고 다음 알림으로 넘깁니다."
  253. },
  254. "response": []
  255. }
  256. ]
  257. },
  258. {
  259. "name": "크루",
  260. "item": [
  261. {
  262. "name": "크루 세션 목록",
  263. "request": {
  264. "method": "GET",
  265. "header": [],
  266. "url": {
  267. "raw": "{{baseUrl}}/api/crew/list/1?page=1&perPage=20",
  268. "host": [
  269. "{{baseUrl}}"
  270. ],
  271. "path": [
  272. "api",
  273. "crew",
  274. "list",
  275. "1"
  276. ],
  277. "query": [
  278. {
  279. "key": "page",
  280. "value": "1"
  281. },
  282. {
  283. "key": "perPage",
  284. "value": "20"
  285. },
  286. {
  287. "key": "sortBy",
  288. "value": "",
  289. "disabled": true,
  290. "description": "정렬 기준"
  291. },
  292. {
  293. "key": "sortDir",
  294. "value": "",
  295. "disabled": true,
  296. "description": "정렬 방향"
  297. }
  298. ]
  299. },
  300. "description": "크루 후원 세션 목록을 조회합니다. 날짜/금액/참여자 정렬, 페이징 지원."
  301. },
  302. "response": []
  303. },
  304. {
  305. "name": "크루 리더보드",
  306. "request": {
  307. "auth": {
  308. "type": "noauth"
  309. },
  310. "method": "GET",
  311. "header": [],
  312. "url": {
  313. "raw": "{{baseUrl}}/api/crew/ranking/1",
  314. "host": [
  315. "{{baseUrl}}"
  316. ],
  317. "path": [
  318. "api",
  319. "crew",
  320. "ranking",
  321. "1"
  322. ]
  323. },
  324. "description": "크루원별 리더보드(점수/기여도)를 조회합니다. OBS 위젯용 익명 허용."
  325. },
  326. "response": []
  327. },
  328. {
  329. "name": "크루 방송 시작",
  330. "request": {
  331. "method": "POST",
  332. "header": [],
  333. "body": {
  334. "mode": "raw",
  335. "raw": "{\n \"CrewID\": 1,\n \"Title\": \"크루 방송 제목\"\n}",
  336. "options": {
  337. "raw": {
  338. "language": "json"
  339. }
  340. }
  341. },
  342. "url": {
  343. "raw": "{{baseUrl}}/api/crew/session/start",
  344. "host": [
  345. "{{baseUrl}}"
  346. ],
  347. "path": [
  348. "api",
  349. "crew",
  350. "session",
  351. "start"
  352. ]
  353. },
  354. "description": "크루 방송을 시작합니다. 전원 동의(Ready) 상태에서만 시작 가능."
  355. },
  356. "response": []
  357. },
  358. {
  359. "name": "크루 방송 종료",
  360. "request": {
  361. "method": "POST",
  362. "header": [],
  363. "body": {
  364. "mode": "raw",
  365. "raw": "{\n \"CrewSessionID\": 1\n}",
  366. "options": {
  367. "raw": {
  368. "language": "json"
  369. }
  370. }
  371. },
  372. "url": {
  373. "raw": "{{baseUrl}}/api/crew/session/end",
  374. "host": [
  375. "{{baseUrl}}"
  376. ],
  377. "path": [
  378. "api",
  379. "crew",
  380. "session",
  381. "end"
  382. ]
  383. },
  384. "description": "크루 방송을 종료합니다. 정산 처리(수수료 차감, 지갑 입금) 후 크루원에게 쪽지 발송."
  385. },
  386. "response": []
  387. },
  388. {
  389. "name": "크루원 참여 동의",
  390. "request": {
  391. "method": "POST",
  392. "header": [],
  393. "body": {
  394. "mode": "raw",
  395. "raw": "{\n \"CrewSessionID\": 1,\n \"CrewMemberID\": 1\n}",
  396. "options": {
  397. "raw": {
  398. "language": "json"
  399. }
  400. }
  401. },
  402. "url": {
  403. "raw": "{{baseUrl}}/api/crew/session/consent",
  404. "host": [
  405. "{{baseUrl}}"
  406. ],
  407. "path": [
  408. "api",
  409. "crew",
  410. "session",
  411. "consent"
  412. ]
  413. },
  414. "description": "크루원 참여 동의를 처리합니다. 전원 동의 시 Ready 전환."
  415. },
  416. "response": []
  417. }
  418. ]
  419. }
  420. ],
  421. "auth": {
  422. "type": "bearer",
  423. "bearer": [
  424. {
  425. "key": "token",
  426. "value": "{{accessToken}}",
  427. "type": "string"
  428. }
  429. ]
  430. },
  431. "event": [
  432. {
  433. "listen": "prerequest",
  434. "script": {
  435. "type": "text/javascript",
  436. "packages": {},
  437. "requests": {},
  438. "exec": [
  439. ""
  440. ]
  441. }
  442. },
  443. {
  444. "listen": "test",
  445. "script": {
  446. "type": "text/javascript",
  447. "packages": {},
  448. "requests": {},
  449. "exec": [
  450. ""
  451. ]
  452. }
  453. }
  454. ]
  455. }