Files
frontend/docs/API-LAYER.md
T
ksv741 c97f62bd98 refactor: align frontend ownership boundaries
Close audit gaps across API drift, query policy, UI, and tests.
2026-09-06 18:20:05 +03:00

1.8 KiB

API Layer

OpenAPI backend является источником истины. После изменения backend-контракта committed snapshot src/shared/api/spec/openapi.json обновляют простым копированием опубликованного документа backend, а затем регенерируют src/shared/api/generated/schema.d.ts командой npm run openapi:generate. Оба файла committed; generated файл не редактируется вручную.

npm run openapi:generate использует committed snapshot offline. verify повторно генерирует types во временную директорию и сравнивает их с committed schema.d.ts; backend для этого не требуется, а tracked files gate не меняет.

Все HTTP-вызовы используют apiClient и apiQueryClient из src/shared/api. Прямой fetch в features, pages и entities не используется. Query options берутся из apiQueryClient, а сохранённые cache keys и policies задаются вызывающим slice.

Bearer header принадлежит только shared authenticated fetch. Auth endpoints исключены; refresh сохраняет single-flight и один retry UNAUTHORIZED. Не передавайте Authorization из query или mutation.

Request и response types выводятся из generated paths, например:

type User = paths["/api/v1/auth/me"]["get"]["responses"][200]["content"]["application/json"];

Ручной domain/UI type допустим только если он отличается от transport DTO по смыслу, а не повторяет его поля.