HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🧚
[1기]최종 프로젝트 데브코스
/
🐳
[팀11] 모디
/
API 데이터 셋 (참고 금지)

API 데이터 셋 (참고 금지)

생성일
Nov 29, 2021 11:51 AM
태그
속성

소셜 계정으로 회원가입 할 수 있다 (닉네임은 백에서 랜덤)

네이버 로그인 API 수집 항목
notion image
소셜 회원가입
// 요청
// 응답 Status Code : 200 { "token" : "sdfsdf.sdfsdf.sdf", "user" : { "userId" : 1, "username" : "닉네임", "birthdate" : "1997-04-13", } } // 나이 때문에 회원가입 실패 Status Code : 400 { "error" : "AGE_VALIDATION_ERROR" }

소셜 로그인 할 수 있다

소셜 로그인
// 요청
// 응답 Status Code : 200 { "token" : "sdfsdf.sdfsdf.sdf", "user" : { "userId" : 1, "username" : "유저이름", "birthdate" : "1997-04-13", } }
사용자 정보

메인 페이지에서 매칭 현황과 OTT 목록을 볼 수 있다

캐루셀에 대한 요청과 응답
// 요청 { }
// 응답 { "matchingCarosel" : [ // 매칭 대기중인 것만, 대기인원 순으로 "matching" : { "ottId" : 1, "ottName" : "넷플릭스", "waiting" : 10, // 대기인원 "MonthlyFee" : 2800 }, "matching" : { "ottId" : 1, "ottName" : "넷플릭스", "waiting" : 10, // 대기인원 "MonthlyFee" : 2800 }, "matching" : { "ottId" : 1, "ottName" : "넷플릭스", "waiting" : 10, // 대기인원 "MonthlyFee" : 2800 } ] }
전체 서비스 보기에 대한 요청과 응답
// 요청
// 응답 { "ottServices" : [ "ott" : { "ottId" : 1, "ottName" : "넷플릭스" }, "ott" : { "ottId" : 2, "ottName" : "디즈니 플러스" }, "ott" : { "ottId" : 3, "ottName" : "웨이브" }, "ott" : { "ottId" : 4, "ottName" : "넷플릭스" } ] }

네비게이션바를 통해 OTT 목록을 볼 수 있다

// 요청 { }
// 응답 { "ottServices" : [ "ott" : { "ottId" : 1, "ottName" : "넷플릭스" }, "ott" : { "ottId" : 1, "ottName" : "넷플릭스" }, "ott" : { "ottId" : 1, "ottName" : "넷플릭스" }, "ott" : { "ottId" : 1, "ottName" : "넷플릭스" } ] }

파티 목록을 볼 수 있다

// 요청 GET /parties/?ottId={{ottId}}&size=5&lastPartyId=1
// 응답 { "ottId": String, "ottName": String, "parties": [ "party" : { "partyId": Number, "grade": String, "price": Number "totalMember": Number, "currentMember" : Number, "startDate": String, "startsIn" : Number, "endDate": String, "mustFilled": Boolean, }, "party" : { "partyId": Number, "grade": String, "price": Number "totalMember": Number, "currentMember" : Number, "startDate": String, "endDate": String, "mustFilled": Boolean, }, "party" : { "partyId": Number, "grade": String, "price": Number "totalMember": Number, "currentMember" : Number, "startDate": String, "startsIn" : Number, "endDate": String, "mustFilled": Boolean, }, "party" : { "partyId": Number, "grade": String, "price": Number "totalMember": Number, "currentMember" : Number, "startDate": String, "startsIn" : Number, "endDate": String, "mustFilled": Boolean, }, "party" : { "partyId": Number, "grade": String, "price": Number "totalMember": Number, "currentMember" : Number, "startDate": String, "startsIn" : Number, "endDate": String, "mustFilled": Boolean, } ] }
 

파티목록에서 파티 상세 정보를 확인할 수 있다

// 요청 GET .../parties/{partyId}
// 응답 { "partyId": Number, "grade": String, "monthlyFee": Number, "totalFee" : Number, "totalMember": Number, "currentMember" : Number, "startDate": String, "startsIn" : Number, "endDate": String, "mustFilled": Boolean, "Members": [ "Member" : { "userId" : 1, "username" : "닉네임", "isLeader" : true } ], "rules": [ "rule" : { "ruleId" : 1, "ruleName" : "1인 1회선" }, "rule" : { "ruleId" : 1, "ruleName" : "1인 1회선" } ] }

