서버 노트 API
엔드포인트: /api/servers/notes/
서버에 첨부된 노트를 관리합니다. 노트를 사용하여 서버 구성, 유지보수 이력, 운영 세부사항을 기록할 수 있습니다. 마크다운 서식, 비공개 설정, 고정, 사용자 멘션을 지원합니다.
노트 목록 조회
노트 목록을 페이지네이션하여 가져옵니다.
GET /api/servers/notes/
쿼리 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
server | string (UUID) | 서버 ID로 필터링 |
author | string (UUID) | 작성자 사용자 ID로 필터링 |
private | boolean | 비공개 상태로 필터링 |
pinned | boolean | 고정 상태로 필터링 |
search | string | 내용, 서버명, 작성자명으로 검색 |
ordering | string | 정렬 순서 (예: -added_at, pinned). 기본값: -pinned, -added_at |
page | integer | 페이지 번호 |
page_size | integer | 페이지당 결과 수 (기본값: 15, 최대: 100) |
응답
{
"count": 5,
"next": null,
"previous": null,
"results": [
{
"id": "c72e9f01-3a5b-4d8e-9f12-1a2b3c4d5e6f",
"server": {
"id": "7e3984de-49ab-4cc6-bcdf-21fbd35858b8",
"name": "web-server-01",
"os": "Ubuntu 22.04",
"is_connected": true
},
"author": {
"id": 1,
"name": "admin",
"email": "admin@example.com"
},
"content": "2024-01-15에 Ubuntu 22.04 LTS로 업그레이드 완료.",
"private": false,
"pinned": true,
"added_at": "2024-01-15T14:30:00Z",
"updated_at": "2024-01-15T14:30:00Z"
}
]
}
노트 생성
서버에 새 노트를 추가합니다. 마크다운 내용, 비공개 설정, 고정, 사용자 멘션을 지원합니다.
POST /api/servers/notes/
요청 본문
{
"server": "7e3984de-49ab-4cc6-bcdf-21fbd35858b8",
"content": "예정된 유지보수 시간: 2024-02-01 02:00-04:00 UTC",
"private": false,
"pinned": true,
"mentioned_users": ["a540bf0f-8b37-4f03-8546-dd71c6b03329"]
}
요청 파라미터
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
server | string (UUID) | Yes | 노트를 첨부할 서버 ID |
content | string | Yes | 노트 내용 (최대 512자, 마크다운 지원) |
private | boolean | No | 작성자만 볼 수 있는 비공개 노트 (기본값: false) |
pinned | boolean | No | 목록 상단에 고정 (기본값: false, 서버당 최대 3개) |
mentioned_users | array[UUID] | No | 멘션할 사용자 ID (알림 발송). 쓰기 전용 |
응답
{
"id": "d83f0a12-4b6c-5e9f-0a23-2b3c4d5e6f7a",
"server": {
"id": "7e3984de-49ab-4cc6-bcdf-21fbd35858b8",
"name": "web-server-01",
"os": "Ubuntu 22.04",
"is_connected": true
},
"author": {
"id": 1,
"name": "admin",
"email": "admin@example.com"
},
"content": "예정된 유지보수 시간: 2024-02-01 02:00-04:00 UTC",
"private": false,
"pinned": true,
"added_at": "2024-01-20T10:00:00Z",
"updated_at": "2024-01-20T10:00:00Z"
}
노트 상세 조회
특정 노트의 세부 정보를 조회합니다.
GET /api/servers/notes/{note_id}/
경로 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
note_id | string (UUID) | 조회할 노트의 ID |
응답
{
"id": "c72e9f01-3a5b-4d8e-9f12-1a2b3c4d5e6f",
"server": {
"id": "7e3984de-49ab-4cc6-bcdf-21fbd35858b8",
"name": "web-server-01",
"os": "Ubuntu 22.04",
"is_connected": true
},
"author": {
"id": 1,
"name": "admin",
"email": "admin@example.com"
},
"content": "2024-01-15에 Ubuntu 22.04 LTS로 업그레이드 완료.",
"private": false,
"pinned": true,
"added_at": "2024-01-15T14:30:00Z",
"updated_at": "2024-01-15T14:30:00Z"
}
노트 수정
기존 노트를 수정합니다. content, private, pinned 필드만 수정 가능합니다.
PATCH /api/servers/notes/{note_id}/
경로 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
note_id | string (UUID) | 수정할 노트의 ID |
요청 본문
{
"content": "유지보수 완료: 문제 없이 완료됨.",
"pinned": false
}
요청 파라미터
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
content | string | No | 수정된 노트 내용 (최대 512자) |
private | boolean | No | 비공개 설정 |
pinned | boolean | No | 고정 상태 (서버당 최대 3개) |
응답
{
"id": "d83f0a12-4b6c-5e9f-0a23-2b3c4d5e6f7a",
"server": {
"id": "7e3984de-49ab-4cc6-bcdf-21fbd35858b8",
"name": "web-server-01",
"os": "Ubuntu 22.04",
"is_connected": true
},
"author": {
"id": 1,
"name": "admin",
"email": "admin@example.com"
},
"content": "유지보수 완료: 문제 없이 완료됨.",
"private": false,
"pinned": false,
"added_at": "2024-01-20T10:00:00Z",
"updated_at": "2024-01-20T16:45:00Z"
}
노트 삭제
서버에서 노트를 제거합니다.
DELETE /api/servers/notes/{note_id}/
경로 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
note_id | string (UUID) | 삭제할 노트의 ID |
응답
204 No Content
오류 코드
| 상태 | 오류 코드 | 설명 |
|---|---|---|
| 400 | NOTE_PIN_LIMIT_EXCEEDED | 서버당 최대 3개의 고정 노트 초과 |
| 401 | UNAUTHORIZED | 유효하지 않거나 누락된 인증 정보 |
| 403 | FORBIDDEN | 권한 부족 (예: 다른 사용자의 노트 수정) |
| 404 | NOT_FOUND | 노트를 찾을 수 없음 |