Start here. This is the direct spoken answer to practice first.
Overview
FastAPI can assemble a request, but application code should not need the framework to express its collaborators.
Depends should normally stay in path operations, dependency functions, and the composition layer that adapts HTTP to an application use case. Those boundary functions can resolve the authenticated actor, repository, or service and then call ordinary Python code with explicit arguments. I do not put Depends defaults inside domain entities or application-service methods. Keeping the boundary narrow makes the same use case callable from tests, background jobs, scripts, or another transport without asking FastAPI to resolve it.