1.7 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 никогда не требует backend и не пытается автоматически синхронизировать OpenAPI artifacts.
Все 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 по смыслу, а не повторяет его поля.