## List `viewer.users.list(UserListParams**kwargs) -> SyncCursorUsers[UserListResponse]` **get** `/v1/viewer/users` Retrieves a paginated list of users with optional filtering by access level, email, name, and invitation source. Returns up to 100 users per request. ### Parameters - `cursor: Optional[str]` Base64 encoded cursor from previous response - `email: Optional[str]` Filter by exact email match - `first_name: Optional[str]` Filter by first name (contains match) - `invited_source: Optional[Literal["dashboard", "api"]]` Filter by invitation source - `"dashboard"` - `"api"` - `last_name: Optional[str]` Filter by last name (contains match) - `level: Optional[Literal["owner", "admin", "member"]]` Filter by user level - `"owner"` - `"admin"` - `"member"` - `limit: Optional[float]` Number of results to return (1-100) ### Returns - `class UserListResponse: …` A user in the Viewer system with study management permissions - `can_manage_studies: bool` Whether the user has permission to create, update, and manage studies - `clinic_role: Literal["Radiologist", "Cardiologist", "Neurologist", 18 more]` User's clinical or organizational role - `"Radiologist"` - `"Cardiologist"` - `"Neurologist"` - `"Urologist"` - `"Gynecologist"` - `"Endocrinologist"` - `"Doctor"` - `"Surgeon"` - `"Physician"` - `"Physician Assistant"` - `"Nurse Practitioner"` - `"Registered Nurse"` - `"Patient Care Coordinator"` - `"Front Desk Operator"` - `"Imaging Technologist"` - `"PACS Administrator"` - `"Software Engineer"` - `"Revenue Cycle Manager"` - `"Administrative Director"` - `"Administrative Assistant"` - `"Other"` - `created_at: Optional[datetime]` Timestamp when the user was created - `email: str` User's email address for login and notifications - `first_name: str` User's first name - `has_dashboard_access: bool` Whether the user can access the dashboard interface. Required for admin users - `invited_source: Literal["dashboard", "api"]` How the user was invited - via dashboard UI or API - `"dashboard"` - `"api"` - `last_login_at: Optional[datetime]` Timestamp of user's last login, null if never logged in - `last_name: str` User's last name - `level: Literal["owner", "admin", "member"]` User access level. 'owner' has full control, 'admin' can manage users/settings, 'member' has standard access - `"owner"` - `"admin"` - `"member"` - `user_id: str` Unique user identifier. Format: usr_{32-hex-chars} - `middle_name: Optional[str]` User's middle name (optional) - `phone_number: Optional[str]` User's phone number (10-15 digits, optional) - `suffix1: Optional[str]` Name suffix (e.g., 'Jr.', 'Sr.', 'III') - optional - `suffix2: Optional[str]` Additional name suffix (optional) ### Example ```python import os from avara import Avara client = Avara( api_key=os.environ.get("AVARA_API_KEY"), # This is the default and can be omitted ) page = client.viewer.users.list() page = page.users[0] print(page.middle_name) ```