{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"a14baad4-3944-45c4-9599-7d91160dff4d","name":"Runnerbe API 명세서","description":"*   example의 목록에서 response을 보실 수 있습니다.\n*   모든 case를 반영하지 못했지만 가능한 case는 모두 담았고, 요청 횟수나 DB의 상황에 따라 예시가 적절치 않을 수 있습니다. (ex_ 닉네임 중복 처리)\n*   jwt를 입력하는 API은 jwt 검증에 대한 response가 존재하며, 이는 example에서 생략했습니다.  \n    ex_1) { isSuccess: false, code: 3000, message: \"JWT 토큰 검증 실패\"}\n*   빈 값 처리에 대한 validation이 존재하지만, example에서 생략했습니다.\n    \n\n### API 목록\n\n<!-- StartFragment -->\n\n| Index | Method | URI | Description |\n| --- | --- | --- | --- |\n| 1 | POST | /users/kakao-login | 카카오 소셜 로그인 |\n| 2 | POST | /users/naver-login | 네이버 소셜 로그인 |\n| 3 | POST | /v2/users | 회원가입 v2 |\n| 4 | PATCH | /users/:userId/name | (최초 1회만 가능) 닉네임 설정 API |\n| 5 | GET | /users/main/v2/:runningTag | 메인페이지 v2 |\n| 6 | POST | /users/:userId/bookmarks/:whetherAdd | 찜 등록 및 해제 |\n| 7 | GET | /users/:userId/bookmarks/v2 | 찜 목록 조회 v2 |\n| 8 | GET | /users/:userId/myPage/v2 | 마이페이지 v2 |\n| 9 | PATCH | /users/:userId/profileImage | 프로필 사진 변경 |\n| 10 | PATCH | /users/:userId/job | 직군 변경 |\n| 11 | POST | /users/apple-login | (임시)애플 소셜 로그인 |\n| 12 | DELETE | /users/:userId | 회원탈퇴 |\n| 13 | POST | /users/:userId/deviceToken | firebase token 업데이트 |\n| 14 | POST | /postings/:userId | 게시글 작성(러닝 모임 생성) |\n| 15 | GET | /postings/v2/:postId/:userId | 게시글 상세페이지 v2 |\n| 16 | POST | /postings/:postId/closing | 마감하기(작성자) |\n| 17 | PATCH | /postings/:postId | 게시글 수정 |\n| 18 | PATCH | /postings/:postId/drop | 게시글 삭제 |\n| 19 | POST | /postings/:postId/report/:userId | 신고하기 |\n| 20 | POST | /runnings/request/:postId | 참여신청하기 |\n| 21 | PATCH | /runnings/request/:postId/handling/:applicantId/:whetherAccept | 참여신청 처리_수락,거절 |\n| 22 | PATCH | /runnings/:postId/attendees/:userId | 출석하기 |\n|  |  |  |  |\n\n<!-- EndFragment -->\n\n### Response 확인\n\n![](https://user-images.githubusercontent.com/83508073/167109340-f2e42ec6-ad7a-49c0-9446-8886612dcea5.png)\n\n* * *\n\n* * *\n\n### 게시글 상태에 대하여\n\nStartFragment\n\n현재 게시글의 마감 상태는 \"whetherEnd\" 컬럼의 총 3가지(N, Y, D) 상태로 관리되고 있습니다.  \n이때 \"마감이 된 상태\"는 총 2가지(Y, D)로 나눠서 관리되는데, 이는 (1) 메인 화면의 \"마감 포함\" 기능, 즉 일정 시간 동안만 마감된 게시글을 노출시켜야 하고 (2) 게시글 데이터 삭제하지 않고 활동 기록을 남기기 위함입니다.\n\n<게시글 상태>  \n1\\. whetherEnd = \"N\"  \n 마감이 안 된 상태입니다. 따라서 해당 상태의 게시글은 접근 가능합니다.\n\n2\\. whetherEnd = \"Y\"  \n(1) 반장이 마감 버튼을 눌렀거나, (2) 러닝 모임 날짜(gatheringTime)의 다음 날 새벽에 자동으로 whetherEnd 가 Y로 변경됩니다.  \n이때, 메인 화면에서 '마감 포함' 기능은 게시글이 마감이 되었더라도, 일정 시간 사용자에게 노출시켜주기 위한 기능입니다.  \n따라서 메인 화면 API에서는 whetherEnd = Y인 게시글도 응답으로 전달됩니다.\n\n3\\. whetherEnd = \"D\"  \nwhetherEnd = Y인 게시글들은 일정 시간이 지나면 자동으로 \"D\"로 상태가 변경됩니다.  \nwhetherEnd = \"D\"인 게시글은 메인 화면 API에서 응답으로 전달되지 않습니다.  \n또한 러닝에 대한 기록(활동 기록, 마이페이지)에 대한 조회에서는 N과 Y 뿐만 아니라 D도 응답으로 전달되도록 만들었습니다.\n\n<요약>  \n1\\. API 별로 나타나는 whetherEnd의 상태  \n메인 화면 API : N, Y  \n찜 목록 조회 : N, Y  \n마이페이지 - 내가 쓴 글, 참여한 러닝 : N, Y, D  \n활동 기록 : N, Y, D\n\n2\\. whetherEnd = N일 때만 접근 가능하도록 하고, Y, D일때는 접근 불가능 하도록 API를 엮을 것\n\nEndFragment","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"16676621","team":2212931,"collectionId":"a14baad4-3944-45c4-9599-7d91160dff4d","publishedId":"UyxbrA2D","public":true,"publicUrl":"https://documenter-api.postman.tech/view/16676621/UyxbrA2D","privateUrl":"https://go.postman.co/documentation/16676621-a14baad4-3944-45c4-9599-7d91160dff4d","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.1","publishDate":"2022-05-05T13:04:37.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/c71652d33d98fc4d7ab8ceb6ece937519aafdfbb4be603f1c3a7a47fe9b83fe5","favicon":""},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/UyxbrA2D"}