{"info":{"_postman_id":"38ac350a-4377-4c47-a91d-3d659674c8ee","name":"schedule_upgrade","description":"<html><head></head><body><h1 id=\"api\">일정관리앱 API 명세서입니다.</h1>\n<p>StartFragment- version: 2.0.0<br>- Base URL: <a href=\"http://localhost:8080/\">http://localhost:8080</a></p>\n<p><em><strong>1.0.0 -&gt; 2.0.0</strong></em></p>\n<p>&lt; 주요 변경 사항&gt;</p>\n<p>- 회원가입과 로그인 기능이 생성되었습니다.<br>- 조회와 회원가입을 제외한 모든 활동은 로그인 이후 가능합니다.<br>- 수정과 삭제는 해당 글 또는 댓글의 작성자만 할 수 있습니다.</p>\n<p>&lt; 세부 변경 사항 &gt;<br>- 비밀번호가 더 안전하게 저장되어 보호됩니다.<br>- 일정과 댓글이 페이지별로 출력됩니다.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[{"content":"일정관리앱 API 명세서입니다.","slug":"api"}],"owner":"51113144","collectionId":"38ac350a-4377-4c47-a91d-3d659674c8ee","publishedId":"2sBXcBmMaA","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-02-12T15:16:40.000Z"},"item":[{"name":"user","item":[{"name":"signup","id":"c4147521-b826-44b2-9f57-0cf065f4b0c5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":" {\r\n    \"name\": \"지원이\",\r\n    \"email\" : \"asd@asd.com\",\r\n    \"pw\" : \"12345678\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/signup","description":"<p>회원가입을 진행합니다.</p>\n<p>유저이름은 최대 10글자 입니다.</p>\n<p>email 은 중복될 수 없으며, 이메일 형식을 따라야합니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["signup"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"62ec5f64-e9a7-4914-a988-059cd8dbac63","name":"signup - 성공","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"지원이\",\r\n    \"email\" : \"asd@asd.com\",\r\n    \"pw\" : \"12345678\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/signup"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"name\": \"지원이\",\n    \"email\": \"asd@asd.com\"\n}"},{"id":"d904ad6f-9721-4bbc-b695-8f2e6b7572bb","name":"signup - 필수값 누락","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"\",\r\n    \"email\" : \"asd@asd.com\",\r\n    \"pw\" : \"12345678\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/signup"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"C001\",\n    \"error\": \"BAD_REQUEST\",\n    \"message\": \"공백일 수 없습니다\",\n    \"path\": \"/signup\",\n    \"status\": 400,\n    \"timestamp\": \"2026-02-12T22:31:15.2850344\"\n}"},{"id":"f081545d-4078-4f8e-8ade-70f3e411083e","name":"signup - 중복된 이메일","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"다현이\",\r\n    \"email\" : \"asd@asd.com\",\r\n    \"pw\" : \"12345678\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/signup"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M001\",\n    \"error\": \"BAD_REQUEST\",\n    \"message\": \"중복된 이메일 입니다.\",\n    \"path\": \"/signup\",\n    \"status\": 400,\n    \"timestamp\": \"2026-02-12T21:49:35.3041343\"\n}"},{"id":"8bd36188-e62f-4d25-9c12-a7f5dd16b78a","name":"signup - 형식에 맞지않는 이메일","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"다현이\",\r\n    \"email\" : \"not email format\",\r\n    \"pw\" : \"12345678\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/signup"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"C001\",\n    \"error\": \"BAD_REQUEST\",\n    \"message\": \"이메일 형식과 일치해야합니다.\",\n    \"path\": \"/signup\",\n    \"status\": 400,\n    \"timestamp\": \"2026-02-12T22:20:04.8546399\"\n}"},{"id":"50797562-4fd7-4766-bdb8-eb5cb86f22e2","name":"signup - 너무 긴 이름","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\": \"다현이인지 지원이인지 기억이 잘 안 나는데 ... 그냥 아무거나로 등록시켜주세요\",\r\n    \"email\" : \"asd@asd.com\",\r\n    \"pw\" : \"12345678\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/signup"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"C001\",\n    \"error\": \"BAD_REQUEST\",\n    \"message\": \"크기가 0에서 10 사이여야 합니다\",\n    \"path\": \"/signup\",\n    \"status\": 400,\n    \"timestamp\": \"2026-02-12T23:17:08.6696025\"\n}"}],"_postman_id":"c4147521-b826-44b2-9f57-0cf065f4b0c5"},{"name":"login","id":"510f444f-18d1-4349-ab81-d4a07361ae51","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\" : \"asd@asd.com\",\r\n    \"pw\" : \"12345678\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/login","description":"<p>로그인을 진행합니다.</p>\n<p>이메일과 비밀번호를 정확하게 입력합니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["login"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"228976d2-13fb-4ce0-a702-c36cf8e48b38","name":"login - 성공","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\" : \"asd@asd.com\",\r\n    \"pw\" : \"12345678\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/login"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":null,"cookie":[],"responseTime":null,"body":"로그인에 성공했습니다."},{"id":"7a9ef02f-e317-49fa-9dc3-f107bdba45cd","name":"login - 틀린 비밀번호","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\" : \"asd@asd.com\",\r\n    \"pw\" : \"wrong pw\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/login"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"M002\",\n    \"error\": \"UNAUTHORIZED\",\n    \"message\": \"비밀번호가 일치하지 않습니다.\",\n    \"path\": \"/login\",\n    \"status\": 401,\n    \"timestamp\": \"2026-02-12T22:23:49.7243943\"\n}"},{"id":"effd607e-5f7b-4c22-95c8-bda08780ae86","name":"login - 존재하지 않는 이메일","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"email\" : \"wrongemail@asd.com\",\r\n    \"pw\" : \"12345678\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/login"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"M004\",\n    \"error\": \"NOT_FOUND\",\n    \"message\": \"존재하지 않는 사용자입니다.\",\n    \"path\": \"/login\",\n    \"status\": 404,\n    \"timestamp\": \"2026-02-12T22:24:39.6402982\"\n}"}],"_postman_id":"510f444f-18d1-4349-ab81-d4a07361ae51"},{"name":"get one user","id":"4ddb4832-769e-413b-acd6-ce160b06bbb9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8080/users/1","description":"<p>유저 단건을 조회합니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["users","1"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"c2beff35-e570-4b95-9386-83814a383ae0","name":"get one user - 성공","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8080/users/1"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"id\": 1,\n    \"name\": \"지원이\",\n    \"email\": \"asd@asd.com\"\n}"},{"id":"7cc54b48-5e28-4de1-b215-04e3e3fcef64","name":"get one user - 존재하지 않는 유저","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8080/users/99"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M004\",\n    \"error\": \"NOT_FOUND\",\n    \"message\": \"존재하지 않는 사용자입니다.\",\n    \"path\": \"/users/99\",\n    \"status\": 404,\n    \"timestamp\": \"2026-02-13T13:14:12.5672985\"\n}"}],"_postman_id":"4ddb4832-769e-413b-acd6-ce160b06bbb9"},{"name":"get users","id":"93d38d32-7f17-44b0-8395-42f543c78763","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8080/users","description":"<p>유저 목록을 조회합니다.</p>\n<p>한 페이지에 정보를 몇 개 조회할지, 몇 번째 페이지를 조회할지 결정할 수 있습니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["users"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"dc48bb35-adc6-4613-9fb9-b5ed9119eade","name":"get users - 성공: 파라미터 없음","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8080/users"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"[\n    {\n        \"id\": 1,\n        \"name\": \"아기타코\",\n        \"email\": \"tako@asd.com\"\n    },\n    {\n        \"id\": 2,\n        \"name\": \"지원이\",\n        \"email\": \"asd@asd.com\"\n    },\n    {\n        \"id\": 3,\n        \"name\": \"길중님\",\n        \"email\": \"giljooong@asd.com\"\n    },\n    {\n        \"id\": 4,\n        \"name\": \"호정님\",\n        \"email\": \"hoho@asd.com\"\n    },\n    {\n        \"id\": 5,\n        \"name\": \"예은양\",\n        \"email\": \"yeah@asd.com\"\n    }\n]"},{"id":"43b9d6bf-ade9-4c80-89f5-b7f71af7fa49","name":"get users - 성공: 파라미터 있음","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/users?page=1&size=5","protocol":"http","host":["localhost"],"port":"8080","path":["users"],"query":[{"key":"page","value":"1"},{"key":"size","value":"5"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"[\n    {\n        \"id\": 6,\n        \"name\": \"현지양\",\n        \"email\": \"happyji@asd.com\"\n    },\n    {\n        \"id\": 7,\n        \"name\": \"홍순구튜터님\",\n        \"email\": \"hong@asd.com\"\n    }\n]"},{"id":"5aa5cee3-95f6-4433-a130-fd4b596b38f8","name":"get users - 음수 파라미터","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/users?page=1&size=-1","protocol":"http","host":["localhost"],"port":"8080","path":["users"],"query":[{"key":"page","value":"1"},{"key":"size","value":"-1"}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"C002\",\n    \"error\": \"INTERNAL_SERVER_ERROR\",\n    \"message\": \"알 수 없는 에러가 발생했습니다.\",\n    \"path\": \"/users\",\n    \"status\": 500,\n    \"timestamp\": \"2026-02-12T23:35:37.3077831\"\n}"}],"_postman_id":"93d38d32-7f17-44b0-8395-42f543c78763"},{"name":"update user","id":"3a15a670-f0dc-4924-a5f2-35defb603fe4","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\" : \"복많이주는고양이\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/users/1","description":"<p>유저 수정을 진행합니다.</p>\n<p>현재 로그인 된 유저와 수정하려는 유저가 동일해야 진행할 수 있습니다.</p>\n<p>유저의 이름은 최대 10글자 입니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["users","1"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"0b68f319-bda3-4c98-a9c2-04b8f4f3ecdf","name":"update user - 성공","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\" : \"복많이주는고양이\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/users/1"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"name\": \"복많이주는고양이\"\n}"},{"id":"724cd964-9948-4973-8ac2-de6c780d8710","name":"update user - 유저 mismatch","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\" : \"나는 바보다\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/users/2"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M006\",\n    \"error\": \"FORBIDDEN\",\n    \"message\": \"유저 본인이 아닙니다.\",\n    \"path\": \"/users/2\",\n    \"status\": 403,\n    \"timestamp\": \"2026-02-12T23:04:20.2015493\"\n}"},{"id":"096280c3-1ff9-4159-aba7-dcee386aac74","name":"update user - 존재하지 않는 유저","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\" : \"나는 바보다\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/users/99"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M004\",\n    \"error\": \"NOT_FOUND\",\n    \"message\": \"존재하지 않는 사용자입니다.\",\n    \"path\": \"/users/99\",\n    \"status\": 404,\n    \"timestamp\": \"2026-02-12T23:05:12.1209926\"\n}"},{"id":"7adbfad5-610b-4187-a065-62109ff267f6","name":"update user - 너무 긴 이름","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\" : \"완전 대박 쩌는 고양이가 되겠습니다. 저는 이제 고양이 말을 하지 않는 고양이로.. 대선출마 예정이며.......\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/users/1"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"C001\",\n    \"error\": \"BAD_REQUEST\",\n    \"message\": \"크기가 0에서 10 사이여야 합니다\",\n    \"path\": \"/users/1\",\n    \"status\": 400,\n    \"timestamp\": \"2026-02-12T23:17:08.6696025\"\n}"}],"_postman_id":"3a15a670-f0dc-4924-a5f2-35defb603fe4"},{"name":"logout","id":"b9031d53-a165-40f5-8fba-6524e2ca136e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://localhost:8080/logout","description":"<p>로그아웃합니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["logout"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"0051f554-842d-4f2b-a742-2828474f7f34","name":"logout - 성공","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:8080/logout"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"로그아웃 되었습니다."},{"id":"32368014-3ce8-49cc-a34e-19d7f20be23e","name":"logout - 이미 로그아웃 된 상태","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:8080/logout"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M003\",\n    \"error\": \"UNAUTHORIZED\",\n    \"message\": \"로그인이 필요합니다.\",\n    \"path\": \"/logout\",\n    \"status\": 401,\n    \"timestamp\": \"2026-02-12T23:19:42.3538267\"\n}"}],"_postman_id":"b9031d53-a165-40f5-8fba-6524e2ca136e"},{"name":"delete user","id":"b01a61c5-bc3c-4b0e-b89b-0362d2f8f606","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://localhost:8080/users/1","description":"<p>유저를 삭제합니다.</p>\n<p>현재 로그인 된 유저와 삭제하려는 유저가 동일해야 진행할 수 있습니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["users","1"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"3013e752-c2fe-40c9-be38-558a810a7869","name":"delete user - 성공","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:8080/users/1"},"status":"No Content","code":204,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":""},{"id":"05f482ca-3b9d-47cf-8937-92c841d42ca3","name":"delete user - 로그인 이전 요청","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:8080/users/1"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M003\",\n    \"error\": \"UNAUTHORIZED\",\n    \"message\": \"로그인이 필요합니다.\",\n    \"path\": \"/users/1\",\n    \"status\": 401,\n    \"timestamp\": \"2026-02-12T23:20:59.2380686\"\n}"},{"id":"a9d083cc-9590-4ce0-ae91-ef8747dbc84a","name":"delete user - 존재하지 않는 유저","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:8080/users/99"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M004\",\n    \"error\": \"NOT_FOUND\",\n    \"message\": \"존재하지 않는 사용자입니다.\",\n    \"path\": \"/users/99\",\n    \"status\": 404,\n    \"timestamp\": \"2026-02-12T23:21:55.672635\"\n}"},{"id":"76bfc7bb-67b9-470e-aaf7-14a4edabce28","name":"delete user - 유저 mismatch","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:8080/users/2"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M006\",\n    \"error\": \"FORBIDDEN\",\n    \"message\": \"유저 본인이 아닙니다.\",\n    \"path\": \"/users/2\",\n    \"status\": 403,\n    \"timestamp\": \"2026-02-12T23:22:33.4112275\"\n}"}],"_postman_id":"b01a61c5-bc3c-4b0e-b89b-0362d2f8f606"}],"id":"34872f12-0819-425b-9536-fef58777cc02","description":"<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>데이터 명</strong></th>\n<th><strong>키</strong></th>\n<th><strong>값 (예시)</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>아이디</td>\n<td>id</td>\n<td>1</td>\n</tr>\n<tr>\n<td>유저 이름</td>\n<td>name</td>\n<td>“지원이”</td>\n</tr>\n<tr>\n<td>이메일</td>\n<td>email</td>\n<td>\"<a href=\"mailto:asd@asd.com\">asd@asd.com</a>\"</td>\n</tr>\n<tr>\n<td>비밀번호</td>\n<td>pw</td>\n<td>“12345678” 또는 \"Nyannng12\" 등 저장 시 hash 로 암호화 됨</td>\n</tr>\n<tr>\n<td>생성일</td>\n<td>createAt</td>\n<td>\"2026-02-12T11:25:59.0950446\"</td>\n</tr>\n<tr>\n<td>수정일</td>\n<td>modifiedAt</td>\n<td>\"2026-02-12T11:25:59.0950446\"</td>\n</tr>\n</tbody>\n</table>\n</div><p>유저 이름은 최대 10글자, email 은 중복될 수 없습니다.</p>\n","_postman_id":"34872f12-0819-425b-9536-fef58777cc02"},{"name":"schedule","item":[{"name":"create schedule","id":"748e7b9b-7ed2-4e7c-8f57-c05461aebf71","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"9시 코드카타\",\r\n    \"content\": \"밑으로 내려가서 다같이 화면공유 후 문제풀이\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules","description":"<p>일정을 생성합니다.</p>\n<p>로그인이 필수로 완료되어 있어야 합니다. 사용자 정보가 작성자로 저장됩니다.</p>\n<p>제목은 최대 30글자, 내용은 최대 200글자 입니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["schedules"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"e46ab33a-adb0-47a9-9bde-4862cc4ade0d","name":"create schedule - 성공","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"9시 코드카타\",\r\n    \"content\": \"밑으로 내려가서 다같이 화면공유 후 문제풀이\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 1,\n    \"user_name\": \"지원이\",\n    \"title\": \"9시 코드카타\",\n    \"content\": \"밑으로 내려가서 다같이 화면공유 후 문제풀이\",\n    \"createdAt\": \"2026-02-12T22:27:42.3291834\"\n}"},{"id":"3d8f38b4-e417-4d15-8d2a-9dc3391b493b","name":"create schedule - 너무 긴 제목","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"뭔진 몰라도 일단 30자 넘는 제목 뭔진 몰라도 일단 30자 넘는 제목 뭔진 몰라도 일단 30자 넘는 제목 뭔진 몰라도 일단 30자 넘는 제목\",\r\n    \"content\": \"밑으로 내려가서 다같이 화면공유 후 문제풀이\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[],"responseTime":null,"body":"{\n    \"code\": \"C001\",\n    \"error\": \"BAD_REQUEST\",\n    \"message\": \"크기가 0에서 30 사이여야 합니다\",\n    \"path\": \"/schedules\",\n    \"status\": 400,\n    \"timestamp\": \"2026-02-12T22:28:46.8941706\"\n}"},{"id":"663d48d3-a130-49a5-891f-cbd6acc2931b","name":"create schedule - 너무 긴 내용","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"9시 코드카타 문제풀이\",\r\n    \"content\": \"뭔진 몰라도 일단 200자는 넘는 글 내용뭔진 몰라도 일단 200자는 넘는 글 내용 뭔진 몰라도 일단 200자는 넘는 글 내용뭔진 몰라도 일단 200자는 넘는 글 내용 뭔진 몰라도 일단 200자는 넘는 글 내용뭔진 몰라도 일단 200자는 넘는 글 내용 뭔진 몰라도 일단 200자는 넘는 글 내용뭔진 몰라도 일단 200자는 넘는 글 내용 뭔진 몰라도 일단 200자는 넘는 글 내용뭔진 몰라도 일단 200자는 넘는 글 내용 뭔진 몰라도 일단 200자는 넘는 글 내용뭔진 몰라도 일단 200자는 넘는 글 내용뭔진 몰라도 일단 200자는 넘는 글 내용뭔진 몰라도 일단 200자는 넘는 글 내용\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"C001\",\n    \"error\": \"BAD_REQUEST\",\n    \"message\": \"크기가 0에서 200 사이여야 합니다\",\n    \"path\": \"/schedules\",\n    \"status\": 400,\n    \"timestamp\": \"2026-02-12T22:29:27.4688164\"\n}"},{"id":"84f5006b-e5cb-4469-88fd-d15c5e5c3e91","name":"create schedule - 로그인 이전 요청","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"9시 코드카타\",\r\n    \"content\": \"밑으로 내려가서 다같이 화면공유 후 문제풀이\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M003\",\n    \"error\": \"UNAUTHORIZED\",\n    \"message\": \"로그인이 필요합니다.\",\n    \"path\": \"/schedules\",\n    \"status\": 401,\n    \"timestamp\": \"2026-02-12T22:30:15.6331777\"\n}"},{"id":"410972c4-7687-4366-88f0-e089356e9b03","name":"create schedule - 필수값 누락","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"\",\r\n    \"content\": \"밑으로 내려가서 다같이 화면공유 후 문제풀이\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"C001\",\n    \"error\": \"BAD_REQUEST\",\n    \"message\": \"공백일 수 없습니다\",\n    \"path\": \"/schedules\",\n    \"status\": 400,\n    \"timestamp\": \"2026-02-12T22:31:15.2850344\"\n}"}],"_postman_id":"748e7b9b-7ed2-4e7c-8f57-c05461aebf71"},{"name":"get one schedule","id":"bdc46ca2-6dc4-4f68-b49c-8d21379ee9ea","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8080/schedules/1","description":"<p>일정 단건을 조회합니다.</p>\n<p>해당 일정에 달린 댓글들을 함께 조회합니다.</p>\n<p>로그인이 되어있지 않아도 기능합니다.</p>\n<p>한 페이지에 정보를 몇 개 조회할지, 몇 번째 페이지를 조회할지 결정할 수 있습니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["schedules","1"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"5bd49687-b92c-460d-93b1-55c6c2e59141","name":"get one schedule - 성공: 파라미터 없음","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8080/schedules/1"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"id\": 1,\n    \"user_name\": \"지원이\",\n    \"title\": \"9시 코드카타\",\n    \"content\": \"밑으로 내려가서 다같이 화면공유 후 문제풀이\",\n    \"commentList\": [\n        {\n            \"id\": 1,\n            \"user_name\": \"아기타코\",\n            \"content\": \"댓글 1\"\n        },\n        {\n            \"id\": 2,\n            \"user_name\": \"아기타코\",\n            \"content\": \"댓글 2\"\n        },\n        {\n            \"id\": 3,\n            \"user_name\": \"아기타코\",\n            \"content\": \"댓글 3\"\n        },\n        {\n            \"id\": 4,\n            \"user_name\": \"아기타코\",\n            \"content\": \"댓글 4\"\n        },\n        {\n            \"id\": 5,\n            \"user_name\": \"아기타코\",\n            \"content\": \"댓글 5\"\n        }\n    ],\n    \"createdAt\": \"2026-02-12T22:27:42.329183\",\n    \"modifiedAt\": \"2026-02-12T22:27:42.329183\"\n}"},{"id":"0fc7670a-c7bb-43ba-b6d7-0b0906d764d6","name":"get one schedule - 성공: 파라미터 있음","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/schedules/1?size=3&page=1","protocol":"http","host":["localhost"],"port":"8080","path":["schedules","1"],"query":[{"key":"size","value":"3"},{"key":"page","value":"1"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"id\": 1,\n    \"user_name\": \"지원이\",\n    \"title\": \"9시 코드카타\",\n    \"content\": \"밑으로 내려가서 다같이 화면공유 후 문제풀이\",\n    \"commentList\": [\n        {\n            \"id\": 4,\n            \"user_name\": \"아기타코\",\n            \"content\": \"댓글 4\"\n        },\n        {\n            \"id\": 5,\n            \"user_name\": \"아기타코\",\n            \"content\": \"댓글 5\"\n        },\n        {\n            \"id\": 6,\n            \"user_name\": \"아기타코\",\n            \"content\": \"댓글 6\"\n        }\n    ],\n    \"createdAt\": \"2026-02-12T22:27:42.329183\",\n    \"modifiedAt\": \"2026-02-12T22:27:42.329183\"\n}"},{"id":"ea9dad89-5aa8-4186-ac59-4f448476e3eb","name":"get one schedule - 존재하지 않는 일정","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8080/schedules/99"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"S001\",\n    \"error\": \"NOT_FOUND\",\n    \"message\": \"존재하지 않는 일정입니다.\",\n    \"path\": \"/schedules/99\",\n    \"status\": 404,\n    \"timestamp\": \"2026-02-12T22:36:12.8245466\"\n}"},{"id":"f1a2e278-6835-4bc2-9dc3-19ec221c7875","name":"get one schedule - 음수 파라미터","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/schedules/1?page=-2","protocol":"http","host":["localhost"],"port":"8080","path":["schedules","1"],"query":[{"key":"page","value":"-2"}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"C002\",\n    \"error\": \"INTERNAL_SERVER_ERROR\",\n    \"message\": \"알 수 없는 에러가 발생했습니다.\",\n    \"path\": \"/schedules/1\",\n    \"status\": 500,\n    \"timestamp\": \"2026-02-12T23:36:25.9875316\"\n}"}],"_postman_id":"bdc46ca2-6dc4-4f68-b49c-8d21379ee9ea"},{"name":"get schedules","id":"da66bdff-a4cf-46f1-b247-fa5689382d0b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8080/schedules","description":"<p>일정 목록을 조회합니다.</p>\n<p>해당 일정에 달린 댓글을 개수도 함께 조회합니다.</p>\n<p>로그인이 되어있지 않아도 기능합니다.</p>\n<p>한 페이지에 정보를 몇 개 조회할지, 몇 번째 페이지를 조회할지 결정할 수 있습니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["schedules"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"e8a03b54-e0d8-4b5b-ac77-c0955259ae04","name":"get schedules - 성공: 파라미터 없음","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8080/schedules"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"[\n    {\n        \"id\": 1,\n        \"title\": \"9시 코드카타\",\n        \"commentCount\": 11\n    },\n    {\n        \"id\": 2,\n        \"title\": \"맛있는 낮잠 자기\",\n        \"commentCount\": 0\n    }\n]"},{"id":"9cafb8ab-6c50-4dc3-985a-ec45e147fa05","name":"get schedules - 성공: 파라미터 있음","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/schedules?size=3","protocol":"http","host":["localhost"],"port":"8080","path":["schedules"],"query":[{"key":"size","value":"3"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"[\n    {\n        \"id\": 2,\n        \"title\": \"맛있는 낮잠 자기\",\n        \"commentCount\": 0\n    },\n    {\n        \"id\": 3,\n        \"title\": \"맛있는 낮잠 자기2\",\n        \"commentCount\": 0\n    },\n    {\n        \"id\": 4,\n        \"title\": \"맛있는 낮잠 자기5\",\n        \"commentCount\": 0\n    }\n]"},{"id":"42fe6ec1-c35f-44b0-8977-3446d88d472e","name":"get schedules - 음수 파라미터","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/schedules?size=-1","protocol":"http","host":["localhost"],"port":"8080","path":["schedules"],"query":[{"key":"size","value":"-1"}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"C002\",\n    \"error\": \"INTERNAL_SERVER_ERROR\",\n    \"message\": \"알 수 없는 에러가 발생했습니다.\",\n    \"path\": \"/schedules\",\n    \"status\": 500,\n    \"timestamp\": \"2026-02-12T23:37:20.5694527\"\n}"}],"_postman_id":"da66bdff-a4cf-46f1-b247-fa5689382d0b"},{"name":"update schedule","id":"879809f1-2ee7-4a95-8585-f6d6c78789ea","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"낮잠 자기 - _ - =\",\r\n    \"content\": \" 사실 낮잠같은거 필요없지롱 ~ ㅋ \"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/1","description":"<p>일정 단건을 수정합니다.</p>\n<p>현재 로그인 된 유저와 수정하려는 일정의 작성자가 동일해야 진행할 수 있습니다.</p>\n<p>제목은 최대 30글자, 내용은 최대 200글자 입니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["schedules","1"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"6030a91d-4dc0-4996-aae8-184a073800b7","name":"update schedule - 성공","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"낮잠 자기 - _ - =\",\r\n    \"content\": \"낮잠이 너무 너무 좋아요 ^ o ㅅ o ^ \"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/2"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"id\": 2,\n    \"user_name\": \"아기타코\",\n    \"title\": \"낮잠 자기 - _ - =\",\n    \"content\": \"낮잠이 너무 너무 좋아요 ^ o ㅅ o ^ \",\n    \"modifiedAt\": \"2026-02-12T22:37:35.733609\"\n}"},{"id":"8a529c00-2175-454d-b669-19e623fa8e4a","name":"update schedule - 너무 긴 제목","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"낮잠 자기 - _ - = 쿨........ 쿨....... ...쿨...\",\r\n    \"content\": \"낮잠이 너무 너무 좋아요 ^ o ㅅ o ^ \"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/2"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"C001\",\n    \"error\": \"BAD_REQUEST\",\n    \"message\": \"크기가 0에서 30 사이여야 합니다\",\n    \"path\": \"/schedules/2\",\n    \"status\": 400,\n    \"timestamp\": \"2026-02-12T22:47:41.9459708\"\n}"},{"id":"09eec0f6-7c04-4076-9279-f512115fd485","name":"update schedule - 너무 긴 내용","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"낮잠 자기 - _ - =\",\r\n    \"content\": \"낮잠이 너무 너무 좋아요 ^ o ㅅ o ^ 낮잠이 너무 너무 좋아요 ^ o ㅅ o ^ 낮잠이 너무 너무 좋아요 ^ o ㅅ o ^ 낮잠이 너무 너무 좋아요 ^ o ㅅ o ^ 낮잠이 너무 너무 좋아요 ^ o ㅅ o ^ 낮잠이 너무 너무 좋아요 ^ o ㅅ o ^ 낮잠이 너무 너무 좋아요 ^ o ㅅ o ^ 낮잠이 너무 너무 좋아요 ^ o ㅅ o ^ 낮잠이 너무 너무 좋아요 ^ o ㅅ o ^ 낮잠이 너무 너무 좋아요 ^ o ㅅ o ^ 낮잠이 너무 너무 좋아요 ^ o ㅅ o ^\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/2"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"C001\",\n    \"error\": \"BAD_REQUEST\",\n    \"message\": \"크기가 0에서 200 사이여야 합니다\",\n    \"path\": \"/schedules/2\",\n    \"status\": 400,\n    \"timestamp\": \"2026-02-12T22:49:30.3926223\"\n}"},{"id":"8ee484d9-1e6b-4375-ab65-32b95d942947","name":"update schedule - 존재하지 않는 일정","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"낮잠 자기 - _ - =\",\r\n    \"content\": \" 사실 낮잠같은거 필요없지롱 ~ ㅋ \"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/99"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"S001\",\n    \"error\": \"NOT_FOUND\",\n    \"message\": \"존재하지 않는 일정입니다.\",\n    \"path\": \"/schedules/99\",\n    \"status\": 404,\n    \"timestamp\": \"2026-02-12T22:50:52.6403676\"\n}"},{"id":"6381ca4a-8822-4505-97a3-4391cf0706d2","name":"update schedule - 작성자 mismatch","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"낮잠 자기 - _ - =\",\r\n    \"content\": \" 사실 낮잠같은거 필요없지롱 ~ ㅋ \"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/1"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M005\",\n    \"error\": \"FORBIDDEN\",\n    \"message\": \"작성자만 접근할 수 있습니다.\",\n    \"path\": \"/schedules/1\",\n    \"status\": 403,\n    \"timestamp\": \"2026-02-12T22:52:03.7403908\"\n}"},{"id":"61dc5fb5-2186-4b8d-9911-940903d5820c","name":"update schedule - 로그인 이전 요청","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"낮잠 자기 - _ - =\",\r\n    \"content\": \" 사실 낮잠같은거 필요없지롱 ~ ㅋ \"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/1"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M003\",\n    \"error\": \"UNAUTHORIZED\",\n    \"message\": \"로그인이 필요합니다.\",\n    \"path\": \"/schedules/1\",\n    \"status\": 401,\n    \"timestamp\": \"2026-02-12T22:53:13.9146496\"\n}"}],"_postman_id":"879809f1-2ee7-4a95-8585-f6d6c78789ea"},{"name":"delete schedule","id":"e7092f67-d95a-4cee-966e-d0e919059651","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"url":"http://localhost:8080/schedules/1","description":"<p>일정 단건을 삭제합니다.<br />현재 로그인 된 유저와 삭제하려는 일정의 작성자가 동일해야 진행할 수 있습니다.</p>\n<p>일정에 댓글이 달려있다면 삭제가 불가능합니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["schedules","1"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"953dc502-b41a-404b-b030-0942eba82114","name":"delete schedule - 성공","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:8080/schedules/1"},"status":"No Content","code":204,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":""},{"id":"f473789b-855e-48e4-8234-b324c2d20e28","name":"delete schedule - 로그인 이전 요청","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:8080/schedules/1"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M003\",\n    \"error\": \"UNAUTHORIZED\",\n    \"message\": \"로그인이 필요합니다.\",\n    \"path\": \"/schedules/1\",\n    \"status\": 401,\n    \"timestamp\": \"2026-02-12T22:54:05.9551828\"\n}"},{"id":"8c3af519-c676-4f45-a36e-2c38c08bdf2e","name":"delete schedule - 존재하지 않는 일정","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:8080/schedules/99"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"S001\",\n    \"error\": \"NOT_FOUND\",\n    \"message\": \"존재하지 않는 일정입니다.\",\n    \"path\": \"/schedules/99\",\n    \"status\": 404,\n    \"timestamp\": \"2026-02-12T22:54:54.7747807\"\n}"},{"id":"12bcdd9d-3dbd-46f5-bb07-35087e8fe95d","name":"delete schedule - 작성자 mismatch","originalRequest":{"method":"DELETE","header":[],"url":"http://localhost:8080/schedules/1"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M005\",\n    \"error\": \"FORBIDDEN\",\n    \"message\": \"작성자만 접근할 수 있습니다.\",\n    \"path\": \"/schedules/1\",\n    \"status\": 403,\n    \"timestamp\": \"2026-02-12T22:55:41.4006699\"\n}"}],"_postman_id":"e7092f67-d95a-4cee-966e-d0e919059651"}],"id":"fb2e4db6-42c3-402f-8943-5ded7bba7251","description":"<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>데이터 명</strong></th>\n<th><strong>키</strong></th>\n<th><strong>값 (예시)</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>아이디</td>\n<td>id</td>\n<td>1</td>\n</tr>\n<tr>\n<td>일정 제목</td>\n<td>title</td>\n<td>\"9시 코드카타\"</td>\n</tr>\n<tr>\n<td>일정 내용</td>\n<td>content</td>\n<td>\"아자아자 화이팅\"</td>\n</tr>\n<tr>\n<td>작성자</td>\n<td>User</td>\n<td>user Entity  <br />조회 시 user name 만 출력</td>\n</tr>\n<tr>\n<td>생성일</td>\n<td>createAt</td>\n<td>\"2026-02-12T11:25:12.8957601\"</td>\n</tr>\n<tr>\n<td>수정일</td>\n<td>modifiedAt</td>\n<td>\"2026-02-12T11:25:12.8957601\"</td>\n</tr>\n</tbody>\n</table>\n</div><p>제목은 최대 30글자, 내용은 최대 200글자 입니다.</p>\n","_postman_id":"fb2e4db6-42c3-402f-8943-5ded7bba7251"},{"name":"comment","item":[{"name":"create comment","id":"0b01270b-c881-463f-843f-4edc6d79d928","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n\t\"content\": \"코드카타 할만한가요?\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/1/comments","description":"<p>댓글을 생성합니다.<br />로그인이 필수로 완료되어 있어야 합니다. 사용자 정보가 작성자로 저장됩니다.</p>\n<p>존재하는 일정에만 댓글을 작성할 수 있습니다. 일정 정보가 저장됩니다.<br />내용은 최대 100글자 입니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["schedules","1","comments"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"bdd1157e-6fe4-45d4-92eb-66a76d952b35","name":"create comment - 성공","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n\t\"content\": \"코드카타 할만한가요?\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/1/comments"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"id\": 1,\n    \"user_name\": \"지원이\",\n    \"content\": \"코드카타 할만한가요?\",\n    \"createdAt\": \"2026-02-12T23:25:29.3634384\"\n}"},{"id":"d5794680-8ef4-4ec2-b68b-47f6bf736201","name":"create comment - 존재하지 않는 일정","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n\t\"content\": \"유령 글에 유령 댓글 쓰기~\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/99/comments"},"code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"S001\",\n    \"error\": \"NOT_FOUND\",\n    \"message\": \"존재하지 않는 일정입니다.\",\n    \"path\": \"/schedules/99/comments\",\n    \"status\": 404,\n    \"timestamp\": \"2026-02-12T23:26:34.0291365\"\n}"},{"id":"090bf645-0ab5-462c-9d1e-503df4dcee48","name":"create comment - 로그인 이전 요청","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n\t\"content\": \"배고파서 집중이 안 돼요~\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/1/comments"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M003\",\n    \"error\": \"UNAUTHORIZED\",\n    \"message\": \"로그인이 필요합니다.\",\n    \"path\": \"/schedules/1/comments\",\n    \"status\": 401,\n    \"timestamp\": \"2026-02-12T23:27:25.3390266\"\n}"},{"id":"5f878cfb-ee44-4ae1-95e7-5bc57a408fd9","name":"create comment - 필수값 누락","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n\t\"content\": \"\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/1/comments"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"C001\",\n    \"error\": \"BAD_REQUEST\",\n    \"message\": \"공백일 수 없습니다\",\n    \"path\": \"/schedules/1/comments\",\n    \"status\": 400,\n    \"timestamp\": \"2026-02-12T23:29:23.734482\"\n}"},{"id":"5437f9ee-991c-4d9a-b77e-50a92163fd22","name":"create comment - 너무 긴 내용","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n\t\"content\": \"야옹 야옹 야옹 야옹 냐냐냥 냐냐냥 야옹 야옹 야옹 냐냥 냐 야옹 야옹 야옹 야옹 냐냐냥 냐냐냥 야옹 야옹 야옹 냐냥 냐 야옹 야옹 야옹 야옹 냐냐냥 냐냐냥 야옹 야옹 야옹 냐냥 냐 야옹 야옹 야옹 야옹 냐냐냥 냐냐냥 야옹 야옹 야옹 냐냥 냐 \"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/1/comments"},"status":"Bad Request","code":400,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"C001\",\n    \"error\": \"BAD_REQUEST\",\n    \"message\": \"크기가 0에서 100 사이여야 합니다\",\n    \"path\": \"/schedules/1/comments\",\n    \"status\": 400,\n    \"timestamp\": \"2026-02-12T23:30:47.9807553\"\n}"}],"_postman_id":"0b01270b-c881-463f-843f-4edc6d79d928"},{"name":"get comments","id":"6443e9a7-a0fa-49d5-97f9-472637de53a2","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"url":"http://localhost:8080/schedules/1/comments","description":"<p>댓글 목록을 조회합니다.</p>\n<p>로그인이 되어있지 않아도 기능합니다.</p>\n<p>한 페이지에 정보를 몇 개 조회할지, 몇 번째 페이지를 조회할지 결정할 수 있습니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["schedules","1","comments"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"6c8e0308-2a7d-4655-a940-08c9534d5927","name":"get comments - 성공: 파라미터 없음","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8080/schedules/1/comments"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"[\n    {\n        \"id\": 1,\n        \"user_name\": \"지원이\",\n        \"content\": \"코드카타 할만한가요?\"\n    },\n    {\n        \"id\": 2,\n        \"user_name\": \"아기타코\",\n        \"content\": \"냥 냐냥 냐\"\n    },\n    {\n        \"id\": 3,\n        \"user_name\": \"아기타코\",\n        \"content\": \"왜 끝이 안 나는지 모르겠다냥\"\n    },\n    {\n        \"id\": 4,\n        \"user_name\": \"아기타코\",\n        \"content\": \"니만 모르겠냐고.......... 나도몰라\"\n    },\n    {\n        \"id\": 5,\n        \"user_name\": \"지원이\",\n        \"content\": \"님 살고싶은 만큼 야옹 해봐요\"\n    }\n]"},{"id":"0d53cff4-2805-4eac-95d0-177d16c3a0dc","name":"get comments - 성공: 파라미터 있음","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/schedules/1/comments?size=2&page=2","protocol":"http","host":["localhost"],"port":"8080","path":["schedules","1","comments"],"query":[{"key":"size","value":"2"},{"key":"page","value":"2"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"[\n    {\n        \"id\": 5,\n        \"user_name\": \"지원이\",\n        \"content\": \"님 살고싶은 만큼 야옹 해봐요\"\n    },\n    {\n        \"id\": 6,\n        \"user_name\": \"아기타코\",\n        \"content\": \"야옹 야옹 야옹 야옹 냐냐냥 냐냐냥 야옹 야옹 야옹 냐냥 냐 야옹 야옹 야옹 \"\n    }\n]"},{"id":"af83933d-906d-4183-b60b-5ff495b026bd","name":"get comments - 존재하지 않는 일정","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8080/schedules/99/comments"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"S001\",\n    \"error\": \"NOT_FOUND\",\n    \"message\": \"존재하지 않는 일정입니다.\",\n    \"path\": \"/schedules/99/comments\",\n    \"status\": 404,\n    \"timestamp\": \"2026-02-12T23:33:51.5686402\"\n}"},{"id":"0e849c0d-67f4-4b6f-8d82-32ca43c137df","name":"get comments - 음수 파라미터","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/schedules/1/comments?size=5&page=-1","protocol":"http","host":["localhost"],"port":"8080","path":["schedules","1","comments"],"query":[{"key":"size","value":"5"},{"key":"page","value":"-1"}]}},"status":"Internal Server Error","code":500,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"C002\",\n    \"error\": \"INTERNAL_SERVER_ERROR\",\n    \"message\": \"알 수 없는 에러가 발생했습니다.\",\n    \"path\": \"/schedules/1/comments\",\n    \"status\": 500,\n    \"timestamp\": \"2026-02-12T23:34:33.3959626\"\n}"}],"_postman_id":"6443e9a7-a0fa-49d5-97f9-472637de53a2"},{"name":"delete comment","id":"80d8fe8a-b703-4d36-8fb8-235cefc26b1e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:8080/schedules/1/comments/1","description":"<p>댓글 단건을 삭제합니다.</p>\n<p>현재 로그인 된 유저와 삭제하려는 댓글의 작성자가 동일해야 진행할 수 있습니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["schedules","1","comments","1"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"7571305a-d71b-4a97-98bf-b9ca3c58bdc8","name":"delete comment - 성공","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:8080/schedules/1/comments/1"},"status":"No Content","code":204,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":""},{"id":"eb18ad5d-2f71-4156-a4ca-c01496682f0f","name":"delete comment - 존재하지 않는 일정","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:8080/schedules/99/comments/1"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"S001\",\n    \"error\": \"NOT_FOUND\",\n    \"message\": \"존재하지 않는 일정입니다.\",\n    \"path\": \"/schedules/99/comments/1\",\n    \"status\": 404,\n    \"timestamp\": \"2026-02-12T23:38:03.3020759\"\n}"},{"id":"6dfa4732-e78a-401b-a9ca-8f74098a0487","name":"delete comment - 존재하지 않는 댓글","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:8080/schedules/1/comments/99"},"status":"Not Found","code":404,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"S002\",\n    \"error\": \"NOT_FOUND\",\n    \"message\": \"존재하지 않는 댓글입니다.\",\n    \"path\": \"/schedules/1/comments/99\",\n    \"status\": 404,\n    \"timestamp\": \"2026-02-12T23:39:09.1405738\"\n}"},{"id":"c6befdee-c8d6-44a7-966e-9d614a4f3a80","name":"delete comment - 로그인 이전 요청","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:8080/schedules/1/comments/1"},"status":"Unauthorized","code":401,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M003\",\n    \"error\": \"UNAUTHORIZED\",\n    \"message\": \"로그인이 필요합니다.\",\n    \"path\": \"/schedules/1/comments/1\",\n    \"status\": 401,\n    \"timestamp\": \"2026-02-12T23:39:48.0547356\"\n}"},{"id":"a3b517dd-d5df-4742-a6ce-71046a64863c","name":"delete comment - 작성자 mismatch","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":""},"url":"http://localhost:8080/schedules/1/comments/2"},"status":"Forbidden","code":403,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json","description":"","type":"text"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"code\": \"M005\",\n    \"error\": \"FORBIDDEN\",\n    \"message\": \"작성자만 접근할 수 있습니다.\",\n    \"path\": \"/schedules/1/comments/2\",\n    \"status\": 403,\n    \"timestamp\": \"2026-02-12T23:41:32.8591434\"\n}"}],"_postman_id":"80d8fe8a-b703-4d36-8fb8-235cefc26b1e"}],"id":"667e4afc-5eea-4a54-a75a-82bd0db6e0da","description":"<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th><strong>데이터 명</strong></th>\n<th><strong>키</strong></th>\n<th><strong>값 (예시)</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>아이디</td>\n<td>id</td>\n<td>1</td>\n</tr>\n<tr>\n<td>댓글 내용</td>\n<td>content</td>\n<td>“엄마 10시에 끝나구 츄르 줘”</td>\n</tr>\n<tr>\n<td>일정</td>\n<td>Schedule</td>\n<td>schedule Entity / 출력 없음</td>\n</tr>\n<tr>\n<td>작성자</td>\n<td>User</td>\n<td>user Entity / 출력은 user의 name 만 함</td>\n</tr>\n<tr>\n<td>생성일</td>\n<td>createAt</td>\n<td>\"2026-02-12T11:25:59.0950446\"</td>\n</tr>\n<tr>\n<td>수정일</td>\n<td>modifiedAt</td>\n<td>\"2026-02-12T11:25:59.0950446\"</td>\n</tr>\n</tbody>\n</table>\n</div><p>댓글 내용은 최대 100글자 입니다.</p>\n<p>일정과 작성자가 없으면 댓글을 작성할 수 없습니다.</p>\n","_postman_id":"667e4afc-5eea-4a54-a75a-82bd0db6e0da"}]}