API 토큰
엔드포인트: /api/auth/tokens/
Alpacon API에 프로그래매틱 방식으로 접근하기 위한 API 토큰을 관리합니다. 토큰은 인증된 사용자 단위로 생성되며, 세분화된 권한 접근 범위를 설정할 수 있습니다.
API 토큰으로는 다른 API 토큰을 관리할 수 없습니다. 토큰의 생성, 수정, 삭제는 세션 기반(로그인) 인증으로만 가능합니다.
엔드포인트
토큰 목록 조회
인증된 사용자의 모든 API 토큰 목록을 가져옵니다.
요청
GET /api/auth/tokens/
쿼리 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
name | string | 토큰 이름으로 필터링 (정확히 일치) |
enabled | boolean | 활성화 상태로 필터링 |
remote_ip | string | 원격 IP 주소로 필터링 (정확히 일치) |
search | string | name, user_agent, remote_ip 전체 검색 |
ordering | string | 정렬 순서 (added_at, updated_at, -updated_at). 기본값: -updated_at |
page | integer | 페이지 번호 |
page_size | integer | 페이지당 결과 수 (기본값: 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/
요청 본문
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
name | string | Yes | 토큰 이름 (최대 128자, 사용자별 고유) |
enabled | boolean | No | 토큰 즉시 활성화 여부 (기본값: true) |
scopes | array | No | 권한 접근 범위 (기본값: ["*"]). 형식: "resource:action" |
expires_at | datetime | No | 만료 시각 (미래 날짜만 가능, 기본값: 무기한) |
접근 범위 예시:
"*"— 전체 접근"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_id | string (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_id | string (UUID) | 수정할 토큰의 ID |
요청 본문
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
name | string | No | 새로운 토큰 이름 (최대 128자, 사용자별 고유) |
enabled | boolean | No | 토큰 활성화/비활성화 |
scopes | array | No | 업데이트할 권한 접근 범위 |
expires_at | datetime | No | 새로운 만료 시각 (미래 날짜 또는 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_id | string (UUID) | 삭제할 토큰의 ID |
응답
204 No Content
삭제는 영구적이며 되돌릴 수 없습니다.
오류 코드
| 상태 | 오류 코드 | 설명 |
|---|---|---|
| 400 | INVALID_REQUEST | 잘못된 파라미터 |
| 401 | UNAUTHORIZED | 인증되지 않음 |
| 404 | NOT_FOUND | 토큰을 찾을 수 없음 |
| 409 | API_TOKEN_EXISTS | 동일한 이름의 토큰이 이미 존재함 (사용자별 고유) |