Party API 문서 - PartyGwam/api GitHub Wiki

Party API

기능: 파티 생성, 파티 전체 조회, 파티 상세 조회, 파티 수정, 파티 삭제

목차

상기 URL로 보내는 모든 요청은 인증 헤더(Authorization) 필요!

GET /parties/

파티 목록 전체 조회

Response Format - Success

파티 전체 조회에 성공하면 다음의 데이터와 함께 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
}

Response Format - Failure

파티 전체 조회 실패 시 401(Unauthorized) 응답 리턴.

검색 기능

파티 전체 조회 API는 제목에 한정하여 검색 기능을 제공함.
search=검색어 쿼리를 붙임으로써 검색 가능.

검색어로 검색한 파티가 존재하면 기존의 응답과 같은 형식으로 리턴.

검색어로 검색한 파티가 존재하지 않으면 다음과 같이 404 응답 리턴.

{
  "success": false,
  "result": null,
  "message": {
    "detail": "해당 검색어로 검색한 결과가 없습니다."
  }
}

정렬 기능

파티 전체 조회 API는 파티 시작일 순, 파티 생성된 날짜 순 으로 정렬할 수 있는 기능을 제공함.

  • 파티 시작일 순 정렬 : ordering=start_time 쿼리를 붙임으로써 가능
  • 생성된 날짜 순 정렬 : ordering=-created_at 쿼리를 붙임으로써 가능

GET /parties/created/

내가 주최한 파티 목록 조회

Response Format - Success

성공 시 다음의 데이터와 함께 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
}

Response Format - Failure

  • 토큰 헤더가 제공되지 않은 경우 401 응답을 리턴.
  • 만약 내가 주최한 파티가 없는 경우 404 응답을 리턴.

GET /parties/joined/

내가 참여한 파티 목록 조회

Response Format - Success

성공 시 다음의 데이터와 함께 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
}

Response Format - Failure

  • 토큰 헤더가 제공되지 않은 경우 401 응답을 리턴.
  • 만약 내가 참여한 파티가 없는 경우 404 응답을 리턴.

POST /parties/

현재 로그인 한 유저가 주최하는 파티 생성

Request Format

  • 필수 항목 : 제목, 장소, 시작 날짜, 최대 참여 인원
  • 선택 항목 : 설명
{
  "title": "string",
  "place": "string",
  "description": "string",
  "start_time": "string",
  "max_people": 0
}

Response Format - Success

파티 생성에 성공하면 다음의 데이터와 함께 201 응답을 리턴

{
  "success": true,
  "result": {
    "title": "강남 모각코",
    "slug": "개발자-강남-모각코",
    "place": "강남 빈브라더스",
    "description": null,
    "start_time": "2018-08-27T16:00:00+09:00",
    "max_people": 6
  },
  "message": null
}

파티 상세 조회에 사용되는 파티 라벨은 서버에서 자동 생성

Response Format - Failure

파티 생성에 실패하면 실패 사유와 함께 400 응답을 리턴.
단, 인증 토큰이 제공되지 않은 경우에는 401 응답을 리턴.

실패 사유로는:

  • 현재 시각 이전에 시작하는 파티를 주최하려 하는 경우
{
  "success": false,
  "result": null,
  "message": [
    "현재 시각 이전에 시작하는 파티를 주최할 수 없습니다."
  ]
}
  • 최대 참여 인원이 2명 미만일 경우
{
  "success": false,
  "result": null,
  "message": [
    "참여 가능 인원은 2명 이상이어야 합니다."
  ]
}

GET /parties/<slug>/

파티 상세 조회

Response Format - Success

성공 시 다음의 데이터와 함께 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
}

Response Format - Failure

실패 시 401 응답을 리턴.

PUT /parties/<slug>/

파티 정보 수정

Request Format

수정하고 싶은 정보만 JSON 형태로 body 에 보내시면 됨.
수정 가능한 정보 : 제목, 장소, 설명, 시작 날짜 및 시간, 최대 참여 인원

{
  "title": "배틀그라운드 치킨지향 스쿼드",
  "place": "슬랙 배틀그라운드 채널",
}

Response Format - Success

수정에 성공하면 다음 데이터와 함께 200 응답을 리턴.

{
  "success": true,
  "result": {
    "title": "강남 모각코",
    "slug": "개발자-강남-모각코",
    "place": "강남 빈브라더스",
    "description": "모여서 각자 코딩하는 모임인줄 알지만 모여서 각자 떠드는 모임",
    "start_time": "2018-08-27T16:00:00+09:00",
    "max_people": 6
  },
  "message": null
}

제목이 바뀐 경우에는 라벨도 서버에서 같이 바꿔줌

Response Format - Failure

수정에 실패하면 실패 사유에 따라서 4xx 에러 코드를 리턴:

  • 400 : 해당 값으로 수정이 불가능한 경우
    • 시작 시간을 현재 시각 이전으로 당기는 경우
    • 최대 인원을 현재 인원보다 줄이는 경우
  • 401 : 인증 토큰이 없는 경우
  • 403 : 수정 권한이 없는 경우 (파티의 방장만 정보 수정 가능)

DELETE /parties/<slug>/

파티 삭제

Response Format - Success

삭제에 성공하면 응답 데이터 없이 204 응답을 리턴.

Response Format - Failure

삭제에 실패하면 실패 사유에 따라 4xx 에러 코드를 리턴:

  • 400 : 현재 상황에서 파티 삭제가 불가능한 경우
    • 파티에 방장 이외의 사람이 참가하고 있는 경우
  • 401 : 인증 토큰이 없는 경우
  • 403 : 삭제 권한이 없는 경우 (파티의 방장만 삭제 가능)
⚠️ **GitHub.com Fallback** ⚠️