파티에 참여할 수 있다

파티 참여하기 버튼
// 요청 GET users/{userId}/points // 헤더 Authorization : 토큰
// 응답 { "currentPoint": Number // 현재 회원이 보유한 포인트 }
파티에 참여하기
// 요청 POST /parties/{partyId}/join { "totalFee" : 2500 }
// 응답 // 성공 200 OK // 실패 400 Bad Request
 

마이페이지를 확인할 수 있다

사용자 정보를 확인할 수 있다
// 요청 GET /users/{userId} Authroization :
// 응답 "user" : { "userId" 1, "username" : "닉네임", "points" : 2000, }
참여중인 파티 목록을 확인할 수 있다
// 요청 GET /users/{userId}/parties?size=5&partyId=1&status=ON_GOING 정렬은 파티 참여일 기준
// 응답 { "onGoingParties" : [ "party" : { "ottId" : 1, "ottName" : "넷플릭스", "partyId": Number, "startDate": String, "endDate": String, "isLeader": true, "monthlyDeposit" : 10000 }, "party" : { "ottId" : 1, "ottName" : "넷플릭스", "partyId": Number, "startDate": String, "endDate": String, "isLeader": false, "monthlyFee" : 2500, "totalFee" : 10000 } ], }
// 요청 GET /users/{userId}/parties?size=5&partyId=1&status= 정렬은 파티 참여일 기준
{ "finishedParties" : [ "party" : { "ottId" : 1, "ottName" : "넷플릭스", "partyId": Number, "startDate": String, "endDate": String, "isLeader": true, "monthlyDeposit" : 10000 }, "party" : { "ottId" : 1, "ottName" : "넷플릭스", "partyId": Number, "startDate": String, "endDate": String, "isLeader": false, "monthlyFee" : 2500, "totalFee" : 10000 } ] }
// 요청 GET /users/{userId}/parties?size=5&partyId=1&status= 정렬은 파티 참여일 기준
{ "recruitingParties" : [ "party" : { "ottId" : 1, "ottName" : "넷플릭스", "partyId": Number, "startDate": String, "endDate": String, "isLeader": true, "monthlyDeposit" : 10000 }, "party" : { "ottId" : 1, "ottName" : "넷플릭스", "partyId": Number, "startDate": String, "endDate": String, "isLeader": false, "monthlyFee" : 2500, "totalFee" : 10000 } ] }

참여한 파티 상세 정보를 확인할 수 있다

참여 파티 상세 정보
GET /users/{userId}/parties/{partyId}
// 응답 // 파티원 200 OK { "ottId" : 1, "ottName" : "넷플릭스", "partyId": Number, "grade": String, "monthlyFee": Number, "totalFee" : Number, "totalMember": Number, "currentMember" : Number, "startDate": String, "startsIn" : Number, "endDate": String, "mustFilled": Boolean, "members": [ "member" : { "userId" : 1, "username" : "닉네임", "isLeader" : true } ], "rules": [ "rule" : { "ruleId" : 1, "ruleName" : "1인 1회선" }, "rule" : { "ruleId" : 1, "ruleName" : "1인 1회선" } ] } // 파티장 200 OK { "ottId" : 1, "ottName" : "넷플릭스", "partyId": Number, "grade": String, "monthlyDeposit": Number, "totalMember": Number, "currentMember" : Number, "startDate": String "endDate": String, "mustFilled": Boolean, "members": [ "member" : { "userId" : 1, "username" : "닉네임", "isLeader" : true } ], "rules": [ "rule" : { "ruleId" : 1, "ruleName" : "1인 1회선" }, "rule" : { "ruleId" : 1, "ruleName" : "1인 1회선" } ] }
공유 계정
// 요청 GET parties/{partyId}/sharedAccount Authorization
// 응답 { "sharedId" : "modi@gmail.com", "sharedPassword" : "modimodi123" }

파티를 만들 수 있다

