요구사항 정의 및 API 설계
도메인
기능
기능 상세
우선순위
메서드
URI
담당자
비고
회원
* 필수 입력 정보 : 이름, 이메일, password, 닉네임, 성별, 생년월일
* 이메일, 닉네임은 중복 불가
* (옵션) : 회원가입 시 이메일 인증
상
POST
/register
프론트 단에서 비밀번호 검증 후 패스워드 전송
회원
password를 재인증하여 회원 탈퇴를 한다.
* 재인증 5회 실패 시 30분 간 불가
* 첫 인증 실패 후 30분이 지나면 횟수 초기화
중
DELETE
/users/{userId}
회원
password를 재인증하여 비밀번호를 변경한다.
* 재인증 5회 실패 시 30분 간 불가
* 첫 인증 실패 후 30분이 지나면 횟수 초기화
중
PUT
/users/{userId}/password
친구
회원 검색한 정보를 토대로 특정 회원에게 친구 신청을 한다.
* from친구 id, to친구 id
상
POST
/friends/ask
from id는 무조건 현재 로그인 한 유저의 id가 되겠네요!
post
동행
제목, 본문, 장소, 조건을 입력하여 글을 작성한다
* 장소 : 도시 단위 (서울, 부산, 광주)
* 장소 : 특정 여행 spot
* 조건 : 날짜(ex 12/25)
* 조건 : 성별(남, 여, 성별 무관)
* 조건 : 연령(10대, 20대, 30대, 40대, ... ,연령 무관) 다중 선택 가능
하
POST
/posts/connections
* 프론트 일정 이슈로 인한 우선순위 조정 : 상 → 하
10대 제외하기
post
동행
검색 조건에 맞는 동행 게시글 목록을 보여준다.
* 조건 : 도시, 성별, 연령, 시작일, 종료일, 검색 텍스트
* 게시글 목록 : 제목, 장소명, 날짜, 성별, 연령, 작성자 닉네임 프로필
* 페이징. 페이지당 10개
하
GET
/posts/connections
* 프론트 일정 이슈로 인한 우선순위 조정 : 상 → 하
uri를 어떤 식으로 작성해야 할까요?
/posts/connections/{connectionId}
/posts/connections/{Id}
/posts/connections/{connectionPostId}
/posts/{postId}/connections
/posts/{postId}/schedules
post
동행
요청한 게시글 id에 맞는 동행 게시글의 상세정보와 작성자 닉네임을 보여준다.
* 상세정보 : 제목, 본문, 장소(도시, 여행 spot), 조건(날짜, 성별, 연령)
하
GET
/posts/{postId}/connections
* 프론트 일정 이슈로 인한 우선순위 조정 : 상 → 하
post
동행
제목, 본문, 장소, 조건을 수정한다.
* 장소와 조건은 생성 조건과 동일하다
* PUT 방식으로 모든 정보를 담아서 보내야 한다
하
PUT
/posts/{postId}/connections
* 프론트 일정 이슈로 인한 우선순위 조정 : 중 → 하
동행
동행 게시글을 토대로 작성자에게 동행 신청을 한다
* 요청 : 동행 게시글 id, 작성자 id, 신청자 id
하
POST
/connections/ask
* 프론트 일정 이슈로 인한 우선순위 조정 : 상 → 하
동행
동행 게시글을 보고 동행 요청한 내역을 조회한다
* 요청한 게시글 정보(id), 요청한 게시글의 작성자(id), 요청 상태를 보여준다
하
GET
/connections/ask
* 프론트 일정 이슈로 인한 우선순위 조정 : 상 → 하
동행
동행 여부를 최종 결정 한다.
* 요청 : 채팅방 id, 수락/거절 여부
하
POST
/connections/reply
* 프론트 일정 이슈로 인한 우선순위 조정 : 상 → 하
동행
동행 게시글에 요청이 온 내역을 조회한다
* 요청 받은 게시글 정보(id), 요청한 사용자(id), 요청에 대한 처리 상태를 보여준다.
하
GET
/connections/reply
* 프론트 일정 이슈로 인한 우선순위 조정 : 상 → 하
post
일정
공유 게시글 목록을 조회한다.
* 10개 단위의 page로 조회한다.
* 기본 조회 정렬 기준은 최신순이다.
* 검색 조건을 넣을 수 있다.
- 제목/본문 : 문자열 검색
- 도시 단위의 검색 (서울, 부산, 인천)
- 지정된 테마로 검색
* 필터링 조건을 걸 수 있다.
- 조회수, 좋아요 수, 댓글 수, 최신 (오름차순, 내림차순)
상
GET
/posts/schdules
post
일정
제목, 본문을 작성, 공유할 일정을 선택하여 글을 작성한다.
* 자신의 일정 선택
- 자신의 일정에서 완료된 일정 중에서 하나를 선택한다.
* summary : 날짜별 장소명, 테마(전체 일정의 테마)
상
POST
/posts/schedules
post
일정
요청한 post id에 맞는 일정공유 post의 내용을 보여준다.
* 응답 데이터 : 제목, 본문, 시작일, 종료일, 여행 summary, 댓글 리스트, 조회수, 좋아요 수, 댓글 수, 작성자 id
* summary : 날짜별 장소명, 테마
상
GET
/posts/schedules/{schedulePostId}
post
일정
작성한 게시글을 수정한다.
* 자신의 게시글 선택 후 수정
- 자신의 게시글 중 하나를 선택한다.
- 전체 내용은 모두 변경 가능하고, 그 중 원하는 내용만 변경한다.
중
PUT
/posts/schedules/{schedulePostId}
post
일정
좋아요
회원이 좋아요를 누른 게시글 목록을 조회한다.
* 게시글 정보 : 게시글 id, 제목, 도시, 장소, 테마, 작성자 닉네임
중
GET
/posts/schedules/liked
post
댓글
* 게시글 생성자/읽는 사람 상관 없이 댓글을 자유롭게 추가(작성)
* 요청 데이터 : 댓글의 내용, 작성자 id
상
POST
/posts/schedules/{schedulePostId}/comments
post
댓글
게시글에 작성되어 있는 댓글 수정
* 자신이 작성한 댓글만 수정 가능
상
PUT
/posts/schedules/{schedulePostId}/comments/{commentId}
post
댓글
* 요청 데이터 : 댓글의 id, 게시글(일정 공유 post)의 id
* 자신이 작성한 댓글만 삭제
상
DELETE
/posts/schedules/{schedulePostId}/comments/{commentId}
post
댓글
중
POST
/posts/schedules/{schedulePostId}/comments/{commentId}/nestedComments
post
댓글
중
GET
/posts/schedules/{schedulePostId}/comments/{commentId}/nestedComments
post
댓글
중
PUT
/posts/schedules/{schedulePostId}/comments/{commentId}/nestedComments/{nestedCommentId}
post
댓글
중
DELETE
/posts/schedules/{schedulePostId}/comments/{commentId}/nestedComments/{nestedCommentId}
일정
여행 제목, 시작일, 종료 일, 테마를 입력하여 여행 일정을 생성한다.
여행 일정은 데일리 일정의 모음이다.
* 데이터
여행 일정: title, startDate, endDate, temaList, 여행지 정보 리스트
여행지 정보 : spotId, 날짜, 순서 (ex) 1, 2021-11-30, 1
응답 : 생성된 여행 id
상
POST
/schedules
일정
특정 여행 일정의 상세 정보를 조회한다.
* 상세 정보 : 여행 제목, 시작일, 종료일, 날짜별 여행지 리스트 (id, 제목, 위도, 경도), 멤버리스트, 테마 리스트
상
GET
/schedules/{scheduleId}
일정
여행의 참여 목록에서 특정 여행 멤버를 삭제한다.
* 여행의 생성자는 삭제할 수 없다.
* 멤버 id
중하
DELETE
/schedules/{scheduleId}/members/{memberId}
일정
여행 일정에 전체 체크리스트 또는 데일리 체크리스트를 추가한다.
* 여행 id, 날짜 , 체크리스트 제목
* 전체 체크스트의 날짜는 어떻게 하지
중
POST
/schedules/{scheduleId}/checklists
일정
특정 체크리스트를 체크/해제 한다.
* 체크리스트 id, 체크여부 flag
중
PATCH
/schedules/{scheduleId}/checklists/{checklistId}
일정
중하
PUT
/schedules/{scheduleId}/checklists/{checklistId}
일정
여행 일정에 투표를 추가한다.
* 여행 id, 투표 제목, 투표 내용 목록, 투표 수, 다중 선택 여부 flag
중
POST
/schedules/{schheduleId}/votings
일정
특정 투표의 상세 정보를 조회한다.
* 투표 제목, 투표 항목 리스트, 항목 별 투표한 사람의 id리스트
상
GET
/schedules/{scheduleId}/votings/{votingId}
일정
중하
PUT
/schedules/{scheduleId}/votings/{votingId}
일정
특정 투표 항목에 투표 행사를 한다.
* (투표 내용 id, 선택 여부 flag) 목록
중
PATCH
/schedules/{scheduleId}/votings/{votingId}/contents/{contentId}
장소
검색 키워드에 일치하는 장소 리스트를 조회한다.
* 입력 : 검색 키워드, 지도 레벨, 좌측 상단 위도,경도, 우측 하단 위도,경도
* 장소 리스트: [장소 id, 장소명, 위도, 경도 (데이터 미정)] 의 리스트
상
GET
/spots
장소
선택한 장소의 상세 정보를 조회한다.
* 선택한 장소 : 장소 id
* 상세 정보 : 장소명, 주소, 전화번호, 이미지, 설명, 위도, 경도 (데이터 미정)
상
GET
/spots/{spotId}
뱃지
특정 뱃지의 상세 정보를 조회한다.
* 상세 정보 : 뱃지id, 뱃지명, 뱃지 설명, 획득 조건, 이미지, 획득 여부 flag
하
GET
/badges/{badgeId}
스케쥴 생성자/참여자 권한