@startuml userupload actor Client participant "APIRouter" as router participant "UploadFile" as file participant "Sanitizer" as sanitizer participant "DocumentIngestor" as ingestor Client -> router : upload_file(file) activate router router -> file : check_content_type() activate file file --> router : valid/invalid deactivate file alt if file is valid router -> sanitizer : sanitize_collection_name(current_user["user_id"]) activate sanitizer sanitizer --> router : sanitized_name deactivate sanitizer router -> ingestor : ingest_document(file_location, sanitized_name) activate ingestor ingestor --> router : success/failure deactivate ingestor router --> Client : {"status": "File uploaded and processed successfully."} else if file is invalid router --> Client : {"status": "Unsupported file type."} end deactivate router @enduml