업데이트
허브에서 제안하는 업데이트와 설치 요청.
이 그룹의 작업과 각 작업의 액세스 규칙, 재시도 규칙, 매개 변수, 응답입니다. 모든 요청에는 키가 포함됩니다: Authorization: Bearer <키>(“인증” 참조).
작업
업데이트 상태 조회
GET HEAD /api/v1/system/updates
액세스: 관리자 · 재시도: 반복해도 안전함(읽기)
호스트 업데이터가 보고하는 내용을 반환합니다. 설치된 버전과 스키마, 발견된 최신 릴리스(latest), 자동 업데이트 설정(automatic, hourUTC, pin, channel, statistics), phase(idle, checking, updating, failed), 마지막 error, 마지막 하트비트, 설정 revision이 있으며, 업데이터의 메일박스에서 아직 대기 중인 요청(pending)도 포함됩니다. 호스트 업데이터가 연결되어 있지 않으면 snapshot은 null입니다. revision은 requestSystemUpdate에 전달합니다.
응답 200
| 필드 | 형식 | 필수 | 규칙 |
|---|---|---|---|
snapshot | object | 예 | null일 수 있음 |
snapshot.revision | integer | 예 | 0–2147483646 |
snapshot.currentVersion | string | 예 | ^(0|[1-9][0-9]{0,5})\.(0|[1-9][0-9]{0,5})\.(0|[1-9][0-9]{0,5})$ 패턴과 일치 |
snapshot.currentSchema | integer | 예 | 0–2147483647 |
snapshot.automatic | boolean | 예 | — |
snapshot.hourUTC | integer | 예 | 0–23 |
snapshot.pin | string | 예 | ^(0|[1-9][0-9]{0,5})\.(0|[1-9][0-9]{0,5})\.(0|[1-9][0-9]{0,5})$ 패턴과 일치; null일 수 있음 |
snapshot.heartbeatAt | string (date-time) | 예 | — |
snapshot.checkedAt | string (date-time) | 예 | null일 수 있음 |
snapshot.latest | object | 예 | null일 수 있음 |
snapshot.latest.version | string | 예 | ^(0|[1-9][0-9]{0,5})\.(0|[1-9][0-9]{0,5})\.(0|[1-9][0-9]{0,5})$ 패턴과 일치 |
snapshot.latest.schema | integer | 예 | 0–2147483647 |
snapshot.latest.sha256 | string | 예 | SHA-256: 소문자 16진수 64자리 |
snapshot.phase | string | 예 | idle, checking, updating, failed 중 하나 |
snapshot.error | string | 예 | check_failed, update_failed, conflict, maintenance_required, recovery_required, null 중 하나; null일 수 있음 |
snapshot.lastAttemptDay | string | 예 | null일 수 있음 |
snapshot.lastRequestId | string (uuid) | 예 | null일 수 있음 |
snapshot.statistics | boolean | 아니요 | — |
snapshot.channel | string | 아니요 | stable, beta 중 하나 |
pending | object | 예 | null 중 하나 |
pending.id | string (uuid) | 예 | — |
pending.expectedRevision | integer | 예 | 0–2147483646 |
pending.kind | string | 예 | check 중 하나 |
pending.version | string | 예 | ^(0|[1-9][0-9]{0,5})\.(0|[1-9][0-9]{0,5})\.(0|[1-9][0-9]{0,5})$ 패턴과 일치 |
pending.sha256 | string | 예 | SHA-256: 소문자 16진수 64자리 |
pending.automatic | boolean | 예 | — |
pending.hourUTC | integer | 예 | 0–23 |
pending.statistics | boolean | 아니요 | — |
응답: 200, 400, 401, 403, 404, 409, 422, 503, 507
예제
curl -X GET "$ARKVORY_URL/api/v1/system/updates" \
-H "Authorization: Bearer $ARKVORY_TOKEN"업데이트 작업 요청
POST /api/v1/system/updates/requests
액세스: 관리자 · 재시도: 예상 리비전으로만 반복(compare-and-swap)
호스트 업데이터에 명령 하나를 전달하면 업데이터가 작업을 수행합니다. kind가 check이면 새 릴리스를 찾고, apply는 주어진 안정 version을 sha256과 함께 설치하며, configure는 automatic, hourUTC, 선택적으로 statistics를 설정합니다. id에 새 UUID를, expectedRevision에 getSystemUpdates의 값을 보냅니다. 409 revision_mismatch는 설정이 변경되었다는 뜻이고, 503 busy는 요청이 대기 중이거나 업데이터가 작업 중이라는 뜻이며, 503 unavailable은 업데이터가 연결되어 있지 않거나 하트비트가 5분보다 오래되었다는 뜻입니다. 응답 202는 요청이 큐에 들어갔다는 의미일 뿐이므로, getSystemUpdates의 phase, currentVersion, lastRequestId로 진행 상황을 확인합니다. 같은 id와 본문으로 반복해도 안전합니다.
요청 본문 (application/json)
| 필드 | 형식 | 필수 | 규칙 |
|---|---|---|---|
id | string (uuid) | 예 | — |
expectedRevision | integer | 예 | 0–2147483646 |
kind | string | 예 | check 중 하나 |
version | string | 예 | ^(0|[1-9][0-9]{0,5})\.(0|[1-9][0-9]{0,5})\.(0|[1-9][0-9]{0,5})$ 패턴과 일치 |
sha256 | string | 예 | SHA-256: 소문자 16진수 64자리 |
automatic | boolean | 예 | — |
hourUTC | integer | 예 | 0–23 |
statistics | boolean | 아니요 | — |
응답 202
| 필드 | 형식 | 필수 | 규칙 |
|---|---|---|---|
id | string (uuid) | 예 | — |
응답: 202, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
예제
curl -X POST "$ARKVORY_URL/api/v1/system/updates/requests" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"id":"00000000-0000-4000-8000-000000000000","expectedRevision":0,"kind":"check"}'