996d403248
KEY: Storage Box API is api.hetzner.com/v1 (NOT api.hetzner.cloud/v1). Proven live on spike-* (torn down): sub-account create/reset/readonly/delete + billable bx11 box create/change_type/delete. Create takes a password (no ssh-key param) → transient-pw→ssh-copy-id -s -f→restic reach→reset_subaccount_password (key-only steady state). RepoPath /home/<repo>; quota levers (dedicated=box type, shared= readonly+soft-quota); idempotency via label_selector. SECURITY: token is project-wide unscopeable — can touch ep0 + SSH keys → move customer boxes to a dedicated Hetzner project. No prod code; spike torn down clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PSK5g6qYLknKj8u3QAFEr6