| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406 |
- {
- "info": {
- "_postman_id": "mypage-api-collection",
- "name": "bitForum - MyPage API",
- "description": "bitForum 마이페이지 API 컬렉션\n\n로그인 후 Bearer Token을 설정하여 사용하세요.",
- "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
- },
- "variable": [
- {
- "key": "baseUrl",
- "value": "https://localhost:4000",
- "type": "string"
- },
- {
- "key": "accessToken",
- "value": "",
- "type": "string"
- },
- {
- "key": "refreshToken",
- "value": "",
- "type": "string"
- }
- ],
- "auth": {
- "type": "bearer",
- "bearer": [
- {
- "key": "token",
- "value": "{{accessToken}}",
- "type": "string"
- }
- ]
- },
- "item": [
- {
- "name": "🔐 Auth",
- "item": [
- {
- "name": "[POST] 로그인",
- "event": [
- {
- "listen": "test",
- "script": {
- "exec": [
- "var json = pm.response.json();",
- "if (json.success && json.data) {",
- " pm.collectionVariables.set('accessToken', json.data.accessToken);",
- " pm.collectionVariables.set('refreshToken', json.data.refreshToken);",
- " console.log('AccessToken, RefreshToken 저장 완료');",
- "}"
- ],
- "type": "text/javascript"
- }
- }
- ],
- "request": {
- "auth": {
- "type": "noauth"
- },
- "method": "POST",
- "header": [
- {
- "key": "Content-Type",
- "value": "application/json"
- }
- ],
- "body": {
- "mode": "raw",
- "raw": "{\n \"email\": \"test@bitforum.io\",\n \"password\": \"password123\"\n}"
- },
- "url": {
- "raw": "{{baseUrl}}/api/auth/login",
- "host": ["{{baseUrl}}"],
- "path": ["api", "auth", "login"]
- },
- "description": "로그인 후 accessToken, refreshToken이 자동으로 컬렉션 변수에 저장됩니다."
- },
- "response": []
- },
- {
- "name": "[POST] 로그아웃",
- "event": [
- {
- "listen": "test",
- "script": {
- "exec": [
- "var json = pm.response.json();",
- "if (json.success) {",
- " pm.collectionVariables.set('accessToken', '');",
- " pm.collectionVariables.set('refreshToken', '');",
- " console.log('토큰 초기화 완료');",
- "}"
- ],
- "type": "text/javascript"
- }
- }
- ],
- "request": {
- "method": "POST",
- "header": [
- {
- "key": "Content-Type",
- "value": "application/json"
- }
- ],
- "body": {
- "mode": "raw",
- "raw": "{\n \"refreshToken\": \"{{refreshToken}}\"\n}"
- },
- "url": {
- "raw": "{{baseUrl}}/api/auth/logout",
- "host": ["{{baseUrl}}"],
- "path": ["api", "auth", "logout"]
- },
- "description": "로그아웃. RefreshToken을 서버에서 폐기합니다.\n\n- Bearer 토큰 필요\n- 성공 시 컬렉션 변수의 토큰이 자동 초기화됩니다.\n- 이미 폐기된 토큰이면 그냥 성공 반환"
- },
- "response": []
- }
- ]
- },
- {
- "name": "📧 이메일",
- "item": [
- {
- "name": "[POST] 이메일 변경",
- "request": {
- "method": "POST",
- "header": [
- {
- "key": "Content-Type",
- "value": "application/json"
- }
- ],
- "body": {
- "mode": "raw",
- "raw": "{\n \"newEmail\": \"newemail@bitforum.io\"\n}"
- },
- "url": {
- "raw": "{{baseUrl}}/api/mypage/email",
- "host": ["{{baseUrl}}"],
- "path": ["api", "mypage", "email"]
- },
- "description": "이메일 변경 요청. 새 이메일로 인증 메일이 발송됩니다.\n\n- 중복 이메일 불가\n- 현재 이메일과 동일하면 에러\n- 변경 즉시 이메일이 바뀌고, IsEmailVerified가 false로 변경"
- },
- "response": []
- },
- {
- "name": "[GET] 이메일 인증",
- "request": {
- "auth": {
- "type": "noauth"
- },
- "method": "GET",
- "header": [],
- "url": {
- "raw": "{{baseUrl}}/api/mypage/email/verify?token=YOUR_TOKEN_HERE",
- "host": ["{{baseUrl}}"],
- "path": ["api", "mypage", "email", "verify"],
- "query": [
- {
- "key": "token",
- "value": "YOUR_TOKEN_HERE",
- "description": "이메일 인증 토큰 (이메일 변경 시 발송된 링크에 포함)"
- }
- ]
- },
- "description": "이메일 인증 토큰으로 이메일 인증 완료.\n\n- 인증 불필요 (Anonymous)\n- 토큰 만료: 24시간\n- 이미 인증된 토큰은 재사용 불가"
- },
- "response": []
- }
- ]
- },
- {
- "name": "👤 별명",
- "item": [
- {
- "name": "[POST] 별명 변경",
- "request": {
- "method": "POST",
- "header": [
- {
- "key": "Content-Type",
- "value": "application/json"
- }
- ],
- "body": {
- "mode": "raw",
- "raw": "{\n \"name\": \"새별명\"\n}"
- },
- "url": {
- "raw": "{{baseUrl}}/api/mypage/name",
- "host": ["{{baseUrl}}"],
- "path": ["api", "mypage", "name"]
- },
- "description": "별명 변경.\n\n- 최대 40자\n- 중복 별명 불가\n- 변경 로그 기록됨"
- },
- "response": []
- },
- {
- "name": "[DELETE] 별명 삭제",
- "request": {
- "method": "DELETE",
- "header": [],
- "url": {
- "raw": "{{baseUrl}}/api/mypage/name",
- "host": ["{{baseUrl}}"],
- "path": ["api", "mypage", "name"]
- },
- "description": "별명 삭제 (null로 초기화).\n\n- 이미 비어있으면 에러\n- 삭제 로그 기록됨"
- },
- "response": []
- }
- ]
- },
- {
- "name": "💬 한마디",
- "item": [
- {
- "name": "[POST] 한마디 변경",
- "request": {
- "method": "POST",
- "header": [
- {
- "key": "Content-Type",
- "value": "application/json"
- }
- ],
- "body": {
- "mode": "raw",
- "raw": "{\n \"summary\": \"안녕하세요! 비트포럼입니다.\"\n}"
- },
- "url": {
- "raw": "{{baseUrl}}/api/mypage/summary",
- "host": ["{{baseUrl}}"],
- "path": ["api", "mypage", "summary"]
- },
- "description": "한마디(상태 메시지) 변경.\n\n- 최대 50자\n- 변경 로그 기록됨"
- },
- "response": []
- },
- {
- "name": "[DELETE] 한마디 삭제",
- "request": {
- "method": "DELETE",
- "header": [],
- "url": {
- "raw": "{{baseUrl}}/api/mypage/summary",
- "host": ["{{baseUrl}}"],
- "path": ["api", "mypage", "summary"]
- },
- "description": "한마디 삭제 (null로 초기화).\n\n- 이미 비어있으면 에러\n- 삭제 로그 기록됨"
- },
- "response": []
- }
- ]
- },
- {
- "name": "📝 자기소개",
- "item": [
- {
- "name": "[POST] 자기소개 변경",
- "request": {
- "method": "POST",
- "header": [
- {
- "key": "Content-Type",
- "value": "application/json"
- }
- ],
- "body": {
- "mode": "raw",
- "raw": "{\n \"intro\": \"비트코인과 블록체인에 관심이 많은 개발자입니다.\"\n}"
- },
- "url": {
- "raw": "{{baseUrl}}/api/mypage/intro",
- "host": ["{{baseUrl}}"],
- "path": ["api", "mypage", "intro"]
- },
- "description": "자기소개 변경.\n\n- 최대 3000자\n- 변경 로그 기록됨"
- },
- "response": []
- },
- {
- "name": "[DELETE] 자기소개 삭제",
- "request": {
- "method": "DELETE",
- "header": [],
- "url": {
- "raw": "{{baseUrl}}/api/mypage/intro",
- "host": ["{{baseUrl}}"],
- "path": ["api", "mypage", "intro"]
- },
- "description": "자기소개 삭제 (null로 초기화).\n\n- 이미 비어있으면 에러\n- 삭제 로그 기록됨"
- },
- "response": []
- }
- ]
- },
- {
- "name": "🔔 수신설정",
- "item": [
- {
- "name": "[POST] 수신설정 변경",
- "request": {
- "method": "POST",
- "header": [
- {
- "key": "Content-Type",
- "value": "application/json"
- }
- ],
- "body": {
- "mode": "raw",
- "raw": "{\n \"isReceiveSMS\": true,\n \"isReceiveEmail\": true,\n \"isReceiveNote\": false\n}"
- },
- "url": {
- "raw": "{{baseUrl}}/api/mypage/receive-settings",
- "host": ["{{baseUrl}}"],
- "path": ["api", "mypage", "receive-settings"]
- },
- "description": "SMS/이메일/쪽지 수신 설정 변경.\n\n- 변경된 항목만 동의 시간이 업데이트됩니다."
- },
- "response": []
- }
- ]
- },
- {
- "name": "🔒 보안",
- "item": [
- {
- "name": "[POST] 비밀번호 변경",
- "request": {
- "method": "POST",
- "header": [
- {
- "key": "Content-Type",
- "value": "application/json"
- }
- ],
- "body": {
- "mode": "raw",
- "raw": "{\n \"currentPassword\": \"password123\",\n \"newPassword\": \"newpassword456\",\n \"confirmPassword\": \"newpassword456\"\n}"
- },
- "url": {
- "raw": "{{baseUrl}}/api/mypage/password",
- "host": ["{{baseUrl}}"],
- "path": ["api", "mypage", "password"]
- },
- "description": "비밀번호 변경.\n\n- 현재 비밀번호 검증 필수\n- 새 비밀번호 6자 이상\n- newPassword와 confirmPassword 일치 필요"
- },
- "response": []
- },
- {
- "name": "[POST] 회원탈퇴",
- "request": {
- "method": "POST",
- "header": [
- {
- "key": "Content-Type",
- "value": "application/json"
- }
- ],
- "body": {
- "mode": "raw",
- "raw": "{\n \"password\": \"password123\"\n}"
- },
- "url": {
- "raw": "{{baseUrl}}/api/mypage/withdraw",
- "host": ["{{baseUrl}}"],
- "path": ["api", "mypage", "withdraw"]
- },
- "description": "회원 탈퇴.\n\n- 비밀번호 검증 필수\n- 모든 RefreshToken 무효화\n- IsWithdraw = true, DeletedAt 설정 (소프트 삭제)"
- },
- "response": []
- },
- {
- "name": "[GET] 로그인 기록",
- "request": {
- "method": "GET",
- "header": [],
- "url": {
- "raw": "{{baseUrl}}/api/mypage/login-logs?page=1&pageSize=20",
- "host": ["{{baseUrl}}"],
- "path": ["api", "mypage", "login-logs"],
- "query": [
- {
- "key": "page",
- "value": "1",
- "description": "페이지 번호 (기본값: 1)"
- },
- {
- "key": "pageSize",
- "value": "20",
- "description": "페이지 크기 (기본값: 20, 최대: 50)"
- }
- ]
- },
- "description": "로그인 기록 조회.\n\n- 최신순 정렬\n- 페이지네이션 지원 (page, pageSize)\n- 응답: items[], totalCount, page, pageSize"
- },
- "response": []
- }
- ]
- }
- ]
- }
|