{"nodes": [{"id": "$graphify-root$_backend_app_services_service_account_py", "label": "service_account.py", "file_type": "code", "source_file": "backend/app/services/service_account.py", "source_location": "L1"}, {"id": "$graphify-root$_backend_app_services_service_account_get_service_account", "label": "get_service_account()", "file_type": "code", "source_file": "backend/app/services/service_account.py", "source_location": "L17", "_callable": true}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/backend/app/services/service_account.py"}, {"id": "serviceaccount", "label": "ServiceAccount", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "$graphify-root$/backend/app/services/service_account.py"}, {"id": "$graphify-root$_backend_app_services_service_account_upsert_service_account", "label": "upsert_service_account()", "file_type": "code", "source_file": "backend/app/services/service_account.py", "source_location": "L21", "_callable": true}, {"id": "$graphify-root$_backend_app_services_service_account_delete_service_account", "label": "delete_service_account()", "file_type": "code", "source_file": "backend/app/services/service_account.py", "source_location": "L54", "_callable": true}, {"id": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_creds", "label": "get_decrypted_service_creds()", "file_type": "code", "source_file": "backend/app/services/service_account.py", "source_location": "L63", "_callable": true}, {"id": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_token", "label": "get_decrypted_service_token()", "file_type": "code", "source_file": "backend/app/services/service_account.py", "source_location": "L75", "_callable": true}, {"id": "$graphify-root$_backend_app_services_service_account_update_service_token", "label": "update_service_token()", "file_type": "code", "source_file": "backend/app/services/service_account.py", "source_location": "L89", "_callable": true}, {"id": "$graphify-root$_backend_app_services_service_account_verify_service_token", "label": "verify_service_token()", "file_type": "code", "source_file": "backend/app/services/service_account.py", "source_location": "L98", "_callable": true}, {"id": "$graphify-root$_backend_app_services_service_account_ensure_valid_service_token", "label": "ensure_valid_service_token()", "file_type": "code", "source_file": "backend/app/services/service_account.py", "source_location": "L135", "_callable": true}, {"id": "$graphify-root$_backend_app_services_service_account_force_login", "label": "_force_login()", "file_type": "code", "source_file": "backend/app/services/service_account.py", "source_location": "L151", "_callable": true}, {"id": "$graphify-root$_backend_app_services_service_account_ensure_service_token", "label": "ensure_service_token()", "file_type": "code", "source_file": "backend/app/services/service_account.py", "source_location": "L181", "_callable": true}, {"id": "$graphify-root$_backend_app_services_service_account_service_auto_relogin", "label": "service_auto_relogin()", "file_type": "code", "source_file": "backend/app/services/service_account.py", "source_location": "L218", "_callable": true}, {"id": "$graphify-root$_backend_app_services_service_account_rationale_1", "label": "Service account management \u2014 per-hub TMS credentials untuk menjalankan job\u2026", "file_type": "rationale", "source_file": "backend/app/services/service_account.py", "source_location": "L1"}, {"id": "$graphify-root$_backend_app_services_service_account_rationale_30", "label": "Create atau update service account. Password disimpan encrypted (Fernet).", "file_type": "rationale", "source_file": "backend/app/services/service_account.py", "source_location": "L30"}, {"id": "$graphify-root$_backend_app_services_service_account_rationale_64", "label": "Decrypt TMS email+password dari service account untuk auto relogin.", "file_type": "rationale", "source_file": "backend/app/services/service_account.py", "source_location": "L64"}, {"id": "$graphify-root$_backend_app_services_service_account_rationale_76", "label": "Decrypt TMS token service account \u2014 dipakai job worker.", "file_type": "rationale", "source_file": "backend/app/services/service_account.py", "source_location": "L76"}, {"id": "$graphify-root$_backend_app_services_service_account_rationale_90", "label": "Update token TMS service account setelah login/relogin.", "file_type": "rationale", "source_file": "backend/app/services/service_account.py", "source_location": "L90"}, {"id": "$graphify-root$_backend_app_services_service_account_rationale_99", "label": "Verify token service account dengan 1 request kecil ke TMS. Cek 1 slot 1 hari\u2026", "file_type": "rationale", "source_file": "backend/app/services/service_account.py", "source_location": "L99"}, {"id": "$graphify-root$_backend_app_services_service_account_rationale_136", "label": "Ambil token service account yang DIJAMIN valid. - Cek token cached; kalau ada &\u2026", "file_type": "rationale", "source_file": "backend/app/services/service_account.py", "source_location": "L136"}, {"id": "$graphify-root$_backend_app_services_service_account_rationale_152", "label": "Fresh login ke TMS (tanpa cek token cached) \u2192 simpan & return token baru.", "file_type": "rationale", "source_file": "backend/app/services/service_account.py", "source_location": "L152"}, {"id": "$graphify-root$_backend_app_services_service_account_rationale_182", "label": "Pastikan service account punya token valid. Jika kosong, auto login. Returns\u2026", "file_type": "rationale", "source_file": "backend/app/services/service_account.py", "source_location": "L182"}, {"id": "$graphify-root$_backend_app_services_service_account_rationale_219", "label": "Auto re-login untuk service account saat token 401 di tengah job.", "file_type": "rationale", "source_file": "backend/app/services/service_account.py", "source_location": "L219"}], "edges": [{"source": "$graphify-root$_backend_app_services_service_account_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L6", "weight": 1.0, "_python_import_module": "json", "_python_import_bindings": [["json", "json"]], "_python_import_module_binding": true}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "logging", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L7", "weight": 1.0, "_python_import_module": "logging", "_python_import_bindings": [["logging", "logging"]], "_python_import_module_binding": true}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L8", "weight": 1.0, "_python_import_module": "datetime", "_python_import_bindings": [["datetime", "datetime"]]}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L9", "weight": 1.0, "_python_import_module": "sqlalchemy.orm", "_python_import_bindings": [["Session", "Session"]]}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "$graphify-root$_backend_app_db_models_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L10", "weight": 1.0, "_python_import_module": "app.db.models", "_python_import_bindings": [["ServiceAccount", "ServiceAccount"]], "target_file": "$graphify-root$/backend/app/db/models.py"}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "$graphify-root$_backend_app_services_encryption_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L11", "weight": 1.0, "_python_import_module": "app.services.encryption", "_python_import_bindings": [["encrypt_token", "encrypt_token"], ["decrypt_token", "decrypt_token"]], "target_file": "$graphify-root$/backend/app/services/encryption.py"}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "$graphify-root$_backend_app_core_logging_py", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L12", "weight": 1.0, "_python_import_module": "app.core.logging", "_python_import_bindings": [["log_activity", "log_activity"]], "target_file": "$graphify-root$/backend/app/core/logging.py"}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "$graphify-root$_backend_app_services_service_account_get_service_account", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_get_service_account", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_get_service_account", "target": "serviceaccount", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L17", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "$graphify-root$_backend_app_services_service_account_upsert_service_account", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_upsert_service_account", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_upsert_service_account", "target": "serviceaccount", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L21", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "$graphify-root$_backend_app_services_service_account_delete_service_account", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_delete_service_account", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L54", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_creds", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_creds", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L63", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_token", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L75", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "$graphify-root$_backend_app_services_service_account_update_service_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_update_service_token", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L89", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "$graphify-root$_backend_app_services_service_account_verify_service_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L98", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_verify_service_token", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L98", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "$graphify-root$_backend_app_services_service_account_ensure_valid_service_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_ensure_valid_service_token", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L135", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "$graphify-root$_backend_app_services_service_account_force_login", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_force_login", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L151", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "$graphify-root$_backend_app_services_service_account_ensure_service_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L181", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_ensure_service_token", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L181", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_py", "target": "$graphify-root$_backend_app_services_service_account_service_auto_relogin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L218", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_service_auto_relogin", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L218", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_upsert_service_account", "target": "$graphify-root$_backend_app_services_service_account_get_service_account", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L31", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_delete_service_account", "target": "$graphify-root$_backend_app_services_service_account_get_service_account", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L55", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_creds", "target": "$graphify-root$_backend_app_services_service_account_get_service_account", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L65", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_token", "target": "$graphify-root$_backend_app_services_service_account_get_service_account", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L77", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_update_service_token", "target": "$graphify-root$_backend_app_services_service_account_get_service_account", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L91", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_ensure_valid_service_token", "target": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L142", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_ensure_valid_service_token", "target": "$graphify-root$_backend_app_services_service_account_verify_service_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L143", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_ensure_valid_service_token", "target": "$graphify-root$_backend_app_services_service_account_force_login", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L148", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_force_login", "target": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_creds", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L156", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_force_login", "target": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L164", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_force_login", "target": "$graphify-root$_backend_app_services_service_account_verify_service_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L165", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_force_login", "target": "$graphify-root$_backend_app_services_service_account_update_service_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L173", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_ensure_service_token", "target": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L186", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_ensure_service_token", "target": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_creds", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L190", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_ensure_service_token", "target": "$graphify-root$_backend_app_services_service_account_update_service_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L202", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_service_auto_relogin", "target": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_creds", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L220", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_service_auto_relogin", "target": "$graphify-root$_backend_app_services_service_account_update_service_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L232", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_rationale_1", "target": "$graphify-root$_backend_app_services_service_account_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L1", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_rationale_30", "target": "$graphify-root$_backend_app_services_service_account_upsert_service_account", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L30", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_rationale_64", "target": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_creds", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L64", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_rationale_76", "target": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L76", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_rationale_90", "target": "$graphify-root$_backend_app_services_service_account_update_service_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L90", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_rationale_99", "target": "$graphify-root$_backend_app_services_service_account_verify_service_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L99", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_rationale_136", "target": "$graphify-root$_backend_app_services_service_account_ensure_valid_service_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L136", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_rationale_152", "target": "$graphify-root$_backend_app_services_service_account_force_login", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L152", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_rationale_182", "target": "$graphify-root$_backend_app_services_service_account_ensure_service_token", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L182", "weight": 1.0}, {"source": "$graphify-root$_backend_app_services_service_account_rationale_219", "target": "$graphify-root$_backend_app_services_service_account_service_auto_relogin", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/service_account.py", "source_location": "L219", "weight": 1.0}], "raw_calls": [{"caller_nid": "$graphify-root$_backend_app_services_service_account_get_service_account", "callee": "first", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L18", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_get_service_account", "callee": "filter", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L18", "receiver": null, "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_get_service_account", "callee": "query", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L18", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_get_service_account", "callee": "ServiceAccount", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/service_account.py", "source_location": "L18"}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_upsert_service_account", "callee": "encrypt_token", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L32", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_upsert_service_account", "callee": "dumps", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L32", "receiver": "json", "_python_receiver_shadowed": false}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_upsert_service_account", "callee": "utcnow", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L38", "receiver": "datetime", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_upsert_service_account", "callee": "ServiceAccount", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L40", "receiver": null, "via_stub": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_upsert_service_account", "callee": "add", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L48", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_upsert_service_account", "callee": "commit", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L49", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_upsert_service_account", "callee": "refresh", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L50", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_delete_service_account", "callee": "delete", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L58", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_delete_service_account", "callee": "commit", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L59", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_creds", "callee": "loads", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L69", "receiver": "json", "_python_receiver_shadowed": false}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_creds", "callee": "decrypt_token", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L69", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_creds", "callee": "error", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L71", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_creds", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/service_account.py", "source_location": "L71"}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_token", "callee": "utcnow", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L81", "receiver": "datetime", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_token", "callee": "commit", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L82", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_token", "callee": "decrypt_token", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L83", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_token", "callee": "error", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L85", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_get_decrypted_service_token", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/service_account.py", "source_location": "L85"}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_update_service_token", "callee": "ValueError", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L93", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_update_service_token", "callee": "encrypt_token", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L94", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_update_service_token", "callee": "commit", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L95", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_verify_service_token", "callee": "now", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L110", "receiver": "datetime", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_verify_service_token", "callee": "timedelta", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L110", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_verify_service_token", "callee": "replace", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L111", "receiver": "end_day", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_verify_service_token", "callee": "replace", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L112", "receiver": "end_day", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_verify_service_token", "callee": "mktime", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L122", "receiver": "tm", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_verify_service_token", "callee": "timetuple", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L122", "receiver": "start", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_verify_service_token", "callee": "mktime", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L123", "receiver": "tm", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_verify_service_token", "callee": "timetuple", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L123", "receiver": "end", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_verify_service_token", "callee": "get", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L125", "receiver": "requests", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_verify_service_token", "callee": "info", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L128", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_verify_service_token", "callee": "info", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L131", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_verify_service_token", "callee": "exc", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "backend/app/services/service_account.py", "source_location": "L131"}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_ensure_valid_service_token", "callee": "info", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L147", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_force_login", "callee": "log_activity", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L158", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_force_login", "callee": "expire_all", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L163", "receiver": "db", "_python_receiver_shadowed": true, "receiver_type": "Session"}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_force_login", "callee": "info", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L166", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_force_login", "callee": "info", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L168", "receiver": "logger", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_force_login", "callee": "sleep", "is_member_call": true, "source_file": "backend/app/services/service_account.py", "source_location": "L169", "receiver": "time", "_python_receiver_shadowed": true}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_force_login", "callee": "login_and_get_token", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L171", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_force_login", "callee": "log_activity", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L174", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_force_login", "callee": "log_activity", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L176", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_ensure_service_token", "callee": "log_activity", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L192", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_ensure_service_token", "callee": "login_and_get_token", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L200", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_ensure_service_token", "callee": "log_activity", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L203", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_ensure_service_token", "callee": "log_activity", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L210", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_service_auto_relogin", "callee": "log_activity", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L222", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_service_auto_relogin", "callee": "login_and_get_token", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L230", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_service_auto_relogin", "callee": "log_activity", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L233", "receiver": null}, {"caller_nid": "$graphify-root$_backend_app_services_service_account_service_auto_relogin", "callee": "log_activity", "is_member_call": false, "source_file": "backend/app/services/service_account.py", "source_location": "L240", "receiver": null}], "_cached_target_files": ["$graphify-root$/backend/app/core/logging.py", "$graphify-root$/backend/app/db/models.py", "$graphify-root$/backend/app/services/encryption.py"]}