API 토큰

엔드포인트: /api/auth/tokens/

Alpacon API에 프로그래매틱 방식으로 접근하기 위한 API 토큰을 관리합니다. 토큰은 인증된 사용자 단위로 생성되며, 세분화된 권한 접근 범위를 설정할 수 있습니다.

API 토큰으로는 다른 API 토큰을 관리할 수 없습니다. 토큰의 생성, 수정, 삭제는 세션 기반(로그인) 인증으로만 가능합니다.

엔드포인트

토큰 목록 조회

인증된 사용자의 모든 API 토큰 목록을 가져옵니다.

요청

GET /api/auth/tokens/

쿼리 파라미터

파라미터타입설명
namestring토큰 이름으로 필터링 (정확히 일치)
enabledboolean활성화 상태로 필터링
remote_ipstring원격 IP 주소로 필터링 (정확히 일치)
searchstringname, user_agent, remote_ip 전체 검색
orderingstring정렬 순서 (added_at, updated_at, -updated_at). 기본값: -updated_at
pageinteger페이지 번호
page_sizeinteger페이지당 결과 수 (기본값: 15, 최대: 100)

응답

{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "CI/CD pipeline",
      "enabled": true,
      "scopes": ["servers:*", "events:*"],
      "updated_at": "2025-01-15T10:30:00Z",
      "expires_at": "2025-12-31T23:59:59Z"
    },
    {
      "id": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
      "name": "Monitoring",
      "enabled": true,
      "scopes": ["*"],
      "updated_at": "2025-01-10T08:00:00Z",
      "expires_at": null
    }
  ]
}

토큰 생성

새로운 API 토큰을 생성합니다. 토큰 key는 생성 응답에서만 반환되며, 이후에는 다시 조회할 수 없습니다.

요청

POST /api/auth/tokens/

요청 본문

필드타입필수설명
namestringYes토큰 이름 (최대 128자, 사용자별 고유)
enabledbooleanNo토큰 즉시 활성화 여부 (기본값: true)
scopesarrayNo권한 접근 범위 (기본값: ["*"]). 형식: "resource:action"
expires_atdatetimeNo만료 시각 (미래 날짜만 가능, 기본값: 무기한)

접근 범위 예시:

  • "*" — 전체 접근
  • "servers:*" — 모든 서버 작업
  • "events:*" — 모든 이벤트/명령어 작업

응답

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "CI/CD pipeline",
  "key": "alpat-xxxxxxxxxxxxxxxxxx",
  "enabled": true,
  "scopes": ["servers:*", "events:*"],
  "updated_at": "2025-01-15T10:30:00Z",
  "expires_at": "2025-12-31T23:59:59Z"
}

key 필드는 토큰 생성 시 한 번만 반환됩니다. 이후에는 다시 조회할 수 없으므로 안전하게 보관하세요.

토큰 상세 조회

특정 API 토큰의 세부 정보를 조회합니다.

요청

GET /api/auth/tokens/{token_id}/

경로 파라미터

파라미터타입설명
token_idstring (UUID)조회할 토큰의 ID

응답

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "CI/CD pipeline",
  "enabled": true,
  "scopes": ["servers:*", "events:*"],
  "updated_at": "2025-01-15T10:30:00Z",
  "expires_at": "2025-12-31T23:59:59Z"
}

토큰 수정

기존 API 토큰의 속성을 수정합니다. 요청 본문에 포함된 필드만 업데이트됩니다.

요청

PATCH /api/auth/tokens/{token_id}/

경로 파라미터

파라미터타입설명
token_idstring (UUID)수정할 토큰의 ID

요청 본문

필드타입필수설명
namestringNo새로운 토큰 이름 (최대 128자, 사용자별 고유)
enabledbooleanNo토큰 활성화/비활성화
scopesarrayNo업데이트할 권한 접근 범위
expires_atdatetimeNo새로운 만료 시각 (미래 날짜 또는 null로 무기한 설정)

응답

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "CI/CD pipeline (disabled)",
  "enabled": false,
  "scopes": ["servers:*"],
  "updated_at": "2025-01-20T14:00:00Z",
  "expires_at": "2025-06-30T23:59:59Z"
}

토큰 삭제

API 토큰을 영구적으로 삭제합니다. 삭제된 토큰은 즉시 폐기되어 인증에 사용할 수 없습니다.

요청

DELETE /api/auth/tokens/{token_id}/

경로 파라미터

파라미터타입설명
token_idstring (UUID)삭제할 토큰의 ID

응답

204 No Content

삭제는 영구적이며 되돌릴 수 없습니다.

오류 코드

상태오류 코드설명
400INVALID_REQUEST잘못된 파라미터
401UNAUTHORIZED인증되지 않음
404NOT_FOUND토큰을 찾을 수 없음
409API_TOKEN_EXISTS동일한 이름의 토큰이 이미 존재함 (사용자별 고유)