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 по смыслу, а не повторяет его поля.