// 요청 POST /parties { "ottId" : 1, "ottName" : "넷플릭스", "grade": String, "monthlyDeposit": Number, "totalMember": Number, "startDate": String, "endDate": String, "mustFilled": Boolean, "rules": [ "rule" : { "ruleId" : 1, "ruleName" : "1인 1회선" }, "rule" : { "ruleId" : 1, "ruleName" : "1인 1회선" } ], "sharedId" : "modi@gmail.com", "sharedPassword" : "modimodi123" }
// 응답 200 OK { "partyId" : 1 }
 

포인트를 충전할 수 있다

// 요청 POST /points/add { "points" : 100000 }
// 응답 200 { "currentPoints": 1200000000 }

로그아웃 할 수 있다

  • 프론트에서 토큰 지우면 끝!
    • 네이버 API를 통해 로그인할 경우 네이버로만 로그아웃 가능하다고 합니다

유저 정보를 가져올 수 있다

 
// 요청 GET /users/{userId} Authroization :
// 응답 "user" : { "userId" 1, "username" : "닉네임", "points" : 2000, }
 

OTT 정보를 가져올 수 있다

// 요청 GET /otts/{ottId}
// 응답 { "ottId" : 1, "ottName" : "넷플릭스", "subscriptionFee" : 10000, "maxMember" : 4, "grade" : "프리미엄" }
 
 
 

메인(도르)

OTT 목록

GET

Response

OTTServiceSummary[]

OTTServiceSummary

{ "_id": String, // service의 고유 Id "name": String, // seervice의 이름(Id랑 둘 다 필요할까??) "recruitingParties": Party[], // 파티 수만 필요한데 전부 받을 필요 있을까? "image": String // 로고 이미지 URL }
서비스 파티목록(도르)

OTT별 파티 목록

{ "_id": String, "name": String, "image": String, "recruitingParties": Party[], // 무한스크롤이나 더보기 버튼 선택시 데이터 5개 추가 "mustFilled": Boolean, // 반드시 모집되어야 하는가 }

Party

{ "_id": String, "grade": String, "price": Number "countRequiredMember": Number, "startDate": Date | String | Number, "endDate": Date | String | Number, "Member": User[], "rules": String[] }

Member

{ }
파티만들기(젠)

파티 만들기

POST _party_create

Request Header

{ "Authorization": // 어떻게 할까요? }

Request Body

{ "service": String, // OTT 서비스 종류 "startDate": Date | String | Number, // 파티 시작 일자 "endDate": Date | String | Number, // 파티 종료 일자 "rules": String[], // 파티 규칙 "memberQuantity": Number, // 파티원 수 "mustFilled": Boolean, // 파티인원이 다 모집되지 않아도 파티를 시작할지 여부 "sharedAccount": { "sharedId": String, // OTT서비스 ID "sharedPw": String, // OTT서비스 PW }, "userId": String, // 파티를 만든 회원의 id }

Response

Party[]
파티참여하기(젠)

파티 참여하기

GET

Response

Party[] { "currentPoint": Number, // 현재 회원이 보유한 포인트 }

POST _join_create

Request Header

{ "Authorization": // 어떻게 할까요? }

Request Body

{ "_id": String, // 파티 고유 id "userId": String, // 파티에 참여하고자 하는 회원 id }

Response

Party[]
로그인(낸시)
마이페이지(코비)

사용자 정보

{ "_id": String, // 사용자 고유 아이디 "parties": Party[], // 사용자 파티 목록 "currentPoint": Number, // 보유 포인트 }

Party

{ "_id": String, // 파티 고유 id "service": String // ott 서비스 이름 "grade": String, // ott 서비스 플랜명 "price": Number // ott 서비스 가격 "startDate": Date | String | Number, // 파티 시작일 "endDate": Date | String | Number, // 파티 종료일 "leader": Boolean // 파티장 여부 }
마이 파티 상세(코비)

Party

{ "_id": String, // 파티 고유 id "grade": String, // ott 서비스 플랜명 "price": Number, // ott 서비스 가격 "countRequiredMember": Number, // "startDate": Date | String | Number, "endDate": Date | String | Number, "Member": User[], "rules": String[], }

공유계정

{ "_id": String, // 파티 고유 id "sharedAccount": { "sharedId": String, "sharedPw": String, } }
포인트 충전