공격 방어 설정 업데이트
PATCH /v1/attack-protection · 권한 attack-protection:write
JSON 병합 패치(application/merge-patch+json, RFC 7396)로 공격 방어 객체를 업데이트합니다. If-Match는 필수입니다. 없으면 428, 오래된 ETag이면 412가 반환됩니다. 아무것도 바꾸지 않는 패치는 아무것도 기록하지 않으며 ETag도 유지됩니다.
요청
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
If-Match |
헤더 | 예 | 마지막으로 읽은 객체의 ETag. 없으면 428; 오래되었으면 412. |
| 본문 | 객체 | 예 | 병합 패치. 필드는 공격 방어 설정 전체 교체에 나열되어 있습니다. |
동작
- 섹션은 재귀적으로 병합됩니다. 변경하는 필드만 보내십시오.
null은 필드 또는 섹션 전체를 제거하여 기본값으로 되돌립니다.allowlist와allowed_countries같은 목록은 통째로 교체됩니다.- 병합된 객체는
PUT본문과 똑같이 검사됩니다.
응답
공격 방어 설정 조회에서와 같은 객체와 새 ETag가 포함된 200 OK입니다.
오류
| HTTP | 코드 | 발생 시점 |
|---|---|---|
| 400 | unknown_field |
섹션 또는 필드가 객체에 없습니다. errors[]에 포인터가 나열됩니다. |
| 400 | malformed_request |
본문이 올바른 JSON이 아니거나 If-Match 헤더가 잘못되었습니다. |
| 401 | unauthenticated |
자격 증명이 없거나, 잘못되었거나, 폐기되었습니다. |
| 403 | insufficient_permissions |
자격 증명에 attack-protection:write 권한이 없습니다. |
| 403 | plan_feature_unavailable |
risk_policy.mode가 enforce인데 요금제에 포함되지 않습니다. 본문에 feature와 required_plan이 포함됩니다. |
| 412 | precondition_failed |
읽은 후 객체가 변경되었습니다. 다시 읽고 재시도하십시오. |
| 413 | payload_too_large |
객체가 32 KiB보다 큽니다. |
| 422 | validation_failed |
병합된 객체에서 값의 타입이 잘못되었거나 범위를 벗어났거나, block_threshold가 challenge_threshold보다 크지 않습니다. errors[]에 포인터가 나열됩니다. |
| 422 | below_security_floor |
값이 보안 하한선보다 낮습니다. errors[]의 각 항목은 detail에 필드와 하한선을 적습니다. |
| 422 | allowlist_range_too_broad |
허용 목록 접두사가 IPv4는 /8, IPv6는 /32보다 넓습니다. |
| 428 | precondition_required |
If-Match가 없습니다. |
| 429 | rate_limited |
요청 한도를 초과했습니다. Retry-After 시간 후에 다시 시도하십시오. |
| 503 | service_unavailable |
종속 서비스를 일시적으로 사용할 수 없습니다. Retry-After 시간 후에 다시 시도하십시오. |
오류 종류가 여러 개이면 가장 심각한 것만 다음 순서로 반환됩니다: unknown_field, validation_failed, below_security_floor, allowlist_range_too_broad, plan_feature_unavailable. 입력한 값은 응답에 다시 나타나지 않습니다.
예시
curl -X PATCH https://api.eu.keenauth.com/v1/attack-protection \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Content-Type: application/merge-patch+json" \
-H 'If-Match: "3f1c9a0b5d7e2a4c6b8d0e1f2a3b4c5d"' \
-d '{"risk_policy": {"block_threshold": 9}, "sms_protection": null}'