구성 리비전 복원
POST /v1/config-revisions/{revision_id}:restore · 권한 config:write, config:read 및 리비전 종류의 읽기 권한
리비전을 저장한 적용을 되돌리는 새 계획을 만듭니다. 아직 아무것도 변경되지 않습니다. 계획을 검토한 뒤 POST /v1/config-plans/{plan_id}:apply로 적용하세요. 롤백도 다른 변경과 같은 계획 → 적용 경로를 거치므로, 같은 오래됨 검사, 삭제 확인, 시크릿 및 권한 규칙이 적용됩니다.
계획의 대상은 리비전입니다.
- 적용이 수정하거나 삭제한 리소스는 적용 전의 사양을 되돌려 받습니다. 삭제된 리소스는 다시 생성됩니다.
- 적용이 생성한 리소스는 삭제됩니다. 이 경우 계획에는
prune: true가 설정되고, 리비전 종류의 현재 모든 리소스를 포함합니다. 적용이 건드리지 않은 리소스는no_op으로 계획되므로, 생성된 리소스만 삭제됩니다. 적용하려면 삭제가 포함된 모든 계획과 마찬가지로confirm_deletions가 필요합니다. - 리비전이 다루지 않는 종류는 변경되지 않습니다.
리비전에는 시크릿 값이 없습니다. 다시 생성되는 연결은 계획을 적용할 때 클라이언트 시크릿이 필요합니다(requires_secret, secret_required 경고). 원래 적용이 변경한 시크릿은 복원되지 않습니다.
요청
| 매개변수 | 설명 |
|---|---|
revision_id |
리비전 ID, cfgr_…. 리비전 목록에서 확인하세요. |
요청에는 본문이 없습니다. 빈 본문, {}, null은 허용되며, 어떤 필드든 거부됩니다. 재시도를 안전하게 하려면 Idempotency-Key 헤더를 보내세요.
응답
201 Created, Location: /v1/config-plans/{plan_id} 및 Cache-Control: no-store 포함. 본문은 계획 생성 응답과 같은 형식의 계획입니다. 계획은 1시간 동안 유효하며, 환경의 계획 요청 한도와 계획 할당량에 포함됩니다. 환경의 관리 로그 config_plan.created 항목에는 계획이 이 리비전에서 왔다는 기록이 남습니다.
오류
| HTTP | code | 발생 조건 |
|---|---|---|
| 400 | malformed_request, unknown_field |
본문이 비어 있지 않고, {}나 null도 아닙니다. |
| 401 | unauthenticated |
자격 증명이 없거나, 잘못되었거나, 취소되었습니다. |
| 403 | insufficient_permissions |
자격 증명에 계획이 필요로 하는 권한이 없습니다. required_permissions에 모두 나열됩니다. |
| 404 | not_found |
리비전이 없거나, 다른 환경에 속하거나, 90일보다 오래되었습니다. |
| 413 | config_document_too_large |
계획 문서가 5,000개 리소스 또는 10 MiB를 넘습니다. |
| 422 | validation_failed |
리비전을 더 이상 복원할 수 없습니다. 아래를 참고하세요. errors[].pointer는 리비전 내부(/revision/<kind>/<key>/...)를 가리킵니다. |
| 429 | rate_limited |
계획 요청 한도 또는 환경의 계획 할당량에 도달했습니다. Retry-After 기간 이후에 다시 시도하세요. |
| 503 | service_unavailable |
계획 처리 용량이 가득 찼거나 종속 서비스를 일시적으로 사용할 수 없습니다. Retry-After 기간 이후에 다시 시도하세요. |
errors[].code |
의미 |
|---|---|
not_restorable |
/revision_id: 리비전이 더 이상 존재하지 않는 종류를 다룹니다. |
invalid |
저장된 사양이 현재 구성 스키마와 더 이상 일치하지 않습니다. |
unresolved_reference |
복원되는 리소스가 존재하지 않게 될 key를 참조합니다. |
key_in_use |
key가 이제 구성이 관리하지 않는 애플리케이션 또는 API에 속합니다. |
still_referenced |
/revision/created: 적용이 생성한 리소스를 남아 있는 리소스가 아직 참조합니다. |
예시
curl -X POST "https://api.eu.keenauth.com/v1/config-revisions/cfgr_01m4qpqtywfs7930tb6kqn5rc5:restore" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Idempotency-Key: $(uuidgen)"
keenauth config revisions restore cfgr_01m4qpqtywfs7930tb6kqn5rc5
keenauth config apply cfgp_01m4qpqtywfs7930tb6kqn5rc5