Update delete route response.

This commit is contained in:
febux 2026-08-26 21:12:16 +03:00
parent da96206deb
commit 89e0db7baa
3 changed files with 5 additions and 8 deletions

View file

@ -329,7 +329,7 @@ navigator.credentials.get()...} }`; ответ — access JWT (см. ниже).
Список — массив `{ id, credentialID, credentialPublicKey, counter, userId, Список — массив `{ id, credentialID, credentialPublicKey, counter, userId,
deviceName, createdAt }`, новые первыми. Удаление чужого/несуществующего — deviceName, createdAt }`, новые первыми. Удаление чужого/несуществующего —
`404`, успех — `{ "ok": true }`. `404`, успех — `204 No Content` (пустое тело).
#### `POST /api/v1/auth/magic-link/request` / `verify` #### `POST /api/v1/auth/magic-link/request` / `verify`

View file

@ -18,7 +18,6 @@ from src.contract_check.api.deps import (
) )
from src.contract_check.api.routes.auth.support import _issue_single_token, _require_passkey_enabled from src.contract_check.api.routes.auth.support import _issue_single_token, _require_passkey_enabled
from src.contract_check.api.schemas import ( from src.contract_check.api.schemas import (
OkResponse,
PasskeyAuthenticateFinishRequest, PasskeyAuthenticateFinishRequest,
PasskeyAuthenticationOptions, PasskeyAuthenticationOptions,
PasskeyCredentialPublic, PasskeyCredentialPublic,
@ -244,14 +243,13 @@ async def passkeys_list(
@router.delete( @router.delete(
"/passkeys/{passkey_id}", "/passkeys/{passkey_id}",
response_model=OkResponse, status_code=status.HTTP_204_NO_CONTENT,
status_code=status.HTTP_200_OK,
) )
async def passkeys_delete( async def passkeys_delete(
user: CurrentUserDep, user: CurrentUserDep,
session: AsyncSessionDep, session: AsyncSessionDep,
passkey_id: uuid.UUID, passkey_id: uuid.UUID,
) -> OkResponse: ) -> None:
"""Remove one of the user's passkeys. Scoped to the owning user.""" """Remove one of the user's passkeys. Scoped to the owning user."""
_require_passkey_enabled() _require_passkey_enabled()
@ -260,4 +258,3 @@ async def passkeys_delete(
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="passkey not found") raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="passkey not found")
await session.commit() await session.commit()
log.info("passkey_deleted", user_id=str(user.user_id), passkey_id=str(passkey_id)) log.info("passkey_deleted", user_id=str(user.user_id), passkey_id=str(passkey_id))
return OkResponse(ok=True, detail="passkey deleted")

View file

@ -207,8 +207,8 @@ async def test_passkey_list_and_delete(
assert items[0]["userId"] == user_id assert items[0]["userId"] == user_id
deleted = await client.delete(f"/api/v1/auth/passkeys/{passkey_row_id}", headers=headers) deleted = await client.delete(f"/api/v1/auth/passkeys/{passkey_row_id}", headers=headers)
assert deleted.status_code == 200 assert deleted.status_code == 204
assert deleted.json()["ok"] is True assert deleted.content == b""
gone = await client.delete(f"/api/v1/auth/passkeys/{passkey_row_id}", headers=headers) gone = await client.delete(f"/api/v1/auth/passkeys/{passkey_row_id}", headers=headers)
assert gone.status_code == 404 assert gone.status_code == 404