UploadUrl is moved to a new public model class so that it can be reused.