서버 노트 API

엔드포인트: /api/servers/notes/

서버에 첨부된 노트를 관리합니다. 노트를 사용하여 서버 구성, 유지보수 이력, 운영 세부사항을 기록할 수 있습니다. 마크다운 서식, 비공개 설정, 고정, 사용자 멘션을 지원합니다.

노트 목록 조회

노트 목록을 페이지네이션하여 가져옵니다.

GET /api/servers/notes/

쿼리 파라미터

파라미터타입설명
serverstring (UUID)서버 ID로 필터링
authorstring (UUID)작성자 사용자 ID로 필터링
privateboolean비공개 상태로 필터링
pinnedboolean고정 상태로 필터링
searchstring내용, 서버명, 작성자명으로 검색
orderingstring정렬 순서 (예: -added_at, pinned). 기본값: -pinned, -added_at
pageinteger페이지 번호
page_sizeinteger페이지당 결과 수 (기본값: 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"]
}

요청 파라미터

필드타입필수설명
serverstring (UUID)Yes노트를 첨부할 서버 ID
contentstringYes노트 내용 (최대 512자, 마크다운 지원)
privatebooleanNo작성자만 볼 수 있는 비공개 노트 (기본값: false)
pinnedbooleanNo목록 상단에 고정 (기본값: false, 서버당 최대 3개)
mentioned_usersarray[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_idstring (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_idstring (UUID)수정할 노트의 ID

요청 본문

{
  "content": "유지보수 완료: 문제 없이 완료됨.",
  "pinned": false
}

요청 파라미터

필드타입필수설명
contentstringNo수정된 노트 내용 (최대 512자)
privatebooleanNo비공개 설정
pinnedbooleanNo고정 상태 (서버당 최대 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_idstring (UUID)삭제할 노트의 ID

응답

204 No Content

오류 코드

상태오류 코드설명
400NOTE_PIN_LIMIT_EXCEEDED서버당 최대 3개의 고정 노트 초과
401UNAUTHORIZED유효하지 않거나 누락된 인증 정보
403FORBIDDEN권한 부족 (예: 다른 사용자의 노트 수정)
404NOT_FOUND노트를 찾을 수 없음