{"info":{"_postman_id":"86abb310-7288-469e-8bc4-041be76aa0fa","name":"FineAnts","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"description":"<html><head></head><body></body></html>","owner":"30547529","collectionId":"86abb310-7288-469e-8bc4-041be76aa0fa","publishedId":"2s9YR9YsEg","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2023-10-19T02:07:58.000Z"},"item":[{"name":"회원","item":[{"name":"회원가입","item":[{"name":"회원가입","id":"6ce162cc-809d-45ab-8f66-bfb0df947f28","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"nickname\": \"일개미1234\",\n    \"email\": \"kim1234@gmail.com\",\n    \"password\": \"kim1234@\",\n    \"passwordConfirm\": \"kim1234@\",\n    \"verificationCode\": \"123456\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup","urlObject":{"path":["api","auth","signup"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"ebf97ad1-6cd4-4651-b5dd-8910e5e086bf","name":"회원가입","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"nickname\": \"일개미1234\",\n    \"email\": \"kim1234@gmail.com\",\n    \"password\": \"kim1234@\",\n    \"passwordConfirm\": \"kim1234@\",\n    \"verificationCode\": \"123456\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 201,\n    \"status\": \"Created\",\n    \"message\": \"회원가입이 완료되었습니다\",\n    \"data\": null\n}"},{"id":"3a319a5d-52d7-42d4-b29a-3ae9d99fa485","name":"회원가입 실패 (입력 형식)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"nickname\": \"\",\n    \"email\": \"\",\n    \"password\": \"\",\n    \"passwordConfirm\": \"\",\n    \"verificationCode\": \"\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"잘못된 입력형식입니다\",\n    \"data\": [\n        {\n            \"field\": \"nickname\",\n            \"defaultMessage\": \"닉네임은 2~10자 영문 또는 한글 필수 포함이고 숫자는 선택사항입니다\"\n        },\n        {\n            \"field\": \"email\",\n            \"defaultMessage\": \"이메일 형식이어야 합니다\"\n        },\n        {\n            \"field\": \"password\",\n            \"defaultMessage\": \"패스워드는 8~16자 영문,숫자,특수문자 각각 최소 1개 필수 포함입니다\"\n        },\n        {\n            \"field\": \"passwordConfirm\",\n            \"defaultMessage\": \"패스워드는 8~16자 영문,숫자,특수문자 각각 최소 1개 필수 포함입니다\"\n        },\n        {\n            \"field\": \"verificationCode\",\n            \"defaultMessage\": \"검증 코드는 숫자로 6 자리여야 합니다.\"\n        }\n    ]\n}"},{"id":"e9244d6a-11b0-4748-af70-f20f18536108","name":"회원가입 실패 (닉네임 중복)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"nickname\": \"일개미4567\",\n    \"email\": \"kim1234@gmail.com\",\n    \"password\": \"kim1234@\",\n    \"passwordConfirm\": \"kim1234@\",\n    \"verificationCode\": \"123456\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"닉네임이 중복되었습니다\",\n    \"data\": null\n}"},{"id":"fef6039a-cd91-4fc9-bdf0-e40fb2213760","name":"회원가입 실패 (이메일 중복)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"nickname\": \"일개미1234\",\n    \"email\": \"kim4567@gmail.com\",\n    \"password\": \"kim1234@\",\n    \"passwordConfirm\": \"kim1234@\",\n    \"verificationCode\": \"123456\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"이메일이 중복되었습니다\",\n    \"data\": null\n}"},{"id":"100a8f2a-db32-4ac4-8c1f-14732df744a8","name":"회원가입 실패 (비밀번호 불일치)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"nickname\": \"일개미1234\",\n    \"email\": \"kim1234@gmail.com\",\n    \"password\": \"kim1234@\",\n    \"passwordConfirm\": \"kim4567@\",\n    \"verificationCode\": \"123456\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"비밀번호가 일치하지 않습니다\",\n    \"data\": null\n}"},{"id":"0d9950d8-1d87-4bbe-93a5-4ea04d2905ab","name":"회원가입 실패 (검증코드 불일치)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"nickname\": \"일개미1234\",\n    \"email\": \"kim4567@gmail.com\",\n    \"password\": \"kim1234@\",\n    \"passwordConfirm\": \"kim1234@\",\n    \"verificationCode\": \"456789\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"검증코드가 일치하지 않습니다\",\n    \"data\": null\n}"}],"_postman_id":"6ce162cc-809d-45ab-8f66-bfb0df947f28"},{"name":"\b닉네임 중복검사","id":"3850065e-d17f-49a3-91c2-564c77fb3c86","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"nickname\": \"일개미1234\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup/duplicationcheck/nickname","urlObject":{"path":["api","auth","signup","duplicationcheck","nickname"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"1fd79ad8-29b8-4b97-b3a4-216662fb1a57","name":"\b닉네임 중복검사 성공 (중복없음)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"nickname\": \"일개미1234\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup/duplicationcheck/nickname"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"닉네임이 사용가능합니다\",\n    \"data\": null\n}"},{"id":"54dc346a-54b1-4986-a097-7b638d310af6","name":"\b닉네임 중복검사 실패 (중복존재)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"nickname\": \"일개미1234\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup/duplicationcheck/nickname"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"닉네임이 중복되었습나다\",\n    \"data\": null\n}"}],"_postman_id":"3850065e-d17f-49a3-91c2-564c77fb3c86"},{"name":"이메일 중복검사","id":"8fceb1e2-1611-41ab-874b-e85e82ab9967","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"kim1234@gmail.com\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup/duplicationcheck/email","urlObject":{"path":["api","auth","signup","duplicationcheck","email"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"7fe8633c-4d20-4a04-a078-a5a8f9ed1d77","name":"이메일 중복검사 성공 (중복없음)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"kim1234@gmail.com\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup/duplicationcheck/email"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"이메일이 사용가능합니다\",\n    \"data\": null\n}"},{"id":"629b571a-1e7e-4abe-b121-9a8b064ed74e","name":"이메일 중복검사 성공 (중복존재)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"lee1234@gmail.com\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup/duplicationcheck/email"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"이메일이 중복되었습니다\",\n    \"data\": null\n}"}],"_postman_id":"8fceb1e2-1611-41ab-874b-e85e82ab9967"},{"name":"이메일 검증 코드","id":"f3771a12-fc13-4aaf-bc71-f226681a9a6d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"kim1234@gmail.com\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup/verifyEmail","urlObject":{"path":["api","auth","signup","verifyEmail"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"be9e0ff3-14a3-4517-ab49-d75c99f8d403","name":"이메일 검증 코드 성공","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"kim1234@gmail.com\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup/verifyEmail"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"이메일로 검증 코드를 전송하였습니다\",\n    \"data\": null\n}"},{"id":"d0e48705-8a48-41bf-936b-d805b3483481","name":"이메일 검증 코드 실패 (존재하지 않은 이메일)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"abcd1234@gmail.com\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/signup/verifyEmail"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"이메일 전송이 실패하였습니다\",\n    \"data\": null\n}"}],"_postman_id":"f3771a12-fc13-4aaf-bc71-f226681a9a6d"}],"id":"c01a8bab-87f7-4a73-a664-b84974b57a95","_postman_id":"c01a8bab-87f7-4a73-a664-b84974b57a95","description":""},{"name":"소셜 로그인","event":[{"listen":"test","script":{"id":"f3430d08-40a0-4674-bf21-bb8bcb256acc","exec":["var body = JSON.parse(responseBody);","if(body.data != null){","    pm.environment.set(\"accessToken\", body.data.jwt.accessToken);","    pm.environment.set(\"refreshToken\", body.data.jwt.refreshToken);","}"],"type":"text/javascript"}}],"id":"b4e9e862-8515-495e-a148-9de403773eeb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"url":"{{url}}/api/auth/:provider/login?code=_uiE07KaiwzMaopIqNGxpEtR6BLmrplBeJW2gy68wNre3dR8d-Wcyq2YaZkKKiUPAAABi8c05IvMISgqRbFCUQ&state=505094831746876770956762985520517155766&redirectUrl=http://localhost:5173/signin?provider=kakao","urlObject":{"path":["api","auth",":provider","login"],"host":["{{url}}"],"query":[{"key":"code","value":"_uiE07KaiwzMaopIqNGxpEtR6BLmrplBeJW2gy68wNre3dR8d-Wcyq2YaZkKKiUPAAABi8c05IvMISgqRbFCUQ"},{"key":"state","value":"505094831746876770956762985520517155766"},{"key":"redirectUrl","value":"http://localhost:5173/signin?provider=kakao"}],"variable":[{"type":"any","value":"kakao","key":"provider"}]}},"response":[{"id":"782b3647-e9d0-44d2-86c9-0a93bcf45149","name":"소셜 로그인 (카카오)","originalRequest":{"method":"POST","header":[],"url":{"raw":"{{url}}/api/auth/:provider/login?code=s75T5VXwXUJwtaU9MK&redirectUrl=http://localhost:5173/signin?provider=kakao&state=682979850410819868933956668244200834160","host":["{{url}}"],"path":["api","auth",":provider","login"],"query":[{"key":"code","value":"s75T5VXwXUJwtaU9MK"},{"key":"redirectUrl","value":"http://localhost:5173/signin?provider=kakao"},{"key":"state","value":"682979850410819868933956668244200834160"}],"variable":[{"key":"provider","value":"kakao"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Tue, 17 Oct 2023 11:28:11 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"로그인에 성공하였습니다\",\n    \"data\": {\n        \"jwt\": {\n            \"accessToken\": \"eyJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6InFrZGxmanRtMTE5QG5hdmVyLmNvbSIsIm1lbWJlcklkIjoxLCJleHAiOjE2OTc1NzgwOTB9.wLcwCT1cd0-rVGgrg_UOJtxJH6cONKxPbXQ3s-4SBaY\",\n            \"refreshToken\": \"eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2OTc1NzgwOTB9.OKcSW3Aoie3o2nPSnjec5nPqaQBLq7UNJOfpHd4mHIg\"\n        },\n        \"user\": {\n            \"id\": 1,\n            \"nickname\": \"일개미2aa1c3d7\",\n            \"email\": \"qkdlfjtm119@naver.com\",\n            \"profileUrl\": \"http://k.kakaocdn.net/dn/dpk9l1/btqmGhA2lKL/Oz0wDuJn1YV2DIn92f6DVK/img_640x640.jpg\"\n        }\n    }\n}"},{"id":"a5dfb3e7-4be5-49ab-a3fa-10e4fece827c","name":"소셜 로그인 성공 (네이버)","originalRequest":{"method":"POST","header":[],"url":{"raw":"{{url}}/api/auth/:provider/login?code=0tAE1IdGTOJNYr0Pxh&redirectUrl=http://localhost:5173/signin?provider=naver&state=5994714632379085621054542452443586002","host":["{{url}}"],"path":["api","auth",":provider","login"],"query":[{"key":"code","value":"0tAE1IdGTOJNYr0Pxh"},{"key":"redirectUrl","value":"http://localhost:5173/signin?provider=naver"},{"key":"state","value":"5994714632379085621054542452443586002"}],"variable":[{"key":"provider","value":"naver"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Tue, 17 Oct 2023 11:36:57 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"로그인에 성공하였습니다\",\n    \"data\": {\n        \"jwt\": {\n            \"accessToken\": \"eyJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6ImRyYWdvbmJlYWQ5NUBuYXZlci5jb20iLCJtZW1iZXJJZCI6MSwiZXhwIjoxNjk3NTc4NjE3fQ.1qPeLNq_-8dJSztbPh3P6K0nA4xSdR6PQVWdIjsjrMM\",\n            \"refreshToken\": \"eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2OTc1Nzg2MTd9.0EgI9bb0s-fh6k2_52kTR3yFuIhDHKWpfi11lCpxfRc\"\n        },\n        \"user\": {\n            \"id\": 1,\n            \"nickname\": \"일개미486feeb4\",\n            \"email\": \"dragonbead95@naver.com\",\n            \"profileUrl\": \"https://phinf.pstatic.net/contact/20230920_28/1695214586526d9WRh_PNG/image.png\"\n        }\n    }\n}"},{"id":"75253f5e-a0f0-41ee-8947-419236257572","name":"로그인 성공 (구글)","originalRequest":{"method":"POST","header":[],"url":{"raw":"{{url}}/api/auth/:provider/login?code=xItBg3XAYrf4bY4Xzu&redirectUrl=http://localhost:5173/signin?provider=google&state=5994714632379085621054542452443586002","host":["{{url}}"],"path":["api","auth",":provider","login"],"query":[{"key":"code","value":"xItBg3XAYrf4bY4Xzu"},{"key":"redirectUrl","value":"http://localhost:5173/signin?provider=google"},{"key":"state","value":"5994714632379085621054542452443586002","type":"text"}],"variable":[{"key":"provider","value":"google"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","name":"Content-Type","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"로그인에 성공하였습니다\",\n    \"data\": {\n        \"jwt\": {\n            \"accessToken\": \"r3h0933gw0hg0gwh.s0-9ujheg.-sdjgiwg\",\n            \"refreshToken\": \"0shdg09ehwg0hewg.w0ghe0wgh.wg0h0g\"\n        },\n        \"user\": {\n            \"id\": 1,\n            \"nickname\": \"일개미7890\",\n            \"email\": \"kim1234@gmail.com\",\n            \"profileUrl\": \"https://accounts.kakao.com/assets/weblogin/img_profile.png\"\n        }\n    }\n}"},{"id":"1bd66ac8-6442-4991-b5d6-494b179bda99","name":"로그인 실패 (잘못된 인가코드)","originalRequest":{"method":"POST","header":[],"url":{"raw":"{{url}}/api/auth/:provider/login?code=4567","host":["{{url}}"],"path":["api","auth",":provider","login"],"query":[{"key":"code","value":"4567"}],"variable":[{"key":"provider","value":"kakao"}]}},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","name":"Content-Type","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 401,\n    \"status\": \"Unauthorized\",\n    \"message\": \"잘못된 인가코드입니다\",\n    \"data\": null\n}"}],"_postman_id":"b4e9e862-8515-495e-a148-9de403773eeb"},{"name":"일반 로그인","event":[{"listen":"test","script":{"id":"24733fa5-3eef-4eac-ba27-ca3ef441af16","exec":["var body = JSON.parse(responseBody);","if(body.data != null){","    pm.environment.set(\"accessToken\", body.data.jwt.accessToken);","    pm.environment.set(\"refreshToken\", body.data.jwt.refreshToken);","}"],"type":"text/javascript"}}],"id":"66ee2ab9-00a0-45e6-840f-eee82737d3e4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"email\": \"kim1234@gmail.com\",\n    \"password\": \"kim1234@\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/login","urlObject":{"path":["api","auth","login"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"526dca5d-7c7c-4d66-8094-5d64e55b485c","name":"일반 로그인 성공","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"email\": \"kim1234@gmail.com\",\n    \"password\": \"kim1234@\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/auth/login"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"로그인에 성공하였습니다\",\n    \"data\": {\n        \"jwt\": {\n            \"accessToken\": \"r3h0933gw0hg0gwh.s0-9ujheg.-sdjgiwg\",\n            \"refreshToken\": \"0shdg09ehwg0hewg.w0ghe0wgh.wg0h0g\"\n        },\n        \"user\": {\n            \"id\": 1,\n            \"nickname\": \"일개미7890\",\n            \"email\": \"kim1234@gmail.com\",\n            \"profileUrl\": \"https://accounts.kakao.com/assets/weblogin/img_profile.png\"\n        }\n    }\n}"}],"_postman_id":"66ee2ab9-00a0-45e6-840f-eee82737d3e4"},{"name":"로그아웃","event":[{"listen":"test","script":{"id":"1c207329-4a83-41a8-afca-57d3da6c0d64","exec":["pm.environment.set(\"accessToken\", null);","pm.environment.set(\"refreshToken\", null);"],"type":"text/javascript"}}],"id":"531ac959-acbc-4746-b996-a3ec42ce90aa","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"refreshToken\": \"{{refreshToken}}\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/logout","urlObject":{"path":["api","auth","logout"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"3b8f30b6-d30e-47ba-b295-8997c30cc90e","name":"로그아웃 성공","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"eyJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiI0MCIsImxvZ2luSWQiOiJicnVuaWlpaSJ9.mq3k2iCGMJS20us3tLOrcWcYJpSmGmY3Ksd-UNW5LIw","description":"access token","type":"text"},{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"refreshToken\": \"{{refreshToken}}\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/logout"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","name":"Content-Type","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"로그아웃에 성공하였습니다\",\n    \"data\": null\n}"}],"_postman_id":"531ac959-acbc-4746-b996-a3ec42ce90aa"},{"name":"액세스 토큰 갱신","id":"96a9e65a-5dcb-45b5-ba96-39d8303e512d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"refreshToken\": \"{{refreshToken}}\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/refresh/token","urlObject":{"path":["api","auth","refresh","token"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"08f05bf0-2ed5-4478-8645-eccc91f94327","name":"액세스 토큰 갱신 성공","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"refreshToken\": \"{{refreshToken}}\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/refresh/token"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Tue, 17 Oct 2023 13:34:26 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"액세스 토큰 갱신에 성공하였습니다\",\n    \"data\": {\n        \"accessToken\": \"eyJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6InFrZGxmanRtMTE5QG5hdmVyLmNvbSIsIm1lbWJlcklkIjoxLCJleHAiOjE2OTc1ODU2NjV9.IgBLWe8Pz__PRxAUrOkKfs0Tcwqq3qf8lx5oTxm0wRo\"\n    }\n}"},{"id":"8f461877-9b6c-4948-8cf8-8377bd2e02c6","name":"액세스 토큰 갱신 실패 (유효하지 않은 리프레쉬 토큰)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"refreshToken\": \"invalidRefreshValue\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/auth/refresh/token"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","name":"Content-Type","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"유효하지 않은 토큰입니다\",\n    \"data\": null\n}"}],"_postman_id":"96a9e65a-5dcb-45b5-ba96-39d8303e512d"},{"name":"인가코드 URL 요청","id":"28cd97fd-52a7-48aa-a5be-c08c675af05e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"url":"{{url}}/api/auth/:provider/authUrl","urlObject":{"path":["api","auth",":provider","authUrl"],"host":["{{url}}"],"query":[],"variable":[{"type":"any","value":"","key":"provider"}]}},"response":[{"id":"56e2ff7e-c857-42f8-938b-7305d5319005","name":"인가코드 URL 요청 (카카오)","originalRequest":{"method":"POST","header":[],"url":{"raw":"{{url}}/api/auth/:provider/authUrl","host":["{{url}}"],"path":["api","auth",":provider","authUrl"],"variable":[{"key":"provider","value":"kakao"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"*"},{"key":"Access-Control-Max-Age","value":"3600"},{"key":"Access-Control-Allow-Headers","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 08 Nov 2023 08:09:27 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"인가 코드 URL 요청에 성공하였습니다.\",\n    \"data\": {\n        \"authURL\": \"https://kauth.kakao.com/oauth/authorize?response_type=code&client_id=88171956c99257e9ea8c241b4fd544df&redirect_uri=https://localhost/api/auth/kakao/login&scope=openid&state=529374102256579043115536254813377574697&code_challenge=1WVYaLp-pk0QxDEIU2W4WPlv1WNqsYZJLdvCkOZyWiw&code_challenge_method=S256\"\n    }\n}"},{"id":"1498255b-30a1-4d1a-9738-a1ff0bc3f93b","name":"인가코드 URL 요청 (네이버)","originalRequest":{"method":"POST","header":[],"url":{"raw":"{{url}}/api/auth/:provider/authUrl","host":["{{url}}"],"path":["api","auth",":provider","authUrl"],"variable":[{"key":"provider","value":"naver"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Access-Control-Allow-Origin","value":"*"},{"key":"Access-Control-Allow-Methods","value":"*"},{"key":"Access-Control-Max-Age","value":"3600"},{"key":"Access-Control-Allow-Headers","value":"*"},{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 08 Nov 2023 08:09:27 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"인가 코드 URL 요청에 성공하였습니다.\",\n    \"data\": {\n        \"authURL\": \"https://kauth.kakao.com/oauth/authorize?response_type=code&client_id=88171956c99257e9ea8c241b4fd544df&redirect_uri=https://localhost/api/auth/kakao/login&scope=openid&state=529374102256579043115536254813377574697&code_challenge=1WVYaLp-pk0QxDEIU2W4WPlv1WNqsYZJLdvCkOZyWiw&code_challenge_method=S256\"\n    }\n}"}],"_postman_id":"28cd97fd-52a7-48aa-a5be-c08c675af05e"}],"id":"e7da0a86-ef5e-4dc4-b2ed-6d6465272b2f","_postman_id":"e7da0a86-ef5e-4dc4-b2ed-6d6465272b2f","description":""},{"name":"포트폴리오","item":[{"name":"포트폴리오 추가","id":"d3bf73a3-2fd3-482e-8bb5-c3eb0eb467f5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"내꿈은 워렌버핏\",\n    \"securitiesFirm\": \"토스\",\n    \"budget\": 1000000,\n    \"targetGain\": 1500000,\n    \"maximumLoss\": 900000\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/portfolios","urlObject":{"path":["api","portfolios"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"46dba06e-2fe1-4655-b1f3-ed406688603d","name":"포트폴리오 추가 성공","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"내꿈은 워렌버핏\",\n    \"securitiesFirm\": \"토스\",\n    \"budget\": 1000000,\n    \"targetGain\": 1500000,\n    \"maximumLoss\": 900000\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/portfolios"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"포트폴리오가 추가되었습니다\",\n    \"data\": {\n        \"portfolioId\": 1\n    }\n}"},{"id":"5b9736a4-0159-4240-800f-e0706e1ad269","name":"포트폴리오 추가 실패 (입력형식)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"securitiesFirm\": \"\",\n    \"budget\": 0,\n    \"targetGain\": null,\n    \"maximumLoss\": -1\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/portfolios"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"잘못된 입력형식입니다\",\n    \"data\": [\n        {\n            \"field\": \"name\",\n            \"defaultMessage\": \"포트폴리오 이름은 필수 정보입니다\"\n        },\n        {\n            \"field\": \"securitiesFirm\",\n            \"defaultMessage\": \"증권사는 필수 정보입니다\"\n        },\n        {\n            \"field\": \"budget\",\n            \"defaultMessage\": \"예산은 양수여야 합니다\"\n        },\n        {\n            \"field\": \"targetGain\",\n            \"defaultMessage\": \"목표 수익 금액은 필수 정보입니다\"\n        },\n        {\n            \"field\": \"maximumLoss\",\n            \"defaultMessage\": \"최대 손실 금액은 양수여야 합니다\"\n        }\n    ]\n}"},{"id":"ff6cf83f-9413-4b40-91bf-e8938ce97954","name":"포트폴리오 추가 실패 (목표 수익 금액  부족)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"내꿈은 워렌버핏\",\n    \"securitiesFirm\": \"토스\",\n    \"budget\": 1000000,\n    \"targetGain\": 900000,\n    \"maximumLoss\": 900000\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/portfolios"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"목표 수익금액은 예산보다 커야 합니다\",\n    \"data\": null\n}"},{"id":"b972aa3d-9c54-4379-beee-2f63d75ef1a9","name":"포트폴리오 추가 실패 (최대 손실 금액  부족)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"내꿈은 워렌버핏\",\n    \"securitiesFirm\": \"토스\",\n    \"budget\": 1000000,\n    \"targetGain\": 1500000,\n    \"maximumLoss\": 1000000\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/portfolios"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"최대 손실 금액은 예산 보다 작아야 합니다\",\n    \"data\": null\n}"},{"id":"f9fb3564-0b3c-4e5b-b86d-db97adf02c64","name":"포트폴리오 추가 실패 (이름 중복)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"내꿈은 워렌버핏2\",\n    \"securitiesFirm\": \"토스\",\n    \"budget\": 1000000,\n    \"targetGain\": 1500000,\n    \"maximumLoss\": 900000\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/portfolios"},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 409,\n    \"status\": \"Conflict\",\n    \"message\": \"포트폴리오 이름이 중복되었습니다\",\n    \"data\": null\n}"}],"_postman_id":"d3bf73a3-2fd3-482e-8bb5-c3eb0eb467f5"},{"name":"포트폴리오 삭제","id":"88706dd2-3d61-4ebb-932e-f523b679e904","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"{{url}}/api/portfolios/:portfolioId","urlObject":{"path":["api","portfolios",":portfolioId"],"host":["{{url}}"],"query":[],"variable":[{"type":"any","value":"1","key":"portfolioId"}]}},"response":[{"id":"aba0025b-24ec-40de-a331-05ee390d8d0c","name":"포트폴리오 삭제 성공","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"{{url}}/api/portfolios/:portfolioId","host":["{{url}}"],"path":["api","portfolios",":portfolioId"],"variable":[{"key":"portfolioId","value":"1"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"포트폴리오 삭제가 완료되었습니다\",\n    \"data\": null\n}"},{"id":"96425ccb-9b2f-4951-809e-8aed83181980","name":"포트폴리오 삭제 실패 (존재하지 않음)","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"{{url}}/api/portfolios/:portfolioId","host":["{{url}}"],"path":["api","portfolios",":portfolioId"],"variable":[{"key":"portfolioId","value":"9999"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 404,\n    \"status\": \"Not Found\",\n    \"message\": \"포트폴리오를 찾을 수 없습니다\",\n    \"data\": null\n}"},{"id":"c9e2b2c8-91b1-49a7-8ad7-5cdd0f4a1047","name":"포트폴리오 삭제 실패 (권한 없음)","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"{{url}}/api/portfolios/:portfolioId","host":["{{url}}"],"path":["api","portfolios",":portfolioId"],"variable":[{"key":"portfolioId","value":"2"}]}},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 403,\n    \"status\": \"Forbidden\",\n    \"message\": \"포트폴리오에 대한 권한이 없습니다\",\n    \"data\": null\n}"}],"_postman_id":"88706dd2-3d61-4ebb-932e-f523b679e904"},{"name":"포트폴리오 수정","id":"29921438-f9a7-4093-acaf-f30df3d6ab78","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"내꿈은 찰리몽거\",\n    \"securitiesFirm\": \"토스\",\n    \"budget\": 1000000,\n    \"targetGain\": 1500000,\n    \"maximumLoss\": 900000\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/portfolios/:portfolioId","urlObject":{"path":["api","portfolios",":portfolioId"],"host":["{{url}}"],"query":[],"variable":[{"type":"any","value":"1","key":"portfolioId"}]}},"response":[{"id":"d4db8dce-4f5c-464c-9287-f445784ae66a","name":"포트폴리오 수정 성공","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"내꿈은 찰리몽거\",\n    \"securitiesFirm\": \"토스\",\n    \"budget\": 1000000,\n    \"targetGain\": 1500000,\n    \"maximumLoss\": 900000\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolios/:portfolioId","host":["{{url}}"],"path":["api","portfolios",":portfolioId"],"variable":[{"key":"portfolioId","value":"1"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"포트폴리오가 수정되었습니다\",\n    \"data\": null\n}"},{"id":"ffb0e560-4ea1-46d1-afe0-189aaf43838b","name":"포트폴리오 수정 실패 (입력형식)","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"securitiesFirm\": \"\",\n    \"budget\": 0,\n    \"targetGain\": null,\n    \"maximumLoss\": -1\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolios/:portfolioId","host":["{{url}}"],"path":["api","portfolios",":portfolioId"],"variable":[{"key":"portfolioId","value":"1"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"잘못된 입력형식입니다\",\n    \"data\": [\n        {\n            \"field\": \"name\",\n            \"defaultMessage\": \"포트폴리오 이름은 필수 정보입니다\"\n        },\n        {\n            \"field\": \"securitiesFirm\",\n            \"defaultMessage\": \"증권사는 필수 정보입니다\"\n        },\n        {\n            \"field\": \"budget\",\n            \"defaultMessage\": \"예산은 양수여야 합니다\"\n        },\n        {\n            \"field\": \"targetGain\",\n            \"defaultMessage\": \"목표 수익 금액은 필수 정보입니다\"\n        },\n        {\n            \"field\": \"maximumLoss\",\n            \"defaultMessage\": \"최대 손실 금액은 양수여야 합니다\"\n        }\n    ]\n}"},{"id":"f1d72332-31ce-4b4e-8703-b502a4484bf0","name":"포트폴리오 수정 실패 (목표 수익 금액 부족)","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"내꿈은 워렌버핏\",\n    \"securitiesFirm\": \"토스\",\n    \"budget\": 1000000,\n    \"targetGain\": 900000,\n    \"maximumLoss\": 900000\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolios/:portfolioId","host":["{{url}}"],"path":["api","portfolios",":portfolioId"],"variable":[{"key":"portfolioId","value":"1"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"목표 수익금액은 예산보다 커야 합니다\",\n    \"data\": null\n}"},{"id":"e368f101-0ec6-4baa-8437-1c2459d1a93d","name":"포트폴리오 수정 실패 (최대 손실 금액 부족)","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"내꿈은 워렌버핏\",\n    \"securitiesFirm\": \"토스\",\n    \"budget\": 1000000,\n    \"targetGain\": 1500000,\n    \"maximumLoss\": 1000000\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolios/:portfolioId","host":["{{url}}"],"path":["api","portfolios",":portfolioId"],"variable":[{"key":"portfolioId","value":"1"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"최대 손실 금액은 예산 보다 작아야 합니다\",\n    \"data\": null\n}"},{"id":"ec71f0e3-2538-49d9-a2e5-db044b64e079","name":"포트폴리오 수정 실패 (이름 중복)","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"내꿈은 워렌버핏2\",\n    \"securitiesFirm\": \"토스\",\n    \"budget\": 1000000,\n    \"targetGain\": 1500000,\n    \"maximumLoss\": 900000\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolios/:portfolioId","host":["{{url}}"],"path":["api","portfolios",":portfolioId"],"variable":[{"key":"portfolioId","value":"1"}]}},"status":"Conflict","code":409,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 409,\n    \"status\": \"Conflict\",\n    \"message\": \"포트폴리오 이름이 중복되었습니다\",\n    \"data\": null\n}"},{"id":"744d11f4-e4de-4044-b134-df9faa50664a","name":"포트폴리오 수정 실패 (존재하지 않음)","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"내꿈은 찰리몽거\",\n    \"securitiesFirm\": \"토스\",\n    \"budget\": 1000000,\n    \"targetGain\": 1500000,\n    \"maximumLoss\": 900000\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolios/:portfolioId","host":["{{url}}"],"path":["api","portfolios",":portfolioId"],"variable":[{"key":"portfolioId","value":"9999"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 404,\n    \"status\": \"Not Found\",\n    \"message\": \"포트폴리오를 찾을 수 없습니다\",\n    \"data\": null\n}"},{"id":"92275826-0ac9-432a-8899-0395fe168aae","name":"포트폴리오 수정 실패 (권한 없음)","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"name\": \"내꿈은 찰리몽거\",\n    \"securitiesFirm\": \"토스\",\n    \"budget\": 1000000,\n    \"targetGain\": 1500000,\n    \"maximumLoss\": 900000\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolios/:portfolioId","host":["{{url}}"],"path":["api","portfolios",":portfolioId"],"variable":[{"key":"portfolioId","value":"2"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 403,\n    \"status\": \"Forbidden\",\n    \"message\": \"포트폴리오에 대한 권한이 없습니다\",\n    \"data\": null\n}"}],"_postman_id":"29921438-f9a7-4093-acaf-f30df3d6ab78"},{"name":"포트폴리오 목록 조회","id":"e6951b47-f45d-4db5-ad8b-b74aa61e2fa1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{url}}/api/portfolios","urlObject":{"path":["api","portfolios"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"dddd2b1d-016c-4c0f-9ff9-b2398a8ff285","name":"포트폴리오 목록 조회","originalRequest":{"method":"GET","header":[],"url":"{{url}}/api/portfolios"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"포트폴리오 목록 조회가 완료되었습니다\",\n    \"data\": {\n        \"portfolios\" : [\n            {\n                \"id\": 3,\n                \"securitiesFirm\": \"토스\",\n                \"name\": \"엘리엇파동12345ABC\",\n                \"budget\": 1000000,\n                \"totalGain\": 100000,\n                \"totalGainRate\": 10,\n                \"dailyGain\": 100000,\n                \"dailyGainRate\": 10,\n                \"expectedMmonthlyDividend\": 20000,\n                \"numShares\": 9\n            },\n            {\n                \"id\": 2,\n                \"name\": \"롱숏롱숏\",\n                \"budget\": 1000000,\n                \"totalGain\": 100000,\n                \"totalGainRate\": 10,\n                \"dailyGain\": 100000,\n                \"dailyGainRate\": 10,\n                \"expectedMmonthlyDividend\": 20000,\n                \"numShares\": 3\n            },\n            {\n                \"id\": 1,\n                \"securitiesFirm\": \"토스\",\n                \"name\": \"물린게 아니라 장기투자\",\n                \"budget\": 1000000,\n                \"totalGain\": 100000,\n                \"totalGainRate\": 10,\n                \"dailyGain\": 100000,\n                \"dailyGainRate\": 10,\n                \"expectedMmonthlyDividend\": 20000,\n                \"numShares\": 12\n            }\n        ],\n        \"hasNext\": false,\n        \"nextCursor\": null\n    }\n}"}],"_postman_id":"e6951b47-f45d-4db5-ad8b-b74aa61e2fa1"}],"id":"8bf52677-2282-4818-b057-7cf92eec9762","_postman_id":"8bf52677-2282-4818-b057-7cf92eec9762","description":""},{"name":"포트폴리오 종목","item":[{"name":"포트폴리오 상세 조회 및 종목 조회","id":"6926997d-25ca-46c7-9475-082fbcdbc9b9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"GET","header":[],"url":"{{url}}/api/portfolio/:portfolioId/holdings","urlObject":{"path":["api","portfolio",":portfolioId","holdings"],"host":["{{url}}"],"query":[],"variable":[{"description":{"content":"<p>포트폴리오 등록번호</p>\n","type":"text/plain"},"type":"any","value":"1","key":"portfolioId"}]}},"response":[{"id":"c4db7b1b-a115-44b6-86c0-252ab0fbdbc7","name":"포트폴리오 종목 조회 성공","originalRequest":{"method":"GET","header":[],"url":{"raw":"{{url}}/api/portfolio/:portfolioId/holdings","host":["{{url}}"],"path":["api","portfolio",":portfolioId","holdings"],"variable":[{"key":"portfolioId","value":"1"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"포트폴리오 상세 정보 및 포트폴리오 종목 목록 조회가 완료되었습니다\",\n    \"data\": {\n        \"portfolioDetails\": {\n                \"id\": 3,                    // 등록번호\n                \"securitiesFirm\": \"토스\",    // 증권\n                \"name\": \"내꿈은 워렌버핏\",      // 포트폴리오명\n                \"budget\": 1000000,          // 예산\n                \"targetGain\": 1500000,      // 목표 수익금액\n                \"targetReturnRate\": 50,     // 목표 수익률\n                \"maximumLoss\": 900000,      // 최대 손실 금액\n                \"maximumLossRate\": 10,      // 최대손실율\n                \"investedAmount\": 500000,   // 포트폴리오 투\b자금액\n                \"totalGain\": 100000,        // 총손익\n                \"totalGainRate\": 10,        // 총손익율\n                \"dailyGain\": 100000,        // 당일손익\u001f\n                \"dailyGainRate\": 10,        // 당일손익율\n                \"balance\": 500000,          // 잔고\n                \"totalAnnualDividend\": 15000,       // 연간배당금\n                \"totalAnnualDividendYield\": 3,      // 연간배당율\n                \"annualInvestmentDividendYield\": 3, // 투자 대비 연간 배당율\n                \"provisionalLossBalance\": 0,        // 잠정 손실잔고\n                \"targetGainNotification\": false,    // 목표수익금액 알림 여부\n                \"maxLossNotification\": false        // 최대손실금액 알림 여부\n        },\n        \"portfolioHoldings\": [\n            {\n                // 종목 정보\n                \"companyName\": \"삼성전자보통주\",    // 종목명\n                \"tickerSymbol\": \"005930\",       // 단축코드(티커심볼)\n\n                // 포트폴리오 종목 정보\n                \"portfolioHoldingId\": 1,              // 포트폴리오종목 등록번호\n                \"currentValuation\": 600000,             // 평가금액\n                \"currentPrice\": 60000,              // 현재가\n                \"averageCostPerShare\": 50000.00,    // 평균 매입가\n                \"numShares\": 10,                    // 주식개수\n                \"dailyChange\": 10000,               // 당일 변동 금액\n                \"dailyChangeRate\": 10,              // 당일 변동률\n                \"totalGain\": 100000,                // 총손익\n                \"totalReturnRate\": 16,              // 총손익율\u001f\n                \"annualDividend\": 6000,             // 연배당금\n                \"annualDividendYield\": 10,          // 연배당율\n\n                // 배당금 정보\n                \"dividends\":[\n                    {\n                        \"dividendId\": 1,\n                        \"dividendMonth\": \"2023-04-14 00:00:00\",\n                        \"dividendAmount\": 361\n                    },\n                    {\n                        \"dividendId\": 2,\n                        \"dividendMonth\": \"2023-05-17 00:00:00\",\n                        \"dividendAmount\": 361\n                    },\n                    {\n                        \"dividendId\": 3,\n                        \"dividendMonth\": \"2023-08-16 00:00:00\",\n                        \"dividendAmount\": 361\n                    },\n                    {\n                        \"dividendId\": 4,\n                        \"dividendMonth\": \"2023-11-20 00:00:00\",\n                        \"dividendAmount\": 361\n                    }\n                ],\n\n                // 매입 내역\n                \"purchaseHistory\":[\n                    {\n                        \"purchaseHistoryId\": 3,\n                        \"purchaseDate\": \"2023-10-23T15:00:00\",  // 매입 날짜\u001f\n                        \"numShares\": 3,                         // 매입 개수\n                        \"purchasePricePerShare\": 50000.00,      // 매입가\n                        \"memo\": null                            // 메모\n                    },\n                    {\n                        \"purchaseHistoryId\": 2,\n                        \"purchaseDate\": \"2023-10-23T14:00:00\",  // 매입 날짜\u001f\n                        \"numShares\": 3,                         // 매입 개수\n                        \"purchasePricePerShare\": 50000.00,      // 매입가\n                        \"memo\": \"더살거야\"                        // 메모\n                    },\n                    {\n                        \"purchaseHistoryId\": 1,\n                        \"purchaseDate\": \"2023-10-23T10:00:00\",  // 매입 날짜\u001f\n                        \"numShares\": 4,                         // 매입 개수\n                        \"purchasePricePerShare\": 50000.00,      // 매입가\n                        \"memo\": \"첫구매\"                          // 메모\n                    }\n                ],\n            }\n        ]\n    }\n}"}],"_postman_id":"6926997d-25ca-46c7-9475-082fbcdbc9b9"},{"name":"포트폴리오 종목 추가","id":"1a3dab5a-5ae2-4e0d-922c-845240cdb5fd","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"tickerSymbol\": \"005930\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/portfolio/:portfolioId/holdings","urlObject":{"path":["api","portfolio",":portfolioId","holdings"],"host":["{{url}}"],"query":[],"variable":[{"description":{"content":"<p>포트폴리오 등록번호</p>\n","type":"text/plain"},"type":"any","value":"1","key":"portfolioId"}]}},"response":[{"id":"fa2e7a77-0bb3-4615-90b0-979a320dc83a","name":"포트폴리오 종목 추가","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"tickerSymbol\": \"005930\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolio/:portfolioId/holdings","host":["{{url}}"],"path":["api","portfolio",":portfolioId","holdings"],"variable":[{"key":"portfolioId","value":"1"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"포트폴리오 종목이 추가되었습니다\",\n    \"data\": null\n}"},{"id":"50ab42c5-8710-499e-8a52-7b2c2e3c4bb7","name":"포트폴리오 종목 추가 실패 (입력 형식)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"stockId\": null\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolio/:portfolioId/holdings","host":["{{url}}"],"path":["api","portfolio",":portfolioId","holdings"],"variable":[{"key":"portfolioId","value":"1"}]}},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"잘못된 입력형식입니다\",\n    \"data\": [\n        {\n            \"field\": \"stockId\",\n            \"defaultMessage\": \"종목 등록번호는 필수 정보입니다\"\n        }\n    ]\n}"},{"id":"fcee0a86-494d-4502-ac9c-c193f902b351","name":"포트폴리오 종목 추가 실패 (존재하지 않음)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"tickerSymbol\": \"99999999\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolio/:portfolioId/holdings","host":["{{url}}"],"path":["api","portfolio",":portfolioId","holdings"],"variable":[{"key":"portfolioId","value":"1"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 404,\n    \"status\": \"Not Found\",\n    \"message\": \"종목을 찾을 수 없습니다.\",\n    \"data\": null\n}"}],"_postman_id":"1a3dab5a-5ae2-4e0d-922c-845240cdb5fd"},{"name":"포트폴리오 종목 삭제","id":"39a1264d-adbf-40f5-a2b5-c89fd29ed58c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"{{url}}/api/portfolio/:portfolioId/holdings/:portfolioHoldingId","urlObject":{"path":["api","portfolio",":portfolioId","holdings",":portfolioHoldingId"],"host":["{{url}}"],"query":[],"variable":[{"description":{"content":"<p>포트폴리오 등록번호</p>\n","type":"text/plain"},"type":"any","value":"1","key":"portfolioId"},{"description":{"content":"<p>포트폴리오 종목 등록번호</p>\n","type":"text/plain"},"type":"any","value":"1","key":"portfolioHoldingId"}]}},"response":[{"id":"619a23dd-e0e3-4ca1-a1aa-f97fe1e88360","name":"포트폴리오 종목 삭제 성공","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"{{url}}/api/portfolio/:portfolioId/holdings/:portfolioHoldingId","host":["{{url}}"],"path":["api","portfolio",":portfolioId","holdings",":portfolioHoldingId"],"variable":[{"key":"portfolioId","value":"1","description":"포트폴리오 등록번호"},{"key":"portfolioHoldingId","value":"1","description":"포트폴리오 종목 등록번호"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"포트폴리오 종목이 삭제되었습니다\",\n    \"data\": null\n}"},{"id":"0cb4de7d-cf10-414e-9395-18239057a05b","name":"포트폴리오 종목 삭제 실패 (존재하지 않음)","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"{{url}}/api/portfolio/:portfolioId/holdings/:portfolioHoldingId","host":["{{url}}"],"path":["api","portfolio",":portfolioId","holdings",":portfolioHoldingId"],"variable":[{"key":"portfolioId","value":"1","description":"포트폴리오 등록번호"},{"key":"portfolioHoldingId","value":"1","description":"포트폴리오 종목 등록번호"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 404,\n    \"status\": \"Not Found\",\n    \"message\": \"포트폴리오 종목이 존재하지 않습니다\",\n    \"data\": null\n}"}],"_postman_id":"39a1264d-adbf-40f5-a2b5-c89fd29ed58c"}],"id":"fce9595b-578b-4419-b533-85ea4a5e47a2","_postman_id":"fce9595b-578b-4419-b533-85ea4a5e47a2","description":""},{"name":"포트폴리오 종목 매입 이력","item":[{"name":"매입 이력 추가","id":"87c3bb14-e41f-40ed-9169-0db7ee5bb049","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"purchaseDate\": \"2023-10-23T13:00:00\",\n    \"numShares\": 3,\n    \"purchasePricePerShare\": 50000    \n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/portfolio/:portfolioId/holdings/:portfolioHoldingId/purchaseHistory","urlObject":{"path":["api","portfolio",":portfolioId","holdings",":portfolioHoldingId","purchaseHistory"],"host":["{{url}}"],"query":[],"variable":[{"description":{"content":"<p>포트폴리오 등록번호</p>\n","type":"text/plain"},"type":"any","value":"1","key":"portfolioId"},{"type":"any","value":"1","key":"portfolioHoldingId"}]}},"response":[{"id":"2bcf57ea-c9fe-46b5-9306-fb6d06a64a81","name":"매입 이력 추가 성공","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"purchaseDate\": \"2023-10-23T13:00:00\",\n    \"numShares\": 3,\n    \"purchasePricePerShare\": 50000,\n    \"memo\": \"첫구매\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolio/:portfolioId/holdings/:portfolioHoldingId/purchaseHistory","host":["{{url}}"],"path":["api","portfolio",":portfolioId","holdings",":portfolioHoldingId","purchaseHistory"],"variable":[{"key":"portfolioId","value":"1","description":"포트폴리오 등록번호"},{"key":"portfolioHoldingId","value":"1","description":"포트폴리오 종목 등록번호"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"매입 이력이 추가되었습니다\",\n    \"data\": null\n}"},{"id":"d0b3b3b5-e950-4881-8a0c-8335e70b1940","name":"매입 이력 추가 실패 (입력 형식)","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"purchaseDate\": null,\n    \"numShares\": 0,\n    \"purchasePricePerShare\": 0,\n    \"memo\": \"첫구매\"  \n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolio/:portfolioId/holdings/:portfolioHoldingId/purchaseHistory","host":["{{url}}"],"path":["api","portfolio",":portfolioId","holdings",":portfolioHoldingId","purchaseHistory"],"variable":[{"key":"portfolioId","value":"1","description":"포트폴리오 등록번호"},{"key":"portfolioHoldingId","value":""}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"잘못된 입력형식입니다\",\n    \"data\": [\n        {\n            \"field\": \"purchaseDate\",\n            \"defaultMessage\": \"매입날짜는 날짜 형식의 필수 정보입니다\"\n        },\n        {\n            \"field\": \"numShares\",\n            \"defaultMessage\": \"주식 개수는 양수여야 합니다\"\n        },\n        {\n            \"field\": \"purchasePricePerShare\",\n            \"defaultMessage\": \"매입가는 양수여야 합니다\"\n        }\n    ]\n}"}],"_postman_id":"87c3bb14-e41f-40ed-9169-0db7ee5bb049"},{"name":"매입 이력 수정","id":"e4515929-980a-4fd7-85f9-538fb43f8645","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"purchaseDate\": \"2023-10-23T13:00:00\",\n    \"numShares\": 4,\n    \"purchasePricePerShare\": 50000    \n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/portfolio/:portfolioId/holdings/:portfolioHoldingId/purchaseHistory/:purchaseHistoryId","urlObject":{"path":["api","portfolio",":portfolioId","holdings",":portfolioHoldingId","purchaseHistory",":purchaseHistoryId"],"host":["{{url}}"],"query":[],"variable":[{"description":{"content":"<p>포트폴리오 등록번호</p>\n","type":"text/plain"},"type":"any","value":"1","key":"portfolioId"},{"type":"any","value":"","key":"portfolioHoldingId"},{"type":"any","value":"","key":"purchaseHistoryId"}]}},"response":[{"id":"7f809278-e2e9-4739-866a-20c13f672693","name":"매입 이력 수정 성공","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"purchaseDate\": \"2023-10-23T13:00:00\",\n    \"numShares\": 4,\n    \"purchasePricePerShare\": 50000,\n    \"memo\": \"첫구매\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolio/:portfolioId/holdings/:portfolioHoldingId/purchaseHistory/:purchaseHistoryId","host":["{{url}}"],"path":["api","portfolio",":portfolioId","holdings",":portfolioHoldingId","purchaseHistory",":purchaseHistoryId"],"variable":[{"key":"portfolioId","value":"1","description":"포트폴리오 등록번호"},{"key":"portfolioHoldingId","value":"1","description":"포폴리오 종목 등록번호"},{"key":"purchaseHistoryId","value":"1","description":"매입이력 등록번호"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"매입 이력이 수정되었습니다\",\n    \"data\": null\n}"},{"id":"db30cd51-f77f-4271-a4e5-2e0e5920d8af","name":"매입 이력 수정 실패 (입력 형식)","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"purchaseDate\": null,\n    \"numShares\": 0,\n    \"purchasePricePerShare\": 0,\n    \"memo\": \"첫구매\"  \n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolio/:portfolioId/holdings/:portfolioHoldingId/purchaseHistory/:purchaseHistoryId","host":["{{url}}"],"path":["api","portfolio",":portfolioId","holdings",":portfolioHoldingId","purchaseHistory",":purchaseHistoryId"],"variable":[{"key":"portfolioId","value":"1","description":"포트폴리오 등록번호"},{"key":"portfolioHoldingId","value":"1","description":"포트폴리오 종목 등록번호"},{"key":"purchaseHistoryId","value":"1","description":"매입이력 등록번호"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 400,\n    \"status\": \"Bad Request\",\n    \"message\": \"잘못된 입력형식입니다\",\n    \"data\": [\n        {\n            \"field\": \"purchaseDate\",\n            \"defaultMessage\": \"매입날짜는 날짜 형식의 필수 정보입니다\"\n        },\n        {\n            \"field\": \"numShares\",\n            \"defaultMessage\": \"주식 개수는 양수여야 합니다\"\n        },\n        {\n            \"field\": \"password\",\n            \"defaultMessage\": \"패스워드는 8~16자 영문,숫자,특수문자 각각 최소 1개 필수 포함입니다\"\n        }\n    ]\n}"}],"_postman_id":"e4515929-980a-4fd7-85f9-538fb43f8645"},{"name":"매입 이력 삭제","id":"23e11d1f-4772-4829-8aa1-59614a5c220d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"DELETE","header":[],"url":"{{url}}/api/portfolio/:portfolioId/holdings/:portfolioHoldingId/purchaseHistory/:purchaseHistoryId","urlObject":{"path":["api","portfolio",":portfolioId","holdings",":portfolioHoldingId","purchaseHistory",":purchaseHistoryId"],"host":["{{url}}"],"query":[],"variable":[{"description":{"content":"<p>포트폴리오 등록번호</p>\n","type":"text/plain"},"type":"any","value":"1","key":"portfolioId"},{"description":{"content":"<p>포트폴리오 종목 등록번호</p>\n","type":"text/plain"},"type":"any","value":"1","key":"portfolioHoldingId"},{"description":{"content":"<p>매입이력 등록번호</p>\n","type":"text/plain"},"type":"any","value":"1","key":"purchaseHistoryId"}]}},"response":[{"id":"3844f702-ff4f-4c66-8a12-ccff3922676c","name":"매입 이력 삭제 성공","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"{{url}}/api/portfolio/:portfolioId/holdings/:portfolioHoldingId/purchaseHistory/:purchaseHistoryId","host":["{{url}}"],"path":["api","portfolio",":portfolioId","holdings",":portfolioHoldingId","purchaseHistory",":purchaseHistoryId"],"variable":[{"key":"portfolioId","value":"1","description":"포트폴리오 등록번호"},{"key":"portfolioHoldingId","value":"1","description":"매입이력 등록번호"},{"key":"purchaseHistoryId","value":"1","description":"매입이력 등록번호"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"매입 이력이 삭제되었습니다\",\n    \"data\": null\n}"},{"id":"f9833bbf-c1e3-4519-af4e-6ed42ab30125","name":"매입 이력 삭제 실패 (존재하지 않음)","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"{{url}}/api/portfolio/:portfolioId/holdings/:portfolioHoldingId/purchaseHistory/:purchaseHistoryId","host":["{{url}}"],"path":["api","portfolio",":portfolioId","holdings",":portfolioHoldingId","purchaseHistory",":purchaseHistoryId"],"variable":[{"key":"portfolioId","value":"1","description":"포트폴리오 등록번호"},{"key":"portfolioHoldingId","value":"1","description":"포트폴리오 종목 등록번호"},{"key":"purchaseHistoryId","value":"9999","description":"매입이력 등록번호"}]}},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 404,\n    \"status\": \"Not Found\",\n    \"message\": \"매입 이력을 찾을 수 없습니다\",\n    \"data\": null\n}"}],"_postman_id":"23e11d1f-4772-4829-8aa1-59614a5c220d"}],"id":"2c98a465-6c57-4b11-b69d-2992fe1bd546","_postman_id":"2c98a465-6c57-4b11-b69d-2992fe1bd546","description":""},{"name":"종목","item":[{"name":"\b종목 검색","id":"40b018bc-70b3-4176-a3b2-60f22365b48e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"searchTerm\": \"삼성\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/stocks/search","urlObject":{"path":["api","stocks","search"],"host":["{{url}}"],"query":[],"variable":[]}},"response":[{"id":"2e8f2ccd-030b-49f7-b0c2-0c7d67ecaeb5","name":"종목 검색 성공","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"searchTerm\": \"삼성\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/stocks/search"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Wed, 25 Oct 2023 04:03:59 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"종목 검색이 완료되었습니다\",\n    \"data\": [\n        {\n            \"stockCode\": \"KR7448730002\",\n            \"tickerSymbol\": \"448730\",\n            \"companyName\": \"삼성FN리츠보통주\",\n            \"companyNameEng\": \"SamsungFN REIT\",\n            \"market\": \"KOSPI\"\n        },\n        {\n            \"stockCode\": \"KR7006401004\",\n            \"tickerSymbol\": \"006405\",\n            \"companyName\": \"삼성SDI1우선주\",\n            \"companyNameEng\": \"SAMSUNG SDI(1P)\",\n            \"market\": \"KOSPI\"\n        },\n        {\n            \"stockCode\": \"KR7006400006\",\n            \"tickerSymbol\": \"006400\",\n            \"companyName\": \"삼성SDI보통주\",\n            \"companyNameEng\": \"SAMSUNG SDI CO.,LTD.\",\n            \"market\": \"KOSPI\"\n        },\n        {\n            \"stockCode\": \"KR7006660005\",\n            \"tickerSymbol\": \"006660\",\n            \"companyName\": \"삼성공조보통주\",\n            \"companyNameEng\": \"SamsungClimateControlCo.,Ltd\",\n            \"market\": \"KOSPI\"\n        },\n        {\n            \"stockCode\": \"KR7377630009\",\n            \"tickerSymbol\": \"377630\",\n            \"companyName\": \"삼성기업인수목적4호\",\n            \"companyNameEng\": \"SAMSUNG SPECIAL PURPOSE ACQUISITION 4 COMPANY\",\n            \"market\": \"KOSDAQ\"\n        },\n        {\n            \"stockCode\": \"KR7425290004\",\n            \"tickerSymbol\": \"425290\",\n            \"companyName\": \"삼성기업인수목적6호\",\n            \"companyNameEng\": \"SAMSUNG SPECIAL PURPOSE ACQUISITION 6 COMPANY\",\n            \"market\": \"KOSDAQ\"\n        },\n        {\n            \"stockCode\": \"KR7439250002\",\n            \"tickerSymbol\": \"439250\",\n            \"companyName\": \"삼성기업인수목적7호\",\n            \"companyNameEng\": \"SAMSUNG SPECIAL PURPOSE ACQUISITION 7 COMPANY\",\n            \"market\": \"KOSDAQ\"\n        },\n        {\n            \"stockCode\": \"KR7448740001\",\n            \"tickerSymbol\": \"448740\",\n            \"companyName\": \"삼성기업인수목적8호\",\n            \"companyNameEng\": \"SAMSUNG SPECIAL PURPOSE ACQUISITION 8 COMPANY\",\n            \"market\": \"KOSDAQ\"\n        },\n        {\n            \"stockCode\": \"KR7380320002\",\n            \"tickerSymbol\": \"380320\",\n            \"companyName\": \"삼성머스트기업인수목적5호\",\n            \"companyNameEng\": \"SAMSUNG MUST SPECIAL PURPOSE ACQUISITION 5 COMPANY\",\n            \"market\": \"KOSDAQ\"\n        },\n        {\n            \"stockCode\": \"KR702826K016\",\n            \"tickerSymbol\": \"02826K\",\n            \"companyName\": \"삼성물산1우선주(신형)\",\n            \"companyNameEng\": \"SAMSUNG C&T CORPORATION(1PB)\",\n            \"market\": \"KOSPI\"\n        }\n    ]\n}"}],"_postman_id":"40b018bc-70b3-4176-a3b2-60f22365b48e"}],"id":"e780814b-ca37-45b7-92c9-fa712c85ed1e","_postman_id":"e780814b-ca37-45b7-92c9-fa712c85ed1e","description":""},{"name":"알림","item":[{"name":"목표수익금액 알림","id":"1a021c39-1f23-44f5-97ff-8ecd18730fb2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"isActive\": \"true\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/portfolio/:portfolioId/notification/targetGain","urlObject":{"path":["api","portfolio",":portfolioId","notification","targetGain"],"host":["{{url}}"],"query":[],"variable":[{"type":"any","value":"1","key":"portfolioId"}]}},"response":[{"id":"1251d4d5-d989-4438-b143-af6aeaa8280d","name":"목표수익금액 알림 활성화","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"isActive\": \"true\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolio/:portfolioId/notification/targetGain","host":["{{url}}"],"path":["api","portfolio",":portfolioId","notification","targetGain"],"variable":[{"key":"portfolioId","value":""}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"목표수익금액의 알림이 활성화되었습니다\",\n    \"data\": null\n}"},{"id":"8c36c244-8ff0-4500-935d-c5d91bbd2b6b","name":"목표수익금액 알림 비활성화","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"isActive\": \"false\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolio/:portfolioId/notification/targetGain","host":["{{url}}"],"path":["api","portfolio",":portfolioId","notification","targetGain"],"variable":[{"key":"portfolioId","value":""}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"목표수익금액의 알림이 비활성화되었습니다\",\n    \"data\": null\n}"}],"_postman_id":"1a021c39-1f23-44f5-97ff-8ecd18730fb2"},{"name":"최대손실금액 알림","id":"a42c40ba-b66f-4b74-8558-f7f6017acb20","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\n    \"isActive\": \"true\"\n}","options":{"raw":{"language":"json"}}},"url":"{{url}}/api/portfolio/:portfolioId/notification/maxLoss","urlObject":{"path":["api","portfolio",":portfolioId","notification","maxLoss"],"host":["{{url}}"],"query":[],"variable":[{"type":"any","value":"1","key":"portfolioId"}]}},"response":[{"id":"449ac652-129f-4cdd-b1c7-eba8c7d1704d","name":"최대손실금액 알림 활성화","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"isActive\": \"true\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolio/:portfolioId/notification/maxLoss","host":["{{url}}"],"path":["api","portfolio",":portfolioId","notification","maxLoss"],"variable":[{"key":"portfolioId","value":"1"}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"최대손실금액의 알림이 활성화되었습니다\",\n    \"data\": null\n}"},{"id":"b729c171-7ca7-489c-b3dc-69b5cb7cc0e6","name":"최대손실금액 알림 비활성화","originalRequest":{"method":"POST","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"isActive\": \"false\"\n}","options":{"raw":{"language":"json"}}},"url":{"raw":"{{url}}/api/portfolio/:portfolioId/notification/maxLoss","host":["{{url}}"],"path":["api","portfolio",":portfolioId","notification","maxLoss"],"variable":[{"key":"portfolioId","value":"1"}]}},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"최대손실금액의 알림이 비활성화되었습니다\",\n    \"data\": null\n}"}],"_postman_id":"a42c40ba-b66f-4b74-8558-f7f6017acb20"}],"id":"ab4805c5-440d-45ee-b52c-30b63a7b49b6","_postman_id":"ab4805c5-440d-45ee-b52c-30b63a7b49b6","description":""},{"name":"관심종목","item":[{"name":"관심종목 목록 조회","id":"3c5d3033-a4e4-4266-b4ac-0a4e25acf661","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"GET","header":[],"urlObject":{"query":[],"variable":[]},"url":""},"response":[{"id":"c63c4bdb-a3ac-4387-af97-0870f6341bc3","name":"관심종목 목록 조회 성공","originalRequest":{"method":"GET","header":[],"url":"{{url}}/api/\bwatchlist/"},"_postman_previewlanguage":"json","header":[{"key":"Content-Type","name":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": 200,\n    \"status\": \"OK\",\n    \"message\": \"포트폴리오 상세 정보 및 포트폴리오 종목 목록 조회가 완료되었습니다\",\n    \"data\": [\n        {\n            \"id\": 1,\n            \"name\": \"삼성전자\",\n            \"currentPrice\": 68000,\n            \"change\": 1.85,\n            \"dividends\": 2.12,\n            \"sector\": \"제조업\"\n        },\n        {\n            \"id\": 2,\n            \"name\": \"카카오\",\n            \"currentPrice\": 43200,\n            \"change\": -1.03,\n            \"dividends\": 0.14,\n            \"sector\": \"서비스업\"\n        },\n        {\n            \"id\": 3,\n            \"name\": \"NAVER\",\n            \"currentPrice\": 191800,\n            \"change\": -2.64,\n            \"dividends\": 4.14,\n            \"sector\": \"서비스업\"\n        },\n        {\n            \"id\": 4,\n            \"name\": \"현대차\",\n            \"currentPrice\": 128000,\n            \"change\": 0.95,\n            \"dividends\": 3.5,\n            \"sector\": \"제조업\"\n        },\n        {\n            \"id\": 5,\n            \"name\": \"LG전자\",\n            \"currentPrice\": 81000,\n            \"change\": 2.75,\n            \"dividends\": 2.43,\n            \"sector\": \"제조업\"\n        },\n        {\n            \"id\": 6,\n            \"name\": \"셀트리온\",\n            \"currentPrice\": 230000,\n            \"change\": -1.9,\n            \"dividends\": 1.33,\n            \"sector\": \"의약업\"\n        },\n        {\n            \"id\": 7,\n            \"name\": \"SK하이닉스\",\n            \"currentPrice\": 95000,\n            \"change\": -0.86,\n            \"dividends\": 2.21,\n            \"sector\": \"제조업\"\n        },\n        {\n            \"id\": 8,\n            \"name\": \"POSCO\",\n            \"currentPrice\": 315000,\n            \"change\": -11.5,\n            \"dividends\": 4.2,\n            \"sector\": \"제조업\"\n        },\n        {\n            \"id\": 9,\n            \"name\": \"한화솔루션\",\n            \"currentPrice\": 43000,\n            \"change\": 6.36,\n            \"dividends\": 0.9,\n            \"sector\": \"에너지업\"\n        },\n        {\n            \"id\": 10,\n            \"name\": \"기아\",\n            \"currentPrice\": 74500,\n            \"change\": 15.35,\n            \"dividends\": 3.15,\n            \"sector\": \"제조업\"\n        }\n    ]\n}"}],"_postman_id":"3c5d3033-a4e4-4266-b4ac-0a4e25acf661"},{"name":"관심종목 종목 추가","id":"fb1ad66c-a15c-4ae9-8f61-63dbf292ee1a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"POST","header":[],"urlObject":{"query":[],"variable":[]},"url":""},"response":[{"id":"8da0dede-990c-4b8d-8d0e-9e7d0af77603","name":"관심종목 종목 추가","originalRequest":{"method":"POST","header":[],"url":"{{url}}/api/\bwatchlist/"},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"fb1ad66c-a15c-4ae9-8f61-63dbf292ee1a"},{"name":"New Request","id":"44c2f49f-71fc-4b04-8c9e-61d16761dca8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{accessToken}}"}]},"isInherited":false},"method":"DELETE","header":[],"urlObject":{"query":[],"variable":[]},"url":""},"response":[{"id":"fb3aed6e-de6d-4514-8cb3-cf2576b77c3d","name":"관심종목 종목 삭제","originalRequest":{"method":"DELETE","header":[],"url":{"raw":"{{url}}/api/\bwatchlist/:watchlistItemId","host":["{{url}}"],"path":["api","\bwatchlist",":watchlistItemId"],"variable":[{"key":"watchlistItemId","value":""}]}},"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":null}],"_postman_id":"44c2f49f-71fc-4b04-8c9e-61d16761dca8"}],"id":"8b264c7c-2393-4c18-a898-f6f8adee2d0e","_postman_id":"8b264c7c-2393-4c18-a898-f6f8adee2d0e","description":""}]}