{"nodes": [{"id": "$graphify-root$_backend_app_api_deps_py", "label": "deps.py", "file_type": "code", "source_file": "backend/app/api/deps.py", "source_location": "L1"}, {"id": "$graphify-root$_backend_app_api_deps_get_current_user_dep", "label": "get_current_user_dep()", "file_type": "code", "source_file": "backend/app/api/deps.py", "source_location": "L19", "_callable": true}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/backend/app/api/deps.py"}, {"id": "user", "label": "User", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/backend/app/api/deps.py"}, {"id": "$graphify-root$_backend_app_api_deps_get_current_user_optional", "label": "get_current_user_optional()", "file_type": "code", "source_file": "backend/app/api/deps.py", "source_location": "L35", "_callable": true}, {"id": "$graphify-root$_backend_app_api_deps_require_role", "label": "require_role()", "file_type": "code", "source_file": "backend/app/api/deps.py", "source_location": "L45", "_callable": true}, {"id": "$graphify-root$_backend_app_api_deps_require_role_check", "label": "_check()", "file_type": "code", "source_file": "backend/app/api/deps.py", "source_location": "L50", "_callable": true}, {"id": "$graphify-root$_backend_app_api_deps_require_can_trigger", "label": "require_can_trigger()", "file_type": "code", "source_file": "backend/app/api/deps.py", "source_location": "L69", "_callable": true}, {"id": "$graphify-root$_backend_app_api_deps_get_activity_logger", "label": "get_activity_logger()", "file_type": "code", "source_file": "backend/app/api/deps.py", "source_location": "L76", "_callable": true}, {"id": "$graphify-root$_backend_app_api_deps_paginationparams", "label": "PaginationParams", "file_type": "code", "source_file": "backend/app/api/deps.py", "source_location": "L87", "_callable": true, "_callable_class": true}, {"id": "$graphify-root$_backend_app_api_deps_paginationparams_init", "label": ".__init__()", "file_type": "code", "source_file": "backend/app/api/deps.py", "source_location": "L88", "_callable": true}, {"id": "$graphify-root$_backend_app_api_deps_paginationparams_offset", "label": ".offset()", "file_type": "code", "source_file": "backend/app/api/deps.py", "source_location": "L97", "_callable": true}, {"id": "$graphify-root$_backend_app_api_deps_paginationparams_limit", "label": ".limit()", "file_type": "code", "source_file": "backend/app/api/deps.py", "source_location": "L101", "_callable": true}, {"id": "$graphify-root$_backend_app_api_deps_get_pagination", "label": "get_pagination()", "file_type": "code", "source_file": "backend/app/api/deps.py", "source_location": "L105", "_callable": true}, {"id": "$graphify-root$_backend_app_api_deps_rationale_1", "label": "Centralized FastAPI dependencies \u2014 single source for auth, DB, role checks.", "file_type": "rationale", "source_file": "backend/app/api/deps.py", "source_location": "L1"}, {"id": "$graphify-root$_backend_app_api_deps_rationale_23", "label": "Resolve current user from Atlas session cookie. Raises 401 if no session or\u2026", "file_type": "rationale", "source_file": "backend/app/api/deps.py", "source_location": "L23"}, {"id": "$graphify-root$_backend_app_api_deps_rationale_39", "label": "Resolve current user if session exists, otherwise return None.", "file_type": "rationale", "source_file": "backend/app/api/deps.py", "source_location": "L39"}, {"id": "$graphify-root$_backend_app_api_deps_rationale_46", "label": "Dependency factory: require user to have one of the allowed roles. Usage:\u2026", "file_type": "rationale", "source_file": "backend/app/api/deps.py", "source_location": "L46"}, {"id": "$graphify-root$_backend_app_api_deps_rationale_70", "label": "Guard for job trigger endpoints \u2014 viewer cannot trigger.", "file_type": "rationale", "source_file": "backend/app/api/deps.py", "source_location": "L70"}, {"id": "$graphify-root$_backend_app_api_deps_rationale_77", "label": "Returns a callable for logging activity events. Usage in endpoints: `logger =\u2026", "file_type": "rationale", "source_file": "backend/app/api/deps.py", "source_location": "L77"}], "edges": [{"source": "$graphify-root$_backend_app_api_deps_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L3", "weight": 1.0, "_python_import_module": "typing", "_python_import_bindings": [["Optional", "Optional"]]}, {"source": "$graphify-root$_backend_app_api_deps_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L5", "weight": 1.0, "_python_import_module": "fastapi", "_python_import_bindings": [["Cookie", "Cookie"], ["Depends", "Depends"], ["HTTPException", "HTTPException"]]}, {"source": "$graphify-root$_backend_app_api_deps_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L6", "weight": 1.0, "_python_import_module": "sqlalchemy.orm", "_python_import_bindings": [["Session", "Session"]]}, {"source": "$graphify-root$_backend_app_api_deps_py", "target": "$graphify-root$_backend_app_db_session_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L8", "weight": 1.0, "_python_import_module": "app.db.session", "_python_import_bindings": [["get_db", "get_db"]], "target_file": "$graphify-root$/backend/app/db/session.py"}, {"source": "$graphify-root$_backend_app_api_deps_py", "target": "$graphify-root$_backend_app_db_models_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L9", "weight": 1.0, "_python_import_module": "app.db.models", "_python_import_bindings": [["User", "User"]], "target_file": "$graphify-root$/backend/app/db/models.py"}, {"source": "$graphify-root$_backend_app_api_deps_py", "target": "$graphify-root$_backend_app_services_auth_service_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L10", "weight": 1.0, "_python_import_module": "app.services.auth_service", "_python_import_bindings": [["get_current_user", "get_current_user"]], "target_file": "$graphify-root$/backend/app/services/auth_service.py"}, {"source": "$graphify-root$_backend_app_api_deps_py", "target": "$graphify-root$_backend_app_api_deps_get_current_user_dep", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_get_current_user_dep", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_get_current_user_dep", "target": "user", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L19", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_py", "target": "$graphify-root$_backend_app_api_deps_get_current_user_optional", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_get_current_user_optional", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_get_current_user_optional", "target": "user", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L35", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_py", "target": "$graphify-root$_backend_app_api_deps_require_role", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L45", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_require_role", "target": "$graphify-root$_backend_app_api_deps_require_role_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L50", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_py", "target": "$graphify-root$_backend_app_api_deps_require_can_trigger", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_require_can_trigger", "target": "user", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_require_can_trigger", "target": "user", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L69", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_py", "target": "$graphify-root$_backend_app_api_deps_get_activity_logger", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_py", "target": "$graphify-root$_backend_app_api_deps_paginationparams", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L87", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_paginationparams", "target": "$graphify-root$_backend_app_api_deps_paginationparams_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L88", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_paginationparams", "target": "$graphify-root$_backend_app_api_deps_paginationparams_offset", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L97", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_paginationparams", "target": "$graphify-root$_backend_app_api_deps_paginationparams_limit", "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L101", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_py", "target": "$graphify-root$_backend_app_api_deps_get_pagination", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_get_pagination", "target": "$graphify-root$_backend_app_api_deps_paginationparams", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L105", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_require_role", "target": "$graphify-root$_backend_app_api_deps_require_role_check", "relation": "indirect_call", "context": "return", "confidence": "INFERRED", "confidence_score": 0.85, "source_file": "backend/app/api/deps.py", "source_location": "L57", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_get_pagination", "target": "$graphify-root$_backend_app_api_deps_paginationparams", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L109", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_rationale_1", "target": "$graphify-root$_backend_app_api_deps_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_rationale_23", "target": "$graphify-root$_backend_app_api_deps_get_current_user_dep", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L23", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_rationale_39", "target": "$graphify-root$_backend_app_api_deps_get_current_user_optional", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L39", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_rationale_46", "target": "$graphify-root$_backend_app_api_deps_require_role", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L46", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_rationale_70", "target": "$graphify-root$_backend_app_api_deps_require_can_trigger", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L70", "weight": 1.0}, {"source": "$graphify-root$_backend_app_api_deps_rationale_77", "target": "$graphify-root$_backend_app_api_deps_get_activity_logger", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/deps.py", "source_location": "L77", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_backend_app_api_deps_get_current_user_dep", "callee": "HTTPException", "is_member_call": false, "source_file": "backend/app/api/deps.py", "source_location": "L28", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_api_deps_get_current_user_dep", "callee": "get_current_user", "is_member_call": false, "source_file": "backend/app/api/deps.py", "source_location": "L29", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_api_deps_get_current_user_dep", "callee": "HTTPException", "is_member_call": false, "source_file": "backend/app/api/deps.py", "source_location": "L31", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_api_deps_get_current_user_optional", "callee": "get_current_user", "is_member_call": false, "source_file": "backend/app/api/deps.py", "source_location": "L42", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_api_deps_require_role_check", "callee": "HTTPException", "is_member_call": false, "source_file": "backend/app/api/deps.py", "source_location": "L52", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_api_deps_require_role_check", "callee": "join", "is_member_call": true, "source_file": "backend/app/api/deps.py", "source_location": "L54", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_api_deps_require_role_check", "callee": "allowed_roles", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/api/deps.py", "source_location": "L54"}, {"caller_nid": "$graphify-root$_backend_app_api_deps_get_activity_logger", "callee": "activity_logger", "is_member_call": false, "indirect": true, "context": "return", "source_file": "backend/app/api/deps.py", "source_location": "L82"}], "_cached_target_files": ["$graphify-root$/backend/app/db/models.py", "$graphify-root$/backend/app/db/session.py", "$graphify-root$/backend/app/services/auth_service.py"]}