---
# System prepended metadata

title: Status code

---


# Status code
---
## Success
- 200 OK
- 201 POST Created

## Error
- 401
    - 인증(세션, 쿠키 문제) -> 로그인 화면으로 돌아가야 함
- 403
    - 권한 문제 -> 악의적인 API 사용
- 500
    - 서버 로직 문제

## Error message response
```
{
    message : string
}
```

---
# API Document
---
# Issue

## 이슈들 가져오기 (검색)

| Method |     uri     | session |
|:------:|:-----------:|:-------:|
|  GET   | /api/issues |    X    |

- Query


|   query   |        data        |              comment               |
|:---------:|:------------------:|:----------------------------------:|
|   open    |    true, false     |        열린 이슈, 닫힌 이슈        |
|  author   | @me, user_nickname | 내가 쓴 글, 특정 유저가 쓴 글 검색 |
| assignee  | @me, user_nickname |      담당자 (할당된 이슈)검색      |
| milestone |  milestone_title   |           마일스톤 검색            |
|  comment  |    true, false     |        내가 댓글을 단 이슈         |
|   label   |     label_name     |  레이블 검색 **여러개 작성 가능**  |

Example
```
/api/issues?open=true&label=bug&label=document
-> 이렇게 하면 label이 배열형태로 전달됨.
```

- Req
```
```
- Res
```
{
    issues: []
}
```

## 이슈 생성

| Method |     uri     | session |
|:------:|:-----------:|:-------:|
|  POST  | /api/issues |    O    |



- Req
```
{
    title: string,
    assignee_no: [number],
    milestone_no: number,
    label_no: [number]
}
```
- Res
```
{

}
```

## 이슈 제목 수정

| Method |          uri          | session |
|:------:|:---------------------:|:-------:|
| PATCH  | /api/issues/title/:no |    O    |


- Req
```
{
    title: string
}
```
- Res
```
{

}
```


## 이슈 assignee 추가

| Method |          uri          | session |
|:------:|:---------------------:|:-------:|
| POST  | /api/issues/assignee/:no |    O    |


- Req
```
{
    assignee_no: number
}
```
- Res
```
{

}
```

## 이슈 assignee 삭제

| Method |          uri          | session |
|:------:|:---------------------:|:-------:|
| DELETE  | /api/issues/assignee/:no |    O    |


- Req
```
{
    assignee_no: number
}
```
- Res
```
{

}
```

## 이슈 제목 수정

| Method |          uri          | session |
|:------:|:---------------------:|:-------:|
| PATCH  | /api/issues/title/:no |    O    |


- Req
```
{
    title: string
}
```
- Res
```
{

}
```


## 이슈 label 추가

| Method |          uri          | session |
|:------:|:---------------------:|:-------:|
|  POST  | /api/issues/label/:no |    O    |


- Req
```
{
    label_no: number
}
```
- Res
```
{

}
```

## 이슈 label 삭제

| Method |          uri          | session |
|:------:|:---------------------:|:-------:|
| DELETE | /api/issues/label/:no |    O    |


- Req
```
{
    label_no: number
}
```
- Res
```
{

}
```

## 이슈 milestone 변경

| Method |            uri            | session |
|:------:|:-------------------------:|:-------:|
| PATCH  | /api/issues/milestone/:no |    O    |


- Req
```
{
    milestone_no: number | null
}
```
- Res
```
{

}
```


## 이슈 open

| Method |         uri          | session |
|:------:|:--------------------:|:-------:|
| PATCH  | /api/issues/open/:no |    O    |


- Req
```
{

}
```
- Res
```
{

}
```


## 이슈 close

| Method |          uri          | session |
|:------:|:---------------------:|:-------:|
| PATCH  | /api/issues/close/:no |    O    |


- Req
```
{

}
```
- Res
```
{

}
```

## 이슈 comment 추가

| Method |         uri         | session |
|:------:|:-------------------:|:-------:|
|  POST  | /api/issues/comment |    O    |


- Req
```
{
    issue_no: number,
    content: string,
    is_head: boolean
}
```
- Res
```
{

}
```

## 이슈 comment 변경

| Method |           uri           | session |
|:------:|:-----------------------:|:-------:|
| PATCH  | /api/issues/comment/:no |    O    |


- Req
```
{
    content: string,
}
```
- Res
```
{

}
```

## 이슈 comment 삭제

| Method |           uri           | session |
|:------:|:-----------------------:|:-------:|
| DELETE | /api/issues/comment/:no |    O    |


- Req
```
```
- Res
```
{

}
```

# Label

## 레이블 조회

| Method |     uri     | session |
|:------:|:-----------:|:-------:|
|  GET   | /api/labels |    O    |

- Req
```
```
- Res
```
{

}
```

## 레이블 추가

| Method |     uri     | session |
|:------:|:-----------:|:-------:|
|  POST  | /api/labels |    O    |


- Req
```
{
    name: string,
    description: string,
    color: string
}
```
- Res
```
{

}
```

## 레이블 변경

| Method |       uri       | session |
|:------:|:---------------:|:-------:|
|  PUT   | /api/labels/:no |    O    |

- Req
```
{
    name: string,
    description: string,
    color: string
}
```
- Res
```
{

}
```

## 레이블 삭제

| Method |       uri       | session |
|:------:|:---------------:|:-------:|
| DELETE | /api/labels/:no |    O    |


- Req
```
```
- Res
```
{

}
```

# Milestone

## 마일스톤 조회

| Method |       uri       | session |
|:------:|:---------------:|:-------:|
|  GET   | /api/milestones |    O    |


- Req
```
```
- Res
```
{

}
```

## 마일스톤 추가

| Method |       uri       | session |
|:------:|:---------------:|:-------:|
|  POST  | /api/milestones |    O    |


- Req
```
{
    title: string,
    description: string | null,
    due_date: string | null
}
```
- Res
```
{

}
```

## 마일스톤 변경

| Method |         uri         | session |
|:------:|:-------------------:|:-------:|
|  PUT   | /api/milestones/:no |    O    |


- Req
```
{
    title: string,
    description: string | null,
    due_date: string | null
}
```
- Res
```
{

}
```

## 마일스톤 삭제

| Method |         uri         | session |
|:------:|:-------------------:|:-------:|
| DELETE | /api/milestones/:no |    O    |


- Req
```
```
- Res
```
{

}
```

## 마일스톤 열기

| Method |           uri            | session |
|:------:|:------------------------:|:-------:|
| PATCH  | /api/milestones/open/:no |    O    |


- Req
```
```
- Res
```
{

}
```

## 마일스톤 닫기

| Method |            uri            | session |
|:------:|:-------------------------:|:-------:|
| PATCH  | /api/milestones/close/:no |    O    |


- Req
```
```
- Res
```
{

}
```