Party API 문서 - PartyGwam/api GitHub Wiki
기능: 파티 생성, 파티 전체 조회, 파티 상세 조회, 파티 수정, 파티 삭제
- GET
/parties/
- GET
/parties/created/
- GET
/parties/joined/
- POST
/parties/
- GET
/parties/<slug>/
- PUT
/parties/<slug>/
- DELETE
/parties/<slug>
상기 URL로 보내는 모든 요청은 인증 헤더(Authorization
) 필요!
파티 목록 전체 조회
파티 전체 조회에 성공하면 다음의 데이터와 함께 200 응답을 리턴.
- 기본 페이지 단위는 20
- 만약 데이터가 20개 이상일 시 다음 페이지 활성화
{
"success": true,
"result": {
"count": 2,
"data": [
{
"id": 1,
"party_owner": {
"username": "샘플 유저 1",
"profile_picture": "/assets/images/image_1513232511950_750.jpg"
},
"title": "배틀그라운드 스쿼드",
"slug": "샘플-유저-1-배틀그라운드-스쿼드",
"place": "건대 비원 피씨방",
"description": "배그 치킨지향 스쿼드 가즈아! 포친키 다 닦는 사람만 오길 바람.",
"start_time": "2018-07-07T21:00:00+09:00",
"current_people": 2,
"max_people": 4,
"created_at": "2018-06-27T15:15:33.809148+09:00",
"last_updated": "2018-07-04T13:54:41.574940+09:00",
"is_new": true,
"will_start_soon": false,
"has_started": false,
"can_join": true
},
{
"id": 4,
"party_owner": {
"username": "샘플 유저 1",
"profile_picture": "/assets/images/image_1513232511950_750.jpg"
},
"title": "샘플 파티 제목",
"slug": "샘플-유저-1-샘플-파티-제목",
"place": "한국의 어딘가",
"description": "설명은 TMI로 가득찬 공간입니다. 아 술먹고싶다.",
"start_time": "2018-08-27T16:00:00+09:00",
"current_people": 1,
"max_people": 13,
"created_at": "2018-06-28T11:36:48.516065+09:00",
"last_updated": "2018-07-02T20:11:53.116826+09:00",
"is_new": true,
"will_start_soon": false,
"has_started": false,
"can_join": true
}
],
"paging": {
"previous": null,
"next": null
}
},
"message": null
}
파티 전체 조회 실패 시 401(Unauthorized) 응답 리턴.
파티 전체 조회 API는 제목에 한정하여 검색 기능을 제공함.
search=검색어
쿼리를 붙임으로써 검색 가능.
검색어로 검색한 파티가 존재하면 기존의 응답과 같은 형식으로 리턴.
검색어로 검색한 파티가 존재하지 않으면 다음과 같이 404 응답 리턴.
{
"success": false,
"result": null,
"message": {
"detail": "해당 검색어로 검색한 결과가 없습니다."
}
}
파티 전체 조회 API는 파티 시작일 순, 파티 생성된 날짜 순 으로 정렬할 수 있는 기능을 제공함.
- 파티 시작일 순 정렬 :
ordering=start_time
쿼리를 붙임으로써 가능 - 생성된 날짜 순 정렬 :
ordering=-created_at
쿼리를 붙임으로써 가능
내가 주최한 파티 목록 조회
성공 시 다음의 데이터와 함께 200 응답을 리턴.
페이지 단위 및 형식은 파티 전체 조회 시 나오는 데이터 형식과 동일함.
{
"success": true,
"result": {
"count": 1,
"data": [
{
"id": 6,
"party_owner": {
"username": "개발자",
"profile_picture": null
},
"title": "강남 모각코",
"slug": "개발자-강남-모각코",
"place": "강남 빈브라더스",
"description": null,
"start_time": "2018-08-27T16:00:00+09:00",
"current_people": 1,
"max_people": 6,
"created_at": "2018-07-08T08:55:46.938479+09:00",
"last_updated": "2018-07-08T08:55:46.944794+09:00",
"is_new": true,
"will_start_soon": false,
"has_started": false,
"can_join": true
}
],
"paging": {
"previous": null,
"next": null
}
},
"message": null
}
- 토큰 헤더가 제공되지 않은 경우 401 응답을 리턴.
- 만약 내가 주최한 파티가 없는 경우 404 응답을 리턴.
내가 참여한 파티 목록 조회
성공 시 다음의 데이터와 함께 200 응답을 리턴.
페이지 단위 및 형식은 파티 전체 조회 시 나오는 데이터 형식과 동일함.
{
"success": true,
"result": {
"count": 2,
"data": [
{
"id": 1,
"party_owner": {
"username": "샘플 유저 1",
"profile_picture": "/assets/images/image_1513232511950_750.jpg"
},
"title": "배틀그라운드 스쿼드",
"slug": "샘플-유저-1-배틀그라운드-스쿼드",
"place": "건대 비원 피씨방",
"description": "배그 치킨지향 스쿼드 가즈아! 포친키 다 닦는 사람만 오길 바람.",
"start_time": "2018-07-07T21:00:00+09:00",
"current_people": 2,
"max_people": 4,
"created_at": "2018-06-27T15:15:33.809148+09:00",
"last_updated": "2018-07-04T13:54:41.574940+09:00",
"is_new": true,
"will_start_soon": false,
"has_started": false,
"can_join": true
},
{
"id": 6,
"party_owner": {
"username": "개발자",
"profile_picture": null
},
"title": "강남 모각코",
"slug": "개발자-강남-모각코",
"place": "강남 빈브라더스",
"description": null,
"start_time": "2018-08-27T16:00:00+09:00",
"current_people": 1,
"max_people": 6,
"created_at": "2018-07-08T08:55:46.938479+09:00",
"last_updated": "2018-07-08T08:55:46.944794+09:00",
"is_new": true,
"will_start_soon": false,
"has_started": false,
"can_join": true
}
],
"paging": {
"previous": null,
"next": null
}
},
"message": null
}
- 토큰 헤더가 제공되지 않은 경우 401 응답을 리턴.
- 만약 내가 참여한 파티가 없는 경우 404 응답을 리턴.
현재 로그인 한 유저가 주최하는 파티 생성
- 필수 항목 : 제목, 장소, 시작 날짜, 최대 참여 인원
- 선택 항목 : 설명
{
"title": "string",
"place": "string",
"description": "string",
"start_time": "string",
"max_people": 0
}
파티 생성에 성공하면 다음의 데이터와 함께 201 응답을 리턴
{
"success": true,
"result": {
"title": "강남 모각코",
"slug": "개발자-강남-모각코",
"place": "강남 빈브라더스",
"description": null,
"start_time": "2018-08-27T16:00:00+09:00",
"max_people": 6
},
"message": null
}
파티 상세 조회에 사용되는 파티 라벨은 서버에서 자동 생성
파티 생성에 실패하면 실패 사유와 함께 400 응답을 리턴.
단, 인증 토큰이 제공되지 않은 경우에는 401 응답을 리턴.
실패 사유로는:
- 현재 시각 이전에 시작하는 파티를 주최하려 하는 경우
{
"success": false,
"result": null,
"message": [
"현재 시각 이전에 시작하는 파티를 주최할 수 없습니다."
]
}
- 최대 참여 인원이 2명 미만일 경우
{
"success": false,
"result": null,
"message": [
"참여 가능 인원은 2명 이상이어야 합니다."
]
}
파티 상세 조회
성공 시 다음의 데이터와 함께 200 응답을 리턴.
{
"success": true,
"result": {
"id": 1,
"party_owner": {
"username": "샘플 유저 1",
"profile_picture": "/assets/images/image_1513232511950_750.jpg"
},
"title": "배틀그라운드 스쿼드",
"slug": "샘플-유저-1-배틀그라운드-스쿼드",
"place": "건대 비원 피씨방",
"description": "배그 치킨지향 스쿼드 가즈아! 포친키 다 닦는 사람만 오길 바람.",
"start_time": "2018-07-07T21:00:00+09:00",
"current_people": 2,
"max_people": 4,
"created_at": "2018-06-27T15:15:33.809148+09:00",
"last_updated": "2018-07-04T13:54:41.574940+09:00",
"is_new": true,
"will_start_soon": false,
"has_started": false,
"can_join": true
},
"message": null
}
실패 시 401 응답을 리턴.
파티 정보 수정
수정하고 싶은 정보만 JSON 형태로 body 에 보내시면 됨.
수정 가능한 정보 : 제목, 장소, 설명, 시작 날짜 및 시간, 최대 참여 인원
{
"title": "배틀그라운드 치킨지향 스쿼드",
"place": "슬랙 배틀그라운드 채널",
}
수정에 성공하면 다음 데이터와 함께 200 응답을 리턴.
{
"success": true,
"result": {
"title": "강남 모각코",
"slug": "개발자-강남-모각코",
"place": "강남 빈브라더스",
"description": "모여서 각자 코딩하는 모임인줄 알지만 모여서 각자 떠드는 모임",
"start_time": "2018-08-27T16:00:00+09:00",
"max_people": 6
},
"message": null
}
제목이 바뀐 경우에는 라벨도 서버에서 같이 바꿔줌
수정에 실패하면 실패 사유에 따라서 4xx 에러 코드를 리턴:
- 400 : 해당 값으로 수정이 불가능한 경우
- 시작 시간을 현재 시각 이전으로 당기는 경우
- 최대 인원을 현재 인원보다 줄이는 경우
- 401 : 인증 토큰이 없는 경우
- 403 : 수정 권한이 없는 경우 (파티의 방장만 정보 수정 가능)
파티 삭제
삭제에 성공하면 응답 데이터 없이 204 응답을 리턴.
삭제에 실패하면 실패 사유에 따라 4xx 에러 코드를 리턴:
- 400 : 현재 상황에서 파티 삭제가 불가능한 경우
- 파티에 방장 이외의 사람이 참가하고 있는 경우
- 401 : 인증 토큰이 없는 경우
- 403 : 삭제 권한이 없는 경우 (파티의 방장만 삭제 가능)