관리자 API¶
모든 엔드포인트는 HTTP Basic 인증이 필요하고 /api/v1/admin 경로를 쓴다.
FACE_API_STORAGE_ENABLED=true가 필요하다. 꺼져 있으면 501을 반환한다.
GET /api/v1/admin/stats¶
전체 통계 조회.
{
"total_images": 1250,
"total_jobs": 3420,
"total_faces_detected": 8910,
"avg_inference_ms": 14.52,
"storage_used_bytes": 524288000,
"jobs_by_type": { "detect": 2100, "mask": 1320 },
"jobs_by_method": { "gaussian": 800, "pixelate": 400, "solid": 120 }
}
이미지¶
GET /api/v1/admin/images¶
저장된 이미지 목록 (페이지네이션).
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
page |
int | 1 | 페이지 번호 |
per_page |
int | 20 | 페이지당 항목 수 (1-100) |
{
"items": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"filename": "photo.jpg",
"content_type": "image/jpeg",
"size_bytes": 245760,
"width": 1920,
"height": 1080,
"original_url": "https://static.face-api.xylolabs.com/...",
"job_count": 3,
"created_at": "2026-04-06T10:30:00+00:00"
}
],
"total": 1250, "page": 1, "per_page": 10, "pages": 125
}
GET /api/v1/admin/images/{image_id}¶
이미지 상세 정보와 관련 작업 목록.
DELETE /api/v1/admin/images/{image_id}¶
이미지와 관련 작업, S3 객체를 모두 삭제한다. 204 반환.
GET /api/v1/admin/images/{image_id}/download¶
원본 이미지의 presigned S3 URL로 리다이렉트(302)한다.
작업¶
GET /api/v1/admin/jobs¶
작업 목록 (페이지네이션, 필터 지원).
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
page |
int | 1 | 페이지 번호 |
per_page |
int | 20 | 페이지당 항목 수 (1-100) |
job_type |
string | — | detect 또는 mask |
method |
string | — | 블러 방식으로 필터 |
curl -u admin:password "https://face-api.xylolabs.com/api/v1/admin/jobs?job_type=mask&method=gaussian"
GET /api/v1/admin/jobs/{job_id}¶
작업 상세 정보 (감지 데이터 포함).
GET /api/v1/admin/jobs/{job_id}/download¶
처리된 이미지의 presigned S3 URL로 리다이렉트(302)한다.