참조API
시크릿
secrets 카테고리의 API 작업 3개를 다룹니다.
| 메서드 | 경로 | 설명 |
|---|---|---|
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/secrets | 시크릿 이름과 버전 목록입니다(runlot secret list) |
| PUT | /v1/orgs/{orgSlug}/projects/{projectName}/secrets/{secretName} | 시크릿을 생성하거나 업데이트합니다(runlot secret set) |
| DELETE | /v1/orgs/{orgSlug}/projects/{projectName}/secrets/{secretName} | 시크릿을 삭제합니다(runlot secret delete) |
GET /v1/orgs/{orgSlug}/projects/{projectName}/secrets
값은 어떤 응답에도 포함되지 않습니다. 값이 나가는 유일한 방법은 워커의 env.<NAME>를 통하는 것입니다(docs/phase6.md B3·B4). member 이상입니다.
operationId listSecrets
| 상태 코드 | 설명 | 응답 본문 |
|---|---|---|
| 200 | 목록 조회 | SecretList |
| 403 | — | — |
| 404 | — | — |
PUT /v1/orgs/{orgSlug}/projects/{projectName}/secrets/{secretName}
이는 멱등적이지 않습니다 — 호출할 때마다 version이 증가하며, 다음 수렴(convergence) 시 노드가 해당 프로젝트의 workerd를 새 환경으로 다운타임 없이 교체합니다(배포와 동일한 경로입니다). 재배포는 필요하지 않습니다.
cp-public은 값을 저장하지 않습니다. cp-core가 마스터 키로 이를 봉인합니다(docs/phase6.md B1). secret.set 감사 이벤트는 이름만 기록합니다.
member 이상입니다.
operationId setSecret
요청 본문: application/json · object
| 상태 코드 | 설명 | 응답 본문 |
|---|---|---|
| 200 | 저장된 이름과 버전입니다 | SecretMeta |
| 400 | 이름이 규칙을 따르지 않거나(bad_request) 예약된 이름입니다(reserved_name: DB, ASSETS, RUNLOT_* — env.db와 env.assets 바인딩의 대문자 버전, 그리고 노드 접두사) | Error |
| 403 | — | — |
| 404 | — | — |
DELETE /v1/orgs/{orgSlug}/projects/{projectName}/secrets/{secretName}
존재하지 않는 이름은 404를 반환합니다 — 아무것도 삭제하지 않으면서 삭제했다고 주장하는 응답은 없습니다. Member 이상입니다. 감사 로그에는 secret.delete로 기록됩니다.
operationId deleteSecret
| 상태 코드 | 설명 | 응답 본문 |
|---|---|---|
| 204 | 삭제됨 | — |
| 403 | — | — |
| 404 | — | — |