Skip to content

API 명세서 1. Issue

Sooyeon Park edited this page Nov 3, 2020 · 23 revisions

Issue State

{
    0: close,
    1: opened
}

이슈 정보 조회 ⛔️

이슈 목록 상단에 필요한 open/closed 개수 + 모달 창에 필요한 데이터

GET /api/all
  • Response (success)
{
    "message": "The request is successfully processed",
    "data": {
        openCount: Number,
        closedCount: Number,
        users: [
            {
                "id": Number,
                "username": String,
                "avatar": String
            }
        ],
        labels: [
            {
                "id": Number,
                "title": String,
                "description": String,
                "color": String
            }
        ],
        milestones: [
            {
                "id": Number,
                "title": String
            }
        ]
    }
}

이슈 목록 조회 ❌

GET /api/issue
  • Filter (query string 정보 / optional)
{
    "state": "all" | "open" | "close" (default open),
    "author": userId,
    "label": labelId,
    "milestone": milestoneId,
    "assignee": userId,
    "search": 검색 할 단어
}
  • Response (success)
{
    "message": "The request is successfully processed",
    "data": [
        {
            "id": Number,
            "title": String,
            "state": Number,
            "user": {
                "id": Number,
                "username": String,
            },
            "milestone": {
                "id": Number,
                "title": String,
            },
            "label": [
                {
                    "id": Number,
                    "title": String,
                    "color": String,
                },
            ]
            "commentCount": Number,
            "createdAt": Date,
            "assignee": [
                {
                    "id": Number,
                    "avatar": String,
                    "username": String,
                },
            ]
        },
    ]
}

이슈 상세 조회

GET /api/issue/{issueId}
  • Response (success)
{
    "message": "The request is successfully processed",
    "data": {
        "id": Number,
        "title": String,
        "state": Number,
        "user": {
            "id": Number,
            "username": String,
        },
        "milestone": {
            "id": Number,
            "title": String,
        },
        "label": [
            {
                "id": Number,
                "title": String,
                "color": String,
            },
        ]
        "commentCount": Number,
        "createdAt": Date,
        "assignee": [
            {
                "id": Number,
                "avatar": String,
                "username": String,
            },
        ]
    }
}

이슈 생성 ⛔️

POST /api/issue
  • Request
{
    "title": String (required),
    "content": String,
    "labels": [labelId, ...],
    "assignees": [userId, ...],
    "milestone": milestoneId
}
  • Response Status code
code 설명
200 정상적으로 생성
400 request body가 정상적이지 않은 경우
401 헤더에 토큰을 실지 않는 경우 (로그인 X)
500 내부 서버 에러
  • Response
{
    "message": "The request is successfully processed"
}

이슈 제목 갱신 ⭕️

PUT /api/issue/{issueId}
  • Request
{
    "title": String (required)
}
  • Response Status code
code 설명
200 정상적으로 생성
400 request body가 정상적이지 않은 경우
401 헤더에 토큰을 실지 않는 경우 (로그인 X)
403 갱신하고자 하는 사용자가 이슈의 작성자가 아닌 경우
500 내부 서버 에러
  • Response
{
    "message": "The request is successfully processed"
}

이슈 디테일 관계 갱신

POST /api/issue/{issueId}/details
  • Request
갱신하고자 하는 데이터 1개만 body에 작성

{
    "type": "assignee" || "label" || "milestone",
    "method": 0 || 1 (0은 제거, 1은 추가),
    "data": userId || labelId || milestoneId
}
  • Response Status code
code 설명
200 정상적으로 생성
400 request body가 정상적이지 않은 경우 (3개 중 1개 필수)
401 헤더에 토큰을 실지 않는 경우 (로그인 X)
409 or 422 해당 이슈에 이미 연결되어 있는 디테일을 추가할 경우 혹은 연결되어 있지 않은 디테일을 삭제할 경우
500 내부 서버 에러
  • Response
{
    "message": "The request is successfully processed"
}

이슈 삭제 ⭕️

DELETE /api/issue/{issueId}
  • Response Status code
code 설명
200 정상적으로 생성
401 헤더에 토큰을 실지 않는 경우 (로그인 X)
404 존재하지 않는 이슈를 삭제하고자 할 경우
500 내부 서버 에러
  • Response
{
    "message": "The request is successfully processed"
}

이슈 상태 갱신 (toggle) ⭕️

PUT /api/issue/state
  • Request
{
    "state": 0 || 1 (변경하고자 하는 값 close하고 싶을 때 0, open하고 싶을 때 1) (required),
    "issueIds": [...] (required)
}
  • Response Status code
code 설명
200 정상적으로 삭제
400 state나 issueIds가 없거나 state가 0 또는 1이 아닌 값일 때
401 헤더에 토큰을 실지 않는 경우 (로그인 X)
500 내부 서버 에러
  • Response
{
    "message": "The request is successfully processed"
}

Clone this wiki locally