{
  "info": {
    "_postman_id": "a1b2c3d4-1001-4000-a001-000000000002",
    "name": "Donation",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "_exporter_id": "40701166"
  },
  "item": [
    {
      "name": "후원",
      "item": [
        {
          "name": "후원 전송",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"SponsorMemberID\": 0,\n    \"ChannelID\": 1,\n    \"Amount\": 1000,\n    \"Message\": \"응원합니다!\",\n    \"SendName\": \"익명후원자\",\n    \"CrewSessionID\": null,\n    \"CrewMemberID\": null,\n    \"IsTest\": false\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/donation/send",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "donation",
                "send"
              ]
            },
            "description": "후원을 전송합니다. 지갑 차감 후 Donation 생성, 알림 큐 및 SignalR 브로드캐스트."
          },
          "response": []
        },
        {
          "name": "후원 내역",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/donation/history?type=sent&page=1&perPage=20",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "donation",
                "history"
              ],
              "query": [
                {
                  "key": "type",
                  "value": "sent",
                  "description": "sent=보낸 후원, received=받은 후원"
                },
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "perPage",
                  "value": "20"
                }
              ]
            },
            "description": "후원 내역을 조회합니다. type으로 보낸/받은 후원을 구분합니다."
          },
          "response": []
        }
      ]
    },
    {
      "name": "알림 위젯",
      "item": [
        {
          "name": "알림 설정 조회",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/donation/alert/config/1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "donation",
                "alert",
                "config",
                "1"
              ]
            },
            "description": "채널 ID로 후원 알림 위젯 설정을 조회합니다. OBS 브라우저 소스용."
          },
          "response": []
        },
        {
          "name": "알림 설정 저장",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "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}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/donation/alert/config",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "donation",
                "alert",
                "config"
              ]
            },
            "description": "후원 알림 위젯 설정을 저장/수정합니다."
          },
          "response": []
        }
      ]
    },
    {
      "name": "리모콘",
      "item": [
        {
          "name": "리모콘 상태 조회",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/donation/remote/state/1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "donation",
                "remote",
                "state",
                "1"
              ]
            },
            "description": "리모콘 상태(일시정지/후원수신/음성만/영상만) 및 대기열을 조회합니다."
          },
          "response": []
        },
        {
          "name": "리모콘 상태 변경",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"ChannelID\": 1,\n    \"MemberID\": 0,\n    \"IsPaused\": false,\n    \"IsAccepting\": true,\n    \"IsAudioOnly\": false,\n    \"IsVideoOnly\": false\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/donation/remote/state",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "donation",
                "remote",
                "state"
              ]
            },
            "description": "리모콘 상태를 변경합니다. (일시정지, 후원수신, 음성만, 영상만)"
          },
          "response": []
        },
        {
          "name": "알림 무시",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/donation/remote/ignore/1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "donation",
                "remote",
                "ignore",
                "1"
              ]
            },
            "description": "미재생 알림을 Ignored로 변경합니다. 재생 중인 알림은 사용 불가."
          },
          "response": []
        },
        {
          "name": "알림 재전송",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/donation/remote/resend/1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "donation",
                "remote",
                "resend",
                "1"
              ]
            },
            "description": "실패/무시된 알림을 대기열 맨 뒤에 재추가합니다. Queued로 초기화."
          },
          "response": []
        },
        {
          "name": "알림 건너뛰기",
          "request": {
            "method": "POST",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/donation/remote/skip/1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "donation",
                "remote",
                "skip",
                "1"
              ]
            },
            "description": "현재 재생 중인 알림을 즉시 종료하고 다음 알림으로 넘깁니다."
          },
          "response": []
        }
      ]
    },
    {
      "name": "크루",
      "item": [
        {
          "name": "크루 세션 목록",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/crew/list/1?page=1&perPage=20",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "crew",
                "list",
                "1"
              ],
              "query": [
                {
                  "key": "page",
                  "value": "1"
                },
                {
                  "key": "perPage",
                  "value": "20"
                },
                {
                  "key": "sortBy",
                  "value": "",
                  "disabled": true,
                  "description": "정렬 기준"
                },
                {
                  "key": "sortDir",
                  "value": "",
                  "disabled": true,
                  "description": "정렬 방향"
                }
              ]
            },
            "description": "크루 후원 세션 목록을 조회합니다. 날짜/금액/참여자 정렬, 페이징 지원."
          },
          "response": []
        },
        {
          "name": "크루 리더보드",
          "request": {
            "auth": {
              "type": "noauth"
            },
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/crew/ranking/1",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "crew",
                "ranking",
                "1"
              ]
            },
            "description": "크루원별 리더보드(점수/기여도)를 조회합니다. OBS 위젯용 익명 허용."
          },
          "response": []
        },
        {
          "name": "크루 방송 시작",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"CrewID\": 1,\n    \"Title\": \"크루 방송 제목\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/crew/session/start",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "crew",
                "session",
                "start"
              ]
            },
            "description": "크루 방송을 시작합니다. 전원 동의(Ready) 상태에서만 시작 가능."
          },
          "response": []
        },
        {
          "name": "크루 방송 종료",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"CrewSessionID\": 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/crew/session/end",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "crew",
                "session",
                "end"
              ]
            },
            "description": "크루 방송을 종료합니다. 정산 처리(수수료 차감, 지갑 입금) 후 크루원에게 쪽지 발송."
          },
          "response": []
        },
        {
          "name": "크루원 참여 동의",
          "request": {
            "method": "POST",
            "header": [],
            "body": {
              "mode": "raw",
              "raw": "{\n    \"CrewSessionID\": 1,\n    \"CrewMemberID\": 1\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "url": {
              "raw": "{{baseUrl}}/api/crew/session/consent",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "crew",
                "session",
                "consent"
              ]
            },
            "description": "크루원 참여 동의를 처리합니다. 전원 동의 시 Ready 전환."
          },
          "response": []
        }
      ]
    }
  ],
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{accessToken}}",
        "type": "string"
      }
    ]
  },
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "packages": {},
        "requests": {},
        "exec": [
          ""
        ]
      }
    },
    {
      "listen": "test",
      "script": {
        "type": "text/javascript",
        "packages": {},
        "requests": {},
        "exec": [
          ""
        ]
      }
    }
  ]
}