{"info":{"_postman_id":"ebe889ff-f2a9-425e-b3f1-e6cdc4422736","name":"Schedule API","description":"<html><head></head><body><p>Spring Boot 기반의 일정 및 댓글 관리 API로,<br>3계층 구조와 JPA를 활용하여 일정 CRUD 및 댓글 기능을 구현한 프로젝트입니다.</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"53912059","collectionId":"ebe889ff-f2a9-425e-b3f1-e6cdc4422736","publishedId":"2sBXitBn5S","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-04-10T09:15:13.000Z"},"item":[{"name":"일정생성","event":[{"listen":"test","script":{"id":"a71303b0-b2e4-4aa4-9346-475ecc3b9a95","exec":["pm.test(\"Successful POST request\", function () {","    pm.expect(pm.response.code).to.be.oneOf([200, 201]);","});",""],"type":"text/javascript","packages":{},"requests":{}}}],"id":"33dd5ce7-7647-49c8-bfda-c6c912809b1e","request":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\r\n    \"name\" : \"맛있는거\",\r\n    \"category\" : \"FOOD\",\r\n    \"price\" : \"5000000\",\r\n    \"stock\" : \"30\",\r\n    \"status\" : \"ON_SALE\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/api/products","description":"<p>새 일정을 생성하는 요청입니다.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p>Method: <code>POST</code></p>\n</li>\n<li><p>URL: <code>/schedules</code></p>\n</li>\n<li><p>Content-Type: <code>application/json</code></p>\n</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>title</code>: 일정 제목 (필수값 , 30자제한)</p>\n</li>\n<li><p><code>content</code>: 일정 내용 (필수값 , 200자 제한)</p>\n</li>\n<li><p>userID : 유저 ID 값</p>\n</li>\n<li><p><code>password</code>: 일정 수정/삭제 시 사용할 비밀번호 (필수값)</p>\n</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<p>성공 시 생성된 일정 정보를 반환합니다.</p>\n<p>응답 데이터에는 다음 정보가 포함됩니다.</p>\n<ul>\n<li><p><code>id</code>: 생성된 일정 ID</p>\n</li>\n<li><p><code>title</code>: 일정 제목</p>\n</li>\n<li><p><code>content</code>: 일정 내용</p>\n</li>\n<li><p><code>name</code>: 작성자 이름</p>\n</li>\n<li><p><code>createdAt</code>: 생성 시간</p>\n</li>\n<li><p><code>modifiedAt</code>: 수정 시간</p>\n</li>\n</ul>\n<h4 id=\"status-code\">Status Code</h4>\n<ul>\n<li><p><code>201 Created</code> : 일정 생성 성공</p>\n</li>\n<li><p><code>400 Bad Request</code> : 요청값이 올바르지 않은 경우</p>\n</li>\n</ul>\n<h4 id=\"description\">Description</h4>\n<p>사용자가 새로운 일정을 등록할 때 사용하는 API입니다.<br />등록된 일정은 이후 전체 조회, 단건 조회, 수정, 삭제 기능에서 사용할 수 있습니다.</p>\n","urlObject":{"protocol":"http","port":"8080","path":["api","products"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"2d1fa4d1-c5e1-4978-85db-e950e4cf15f9","name":"일정생성응답","originalRequest":{"method":"POST","header":[],"body":{"mode":"raw","raw":"{\n    \"title\": \"테스트\",\n\t\"content\":  \"내용\",\n    \"name\": \"이름\",\n    \"password\": \"비밀번호\"\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules"},"status":"Created","code":201,"_postman_previewlanguage":null,"header":[{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Fri, 10 Apr 2026 07:32:09 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 4,\n    \"title\": \"테스트\",\n    \"content\": \"내용\",\n    \"name\": \"이름\",\n    \"createdAt\": \"2026-04-10T16:32:09.4995708\",\n    \"modifiedAt\": \"2026-04-10T16:32:09.4995708\"\n}"}],"_postman_id":"33dd5ce7-7647-49c8-bfda-c6c912809b1e"},{"name":"일정조회","event":[{"listen":"test","script":{"id":"dc943937-2d61-4067-b5bb-0b8908054aba","exec":["pm.test(\"Status code is 200\", function () {","    pm.response.to.have.status(200);","});"],"type":"text/javascript","packages":{},"requests":{}}}],"id":"6b7f8988-c10e-44ff-b2f4-4c74fe8682b2","request":{"method":"GET","header":[],"url":"http://localhost:8080/schedules","description":"<h4 id=\"method\">Method</h4>\n<ul>\n<li><code>GET</code></li>\n</ul>\n<h4 id=\"url\">URL</h4>\n<ul>\n<li><code>/schedules</code></li>\n</ul>\n<h4 id=\"description\">Description</h4>\n<p>등록된 전체 일정을 조회하는 API입니다.<br />조회 결과는 <strong>수정일 기준 내림차순</strong>으로 정렬되어 반환됩니다.</p>\n<p>작성자 이름(<code>name</code>)을 기준으로 선택적으로 조회할 수 있습니다.</p>\n<ul>\n<li><p><code>name</code>이 없는 경우: 전체 일정 조회</p>\n</li>\n<li><p><code>name</code>이 있는 경우: 해당 작성자의 일정만 조회</p>\n</li>\n</ul>\n<p>StartFragment</p>\n<h4 id=\"query-parameters\">Query Parameters</h4>\n<ul>\n<li><code>name</code> (String, optional): 작성자 이름</li>\n</ul>\n<hr />\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li>없음</li>\n</ul>\n<hr />\n<h4 id=\"response\">Response</h4>\n<p>성공 시 일정 목록을 배열 형태로 반환합니다.</p>\n<p>각 일정에는 다음 정보가 포함됩니다:</p>\n<ul>\n<li><p><code>id</code>: 일정 ID</p>\n</li>\n<li><p><code>title</code>: 일정 제목</p>\n</li>\n<li><p><code>content</code>: 일정 내용</p>\n</li>\n<li><p><code>name</code>: 작성자 이름</p>\n</li>\n<li><p><code>createdAt</code>: 생성 시간</p>\n</li>\n<li><p><code>modifiedAt</code>: 수정 시간</p>\n</li>\n</ul>\n<hr />\n<h4 id=\"status-code\">Status Code</h4>\n<ul>\n<li><code>200 OK</code> : 조회 성공</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["schedules"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"324f5dfe-37cd-45ce-ba17-724b262bf208","name":"일정조회응답","originalRequest":{"method":"GET","header":[],"url":"http://localhost:8080/schedules"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Fri, 10 Apr 2026 08:00:43 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 4,\n        \"title\": \"테스트\",\n        \"content\": \"내용\",\n        \"name\": \"이름\",\n        \"createdAt\": \"2026-04-10T16:32:09.499571\",\n        \"modifiedAt\": \"2026-04-10T16:32:09.499571\"\n    },\n    {\n        \"id\": 3,\n        \"title\": \"새로운테스트\",\n        \"content\": \"새로운테스트입니다\",\n        \"name\": \"테스트\",\n        \"createdAt\": \"2026-04-10T16:01:27.546488\",\n        \"modifiedAt\": \"2026-04-10T16:01:27.546488\"\n    },\n    {\n        \"id\": 2,\n        \"title\": \"테스트2\",\n        \"content\": \"안녕하세요2\",\n        \"name\": \"텍스트입니다2\",\n        \"createdAt\": \"2026-04-10T16:00:20.235281\",\n        \"modifiedAt\": \"2026-04-10T16:00:20.235281\"\n    }\n]"},{"id":"cea06f55-ad84-4f0f-bc03-561c2baad46a","name":"쿼리스트링조회응답","originalRequest":{"method":"GET","header":[],"url":{"raw":"http://localhost:8080/schedules?name=(String) : 작성자이름","protocol":"http","host":["localhost"],"port":"8080","path":["schedules"],"query":[{"key":"name","value":"(String) : 작성자이름"}]}},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Fri, 10 Apr 2026 08:28:46 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 3,\n        \"title\": \"새로운테스트\",\n        \"content\": \"새로운테스트입니다\",\n        \"name\": \"테스트\",\n        \"createdAt\": \"2026-04-10T16:01:27.546488\",\n        \"modifiedAt\": \"2026-04-10T16:01:27.546488\"\n    }\n]"}],"_postman_id":"6b7f8988-c10e-44ff-b2f4-4c74fe8682b2"},{"name":"일정단건조회","id":"d4adff9f-59c9-4c34-bf59-e549e6ec32e3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/1","description":"<p>특정 일정의 상세 정보를 조회하는 API입니다.<br />해당 일정에 등록된 댓글 목록도 함께 반환합니다.</p>\n<h4 id=\"request\">Request</h4>\n<ul>\n<li><p>Method: <code>GET</code></p>\n</li>\n<li><p>URL: <code>/schedules/{scheduleId}</code></p>\n</li>\n<li><p>Path Variable</p>\n<ul>\n<li><code>scheduleId</code>: 조회할 일정 ID</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"description\">Description</h4>\n<p>해당 ID의 일정이 존재하면 일정 정보와 댓글 목록을 함께 반환합니다.</p>\n<h4 id=\"response\">Response</h4>\n<p>성공 시 일정 정보와 댓글 목록을 포함한 객체를 반환합니다.</p>\n<ul>\n<li><p>일정 정보</p>\n<ul>\n<li><p><code>id</code>: 일정 ID</p>\n</li>\n<li><p><code>title</code>: 일정 제목</p>\n</li>\n<li><p><code>content</code>: 일정 내용</p>\n</li>\n<li><p><code>name</code>: 작성자 이름</p>\n</li>\n<li><p><code>createdAt</code>: 생성 시간</p>\n</li>\n<li><p><code>modifiedAt</code>: 수정 시간</p>\n</li>\n</ul>\n</li>\n<li><p>댓글 목록 (<code>comments</code>)</p>\n<ul>\n<li><p><code>id</code>: 댓글 ID</p>\n</li>\n<li><p><code>writer</code>: 작성자 이름</p>\n</li>\n<li><p><code>content</code>: 댓글 내용</p>\n</li>\n</ul>\n</li>\n</ul>\n<h4 id=\"status-code\">Status Code</h4>\n<ul>\n<li><p><code>200 OK</code> : 조회 성공</p>\n</li>\n<li><p><code>404 Not Found</code> : 해당 일정이 존재하지 않는 경우</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["schedules","1"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"391cd3b2-b1d2-49b5-be37-096900d29d42","name":"일정단건조회(응답)","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/2"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Mon, 13 Apr 2026 01:45:00 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 1,\n    \"title\": \"테스트\",\n    \"content\": \"내용\",\n    \"name\": \"이름\",\n    \"createdAt\": \"2026-04-13T10:43:31.83744\",\n    \"modifiedAt\": \"2026-04-13T10:43:31.83744\",\n    \"comments\": [\n        {\n            \"id\": 1,\n            \"content\": \"댓글내용\",\n            \"name\": \"이름\",\n            \"createdAt\": \"2026-04-13T10:44:34.807621\",\n            \"modifiedAt\": \"2026-04-13T10:44:34.807621\",\n            \"scheduleId\": 1\n        },\n        {\n            \"id\": 2,\n            \"content\": \"댓글내용2\",\n            \"name\": \"이름2\",\n            \"createdAt\": \"2026-04-13T10:44:43.470743\",\n            \"modifiedAt\": \"2026-04-13T10:44:43.470743\",\n            \"scheduleId\": 1\n        },\n        {\n            \"id\": 3,\n            \"content\": \"댓글내용3\",\n            \"name\": \"이름3\",\n            \"createdAt\": \"2026-04-13T10:44:50.834905\",\n            \"modifiedAt\": \"2026-04-13T10:44:50.834905\",\n            \"scheduleId\": 1\n        }\n    ]\n}"},{"id":"802695d2-ccf1-4f60-81de-5e89733d905d","name":"일정단건조회","originalRequest":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/1"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Mon, 13 Apr 2026 01:49:07 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 1,\n    \"title\": \"테스트\",\n    \"content\": \"내용\",\n    \"name\": \"이름\",\n    \"createdAt\": \"2026-04-13T10:43:31.83744\",\n    \"modifiedAt\": \"2026-04-13T10:43:31.83744\",\n    \"comments\": [\n        {\n            \"id\": 1,\n            \"content\": \"댓글내용\",\n            \"name\": \"이름\",\n            \"createdAt\": \"2026-04-13T10:44:34.807621\",\n            \"modifiedAt\": \"2026-04-13T10:44:34.807621\",\n            \"scheduleId\": 1\n        },\n        {\n            \"id\": 2,\n            \"content\": \"댓글내용2\",\n            \"name\": \"이름2\",\n            \"createdAt\": \"2026-04-13T10:44:43.470743\",\n            \"modifiedAt\": \"2026-04-13T10:44:43.470743\",\n            \"scheduleId\": 1\n        },\n        {\n            \"id\": 3,\n            \"content\": \"댓글내용3\",\n            \"name\": \"이름3\",\n            \"createdAt\": \"2026-04-13T10:44:50.834905\",\n            \"modifiedAt\": \"2026-04-13T10:44:50.834905\",\n            \"scheduleId\": 1\n        }\n    ]\n}"}],"_postman_id":"d4adff9f-59c9-4c34-bf59-e549e6ec32e3"},{"name":"일정수정","id":"4cf6be95-4a8e-4c67-ae2a-67a0fd16d4ca","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"PATCH","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"테스트\",\r\n    \"content\": \"테스트3\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/1","description":"<p>특정 일정의 정보를 수정하는 API입니다.<br />일정 수정 시 비밀번호 검증이 필요합니다.</p>\n<hr />\n<h4 id=\"method\">Method</h4>\n<ul>\n<li><code>PATCH</code></li>\n</ul>\n<h4 id=\"url\">URL</h4>\n<ul>\n<li><code>/schedules/{scheduleId}</code></li>\n</ul>\n<h4 id=\"path-variable\">Path Variable</h4>\n<ul>\n<li><code>scheduleId</code> (Long): 수정할 일정 ID</li>\n</ul>\n<hr />\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><p><code>title</code> (String, optional): 수정할 일정 제목</p>\n</li>\n<li><p><code>content</code> (String, optional): 수정할 일정 내용</p>\n</li>\n<li><p><code>name</code> (String, optional): 작성자 이름</p>\n</li>\n<li><p><code>password</code> (String, required): 일정 수정/삭제 시 사용할 비밀번호</p>\n</li>\n</ul>\n<hr />\n<h4 id=\"description\">Description</h4>\n<ul>\n<li><p>요청한 <code>scheduleId</code>에 해당하는 일정이 존재해야 합니다.</p>\n</li>\n<li><p>비밀번호가 일치하는 경우에만 수정이 가능합니다.</p>\n</li>\n<li><p>제목, 내용, 작성자명은 선택적으로 수정할 수 있습니다.</p>\n</li>\n</ul>\n<hr />\n<h4 id=\"response\">Response</h4>\n<p>성공 시 수정된 일정 정보를 반환합니다.</p>\n<p>응답 데이터에는 다음 정보가 포함됩니다:</p>\n<ul>\n<li><p><code>id</code>: 일정 ID</p>\n</li>\n<li><p><code>title</code>: 일정 제목</p>\n</li>\n<li><p><code>content</code>: 일정 내용</p>\n</li>\n<li><p><code>name</code>: 작성자 이름</p>\n</li>\n<li><p><code>createdAt</code>: 생성 시간</p>\n</li>\n<li><p><code>modifiedAt</code>: 수정 시간</p>\n</li>\n</ul>\n<hr />\n<h4 id=\"status-code\">Status Code</h4>\n<ul>\n<li><p><code>200 OK</code> : 수정 성공</p>\n</li>\n<li><p><code>400 Bad Request</code> : 비밀번호가 일치하지 않는 경우</p>\n</li>\n<li><p><code>404 Not Found</code> : 해당 일정이 존재하지 않는 경우</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["schedules","1"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"6c33d02e-f4ea-41d6-9385-1365e77d43a1","name":"일정수정응답","originalRequest":{"method":"PUT","header":[],"body":{"mode":"raw","raw":"{\r\n    \"title\": \"테스트\",\r\n    \"name\": \"이름\",\r\n    \"password\": \"비밀번호\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/4"},"status":"OK","code":200,"_postman_previewlanguage":null,"header":[{"key":"Content-Type","value":"application/json"},{"key":"Transfer-Encoding","value":"chunked"},{"key":"Date","value":"Fri, 10 Apr 2026 08:23:27 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 4,\n    \"title\": \"테스트\",\n    \"content\": \"내용\",\n    \"name\": \"이름\",\n    \"modifiedAt\": \"2026-04-10T16:32:09.499571\"\n}"}],"_postman_id":"4cf6be95-4a8e-4c67-ae2a-67a0fd16d4ca"},{"name":"일정삭제","id":"227148f6-9455-4b1e-8570-2e4f34025c6d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/2","description":"<p>특정 일정을 삭제하는 API입니다.<br />일정 삭제 시 비밀번호 검증이 필요합니다.</p>\n<hr />\n<h4 id=\"method\">Method</h4>\n<ul>\n<li><code>DELETE</code></li>\n</ul>\n<h4 id=\"url\">URL</h4>\n<ul>\n<li><code>/schedules/{scheduleId}</code></li>\n</ul>\n<h4 id=\"path-variable\">Path Variable</h4>\n<ul>\n<li><code>scheduleId</code> (Long): 삭제할 일정 ID</li>\n</ul>\n<hr />\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>password</code> (String, required): 일정 수정/삭제 시 사용할 비밀번호</li>\n</ul>\n<hr />\n<h4 id=\"description\">Description</h4>\n<ul>\n<li><p>요청한 <code>scheduleId</code>에 해당하는 일정이 존재해야 합니다.</p>\n</li>\n<li><p>비밀번호가 일치하는 경우에만 삭제가 가능합니다.</p>\n</li>\n</ul>\n<hr />\n<h4 id=\"response\">Response</h4>\n<p>성공 시 응답 본문 없이 상태 코드만 반환합니다.</p>\n<hr />\n<h4 id=\"status-code\">Status Code</h4>\n<ul>\n<li><p><code>204 No Content</code> : 삭제 성공</p>\n</li>\n<li><p><code>400 Bad Request</code> : 비밀번호가 일치하지 않는 경우</p>\n</li>\n<li><p><code>404 Not Found</code> : 해당 일정이 존재하지 않는 경우</p>\n</li>\n</ul>\n","urlObject":{"protocol":"http","port":"8080","path":["schedules","2"],"host":["localhost"],"query":[],"variable":[]}},"response":[{"id":"205ad994-928f-4d24-a610-680a91c0dd58","name":"일정삭제응답","originalRequest":{"method":"DELETE","header":[],"body":{"mode":"raw","raw":"{\r\n    \"password\": \"비밀번호\"\r\n}","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/4"},"status":"No Content","code":204,"_postman_previewlanguage":null,"header":[{"key":"Date","value":"Fri, 10 Apr 2026 08:24:17 GMT"},{"key":"Keep-Alive","value":"timeout=60"},{"key":"Connection","value":"keep-alive"}],"cookie":[],"responseTime":null,"body":null}],"_postman_id":"227148f6-9455-4b1e-8570-2e4f34025c6d"},{"name":"일정단건조회","id":"95bd3d37-753c-41ca-9ece-6337a8bc92c8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[],"body":{"mode":"raw","raw":"","options":{"raw":{"language":"json"}}},"url":"http://localhost:8080/schedules/1","urlObject":{"protocol":"http","port":"8080","path":["schedules","1"],"host":["localhost"],"query":[],"variable":[]}},"response":[],"_postman_id":"95bd3d37-753c-41ca-9ece-6337a8bc92c8"}]}