콘텐츠로 이동

REST API

항목
Base URLhttp://127.0.0.1:8080/api/v1
인증Authorization: Bearer {JWT}
CSRF쿠키 세션 미사용. X-CSRF-Token 헤더 없음
Content-Typeapplication/json
압축gzip (Accept-Encoding: gzip)
CORS화이트리스트 기반
ETag/304 (v1.0)조건부 캐싱 (If-None-Match)
페이지네이션 (v1.0)X-Total-Count + Link: <url>; rel="next"
Correlation ID (v1.0)요청/응답 UUID (X-Correlation-Id)

엔드포인트별로 Rate Limit을 차등 적용:

엔드포인트제한
POST /auth/token60/분
GET /metrics3,600/시간
GET /vms600/분
POST /vms60/분
기타600/분 (IP 기본)
유형타임아웃
읽기 (GET)8초
쓰기 (POST/PUT)30초
장기 작업 (migrate, backup)60초
Terminal window
# 토큰 발급
curl -s -X POST http://127.0.0.1:8080/api/v1/auth/token \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"<configured-admin-password>"}'
# → {"access_token":"eyJ...", "refresh_token":"eyJ..."}
# 토큰 갱신
curl -s -X POST http://127.0.0.1:8080/api/v1/auth/refresh \
-d '{"refresh_token":"eyJ..."}'
Terminal window
# VM 목록
curl -s -H "Authorization: Bearer $TOKEN" \
http://127.0.0.1:8080/api/v1/vms
# VM 생성
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name":"web-prod",
"vcpu":4,
"memory_mb":8192,
"disk_size_gb":50,
"os_variant":"ubuntu24.04",
"storage_type":"zvol"
}' http://127.0.0.1:8080/api/v1/vms
# VM 시작/중지/삭제
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
http://127.0.0.1:8080/api/v1/vms/web-prod/start
curl -s -X POST ... http://127.0.0.1:8080/api/v1/vms/web-prod/stop
curl -s -X DELETE ... http://127.0.0.1:8080/api/v1/vms/web-prod
# VM 삭제 상태 확인 (비동기)
curl -s -H "Authorization: Bearer $TOKEN" \
http://127.0.0.1:8080/api/v1/vms/web-prod/delete-status
Terminal window
# 목록
curl -s -H "Authorization: Bearer $TOKEN" \
http://127.0.0.1:8080/api/v1/containers
# 생성
curl -s -X POST -H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"nginx-ct","image":"ubuntu:24.04"}' \
http://127.0.0.1:8080/api/v1/containers

Single Edge 공개판은 클러스터 상태, 클러스터 전체 VM, 라이브 마이그레이션 REST 절차를 운영 표면으로 제공하지 않는다.
관련 역사 기록은 docs/adr/와 Multi 범위 문서에서만 확인한다.

Terminal window
# 호스트 메트릭
curl -s -H "Authorization: Bearer $TOKEN" \
http://127.0.0.1:8080/api/v1/host/metrics
# 프로세스 목록
curl -s -H "Authorization: Bearer $TOKEN" \
http://127.0.0.1:8080/api/v1/processes
# 알림 히스토리
curl -s -H "Authorization: Bearer $TOKEN" \
http://127.0.0.1:8080/api/v1/alerts
# Prometheus 메트릭 (인증 불필요)
curl -s http://127.0.0.1:8080/api/v1/metrics
Terminal window
# 심층 프로브 (인증 불필요)
curl -s http://127.0.0.1:8080/api/v1/health
# → {"status":"ok","subsystems":{
# "libvirt":"ok","etcd":"ok","disk":"ok",
# "audit_db":"ok","tls":"ok","capabilities":{...}
# }}