POST/api/public/access-request/email/start-verification

제공된 이메일 주소로 6자리, 10분간 유효한 확인 코드를 전송합니다. — 접근 요청 전 첫 번째 단계입니다.

`POST /api/public/access-request/email/start-verification`은 공개 접근 요청에 대한 이메일 검증을 시작합니다. 이 요청은 로그인이 필요하지 않으며, 본문 필드 `email`에 검증할 주소를 포함합니다. 처리가 성공하면 시스템은 10분 동안 유효한 6자리 확인 코드를 발송합니다. 응답에는 `ok`, `verification_id`, `expires_in_minutes`, `resend_cooldown_seconds`가 포함됩니다. `verification_id`는 이후 검증 라우트에서 동일한 이메일 주소와 수신한 코드와 함께 사용되어야 합니다. 이는 로그인 토큰이 아니며, 영구 사용자 식별자로 저장하거나 공개적으로 로깅해서는 안 됩니다. 이 엔드포인트는 멱등성이 아닙니다. 여러 번 성공적으로 호출하면 여러 검증 절차나 새로운 코드가 생성될 수 있습니다. 따라서 15분 이내에 10건의 요청에 대한 IP 기반의 엄격한 제한이 적용됩니다. 또한 응답에는 60초의 재발송 대기 시간이 표시됩니다. UI는 이 시간 동안 재발송을 트리거하지 않고 남은 대기 시간을 명확하게 표시해야 합니다. 제한을 초과하면 라우트는 `429 RATE_LIMIT_EXCEEDED`로 응답합니다. 배달 오류로 인해 코드를 발송할 수 없는 경우 `502 MAIL_NOT_SENT`가 문서화되어 있습니다. 이러한 경우는 별도로 처리해야 합니다: 속도 제한은 기다림으로써 해결되고, 메일 오류는 접근 가능한 주소와 정상적인 배달이 필요함을 의미합니다. 비밀 정보나 내부 메일 서버 데이터는 오류 메시지에 포함되지 않아야 합니다. 성공 사례는 실제 `verification_id`를 사용하여 라이브로 검증되었습니다. 관련 메시지는 자체 가짜 SMTP 서버를 통해 수신되었으며, 실제 이메일 본문에서 6자리 코드를 읽었습니다. 또한 반복적인 호출 후 429 부정 사례가 관찰되었습니다. 이 증명만 언급할 수 있으며, 여기서 성공적으로 완료된 접근 요청이나 결제 절차가 도출되지는 않습니다.

Auth & Absicherung

Keine Authentifizierung erforderlich

strictLimiter: 10 요청 / 15분, IP 기반.

Rate-Limit: 10 Anfragen pro 15 Minuten (IP-basiert)

Idempotent: Nein

Parameter

email(body, string, erforderlich)확인할 이메일 주소

Beispiel-Request

{"email":"max@example.com"}

Beispiel-Response

{"ok":true,"verification_id":"<UUID>","expires_in_minutes":10,"resend_cooldown_seconds":60}

Fehlercodes

429 RATE_LIMIT_EXCEEDED이 민감한 엔드포인트에 대한 요청이 너무 많습니다.
502 MAIL_NOT_SENT확인 코드가 전송되지 않았습니다(이메일 배달 오류).

Live-Test-Nachweis

성공(200, 실제 verification_id) 라이브 인증됨; 관련 이메일은 자체 가짜 SMTP 서버를 통해 수신되었으며, 실제 이메일 내용에서 6자리 코드를 추출함. 반복 호출 후 429 오류가 관찰됨.

공개 양식