# Users ## Invite `UserInviteResponse Viewer.Users.Invite(UserInviteParamsparameters, CancellationTokencancellationToken = default)` **post** `/v1/viewer/users` Creates a new user in the Viewer system and sends them an invitation email. The user will have the specified permissions and access level. Dashboard access can be enabled to allow login. ### Parameters - `UserInviteParams parameters` - `required Boolean canManageStudies` - `required ClinicRole clinicRole` User's clinical or organizational role - `"Radiologist"Radiologist` - `"Cardiologist"Cardiologist` - `"Neurologist"Neurologist` - `"Urologist"Urologist` - `"Gynecologist"Gynecologist` - `"Endocrinologist"Endocrinologist` - `"Doctor"Doctor` - `"Surgeon"Surgeon` - `"Physician"Physician` - `"Physician Assistant"PhysicianAssistant` - `"Nurse Practitioner"NursePractitioner` - `"Registered Nurse"RegisteredNurse` - `"Patient Care Coordinator"PatientCareCoordinator` - `"Front Desk Operator"FrontDeskOperator` - `"Imaging Technologist"ImagingTechnologist` - `"PACS Administrator"PacsAdministrator` - `"Software Engineer"SoftwareEngineer` - `"Revenue Cycle Manager"RevenueCycleManager` - `"Administrative Director"AdministrativeDirector` - `"Administrative Assistant"AdministrativeAssistant` - `"Other"Other` - `required string email` User's email address for login and notifications - `required string firstName` User's first name - `required Boolean hasDashboardAccess` - `required string lastName` User's last name - `required Level level` - `"admin"Admin` - `"member"Member` - `string middleName` User's middle name (optional) - `string phoneNumber` User's phone number (10-15 digits, optional) - `string suffix1` Name suffix (e.g., 'Jr.', 'Sr.', 'III') - optional - `string suffix2` Additional name suffix (optional) ### Returns - `class UserInviteResponse:` Response for inviting a user to Viewer. Level is restricted to admin/member since owners cannot be invited via API. - `required Boolean CanManageStudies` Whether the user has permission to create, update, and manage studies - `required ClinicRole ClinicRole` User's clinical or organizational role - `"Radiologist"Radiologist` - `"Cardiologist"Cardiologist` - `"Neurologist"Neurologist` - `"Urologist"Urologist` - `"Gynecologist"Gynecologist` - `"Endocrinologist"Endocrinologist` - `"Doctor"Doctor` - `"Surgeon"Surgeon` - `"Physician"Physician` - `"Physician Assistant"PhysicianAssistant` - `"Nurse Practitioner"NursePractitioner` - `"Registered Nurse"RegisteredNurse` - `"Patient Care Coordinator"PatientCareCoordinator` - `"Front Desk Operator"FrontDeskOperator` - `"Imaging Technologist"ImagingTechnologist` - `"PACS Administrator"PacsAdministrator` - `"Software Engineer"SoftwareEngineer` - `"Revenue Cycle Manager"RevenueCycleManager` - `"Administrative Director"AdministrativeDirector` - `"Administrative Assistant"AdministrativeAssistant` - `"Other"Other` - `required DateTimeOffset? CreatedAt` Timestamp when the user was created - `required string Email` User's email address for login and notifications - `required string FirstName` User's first name - `required Boolean HasDashboardAccess` Whether the user can access the dashboard interface. Required for admin users - `required InvitedSource InvitedSource` How the user was invited - via dashboard UI or API - `"dashboard"Dashboard` - `"api"Api` - `required DateTimeOffset? LastLoginAt` Timestamp of user's last login, null if never logged in - `required string LastName` User's last name - `required Level Level` User access level. 'admin' can manage users/settings, 'member' has standard access - `"admin"Admin` - `"member"Member` - `required string UserID` Unique user identifier. Format: usr_{32-hex-chars} - `string MiddleName` User's middle name (optional) - `string PhoneNumber` User's phone number (10-15 digits, optional) - `string Suffix1` Name suffix (e.g., 'Jr.', 'Sr.', 'III') - optional - `string Suffix2` Additional name suffix (optional) ### Example ```csharp UserInviteParams parameters = new() { CanManageStudies = true, ClinicRole = ClinicRole.Radiologist, Email = "dr.johnson@hospital.org", FirstName = "Sarah", HasDashboardAccess = true, LastName = "Johnson", Level = Level.Member, }; var response = await client.Viewer.Users.Invite(parameters); Console.WriteLine(response); ``` ## List `UserListPageResponse Viewer.Users.List(UserListParams?parameters, CancellationTokencancellationToken = default)` **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 - `UserListParams parameters` - `string cursor` Base64 encoded cursor from previous response - `string email` Filter by exact email match - `string firstName` Filter by first name (contains match) - `InvitedSource invitedSource` Filter by invitation source - `"dashboard"Dashboard` - `"api"Api` - `string lastName` Filter by last name (contains match) - `Level level` Filter by user level - `"owner"Owner` - `"admin"Admin` - `"member"Member` - `Double limit` Number of results to return (1-100) ### Returns - `class UserListPageResponse:` Paginated list of Viewer users - `required Boolean HasMore` - `required IReadOnlyList Users` - `required Boolean CanManageStudies` Whether the user has permission to create, update, and manage studies - `required ClinicRole ClinicRole` User's clinical or organizational role - `"Radiologist"Radiologist` - `"Cardiologist"Cardiologist` - `"Neurologist"Neurologist` - `"Urologist"Urologist` - `"Gynecologist"Gynecologist` - `"Endocrinologist"Endocrinologist` - `"Doctor"Doctor` - `"Surgeon"Surgeon` - `"Physician"Physician` - `"Physician Assistant"PhysicianAssistant` - `"Nurse Practitioner"NursePractitioner` - `"Registered Nurse"RegisteredNurse` - `"Patient Care Coordinator"PatientCareCoordinator` - `"Front Desk Operator"FrontDeskOperator` - `"Imaging Technologist"ImagingTechnologist` - `"PACS Administrator"PacsAdministrator` - `"Software Engineer"SoftwareEngineer` - `"Revenue Cycle Manager"RevenueCycleManager` - `"Administrative Director"AdministrativeDirector` - `"Administrative Assistant"AdministrativeAssistant` - `"Other"Other` - `required DateTimeOffset? CreatedAt` Timestamp when the user was created - `required string Email` User's email address for login and notifications - `required string FirstName` User's first name - `required Boolean HasDashboardAccess` Whether the user can access the dashboard interface. Required for admin users - `required InvitedSource InvitedSource` How the user was invited - via dashboard UI or API - `"dashboard"Dashboard` - `"api"Api` - `required DateTimeOffset? LastLoginAt` Timestamp of user's last login, null if never logged in - `required string LastName` User's last name - `required Level Level` User access level. 'owner' has full control, 'admin' can manage users/settings, 'member' has standard access - `"owner"Owner` - `"admin"Admin` - `"member"Member` - `required string UserID` Unique user identifier. Format: usr_{32-hex-chars} - `string MiddleName` User's middle name (optional) - `string PhoneNumber` User's phone number (10-15 digits, optional) - `string Suffix1` Name suffix (e.g., 'Jr.', 'Sr.', 'III') - optional - `string Suffix2` Additional name suffix (optional) - `string Cursor` ### Example ```csharp UserListParams parameters = new(); var page = await client.Viewer.Users.List(parameters); await foreach (var item in page.Paginate()) { Console.WriteLine(item); } ``` ## Retrieve `UserRetrieveResponse Viewer.Users.Retrieve(UserRetrieveParamsparameters, CancellationTokencancellationToken = default)` **get** `/v1/viewer/users/{userId}` Retrieves a single user by their unique user ID. Returns the complete user object with all profile information, permissions, and status. ### Parameters - `UserRetrieveParams parameters` - `required string userID` Unique user identifier. Format: usr_{32-hex-chars} ### Returns - `class UserRetrieveResponse:` A user in the Viewer system with study management permissions - `required Boolean CanManageStudies` Whether the user has permission to create, update, and manage studies - `required ClinicRole ClinicRole` User's clinical or organizational role - `"Radiologist"Radiologist` - `"Cardiologist"Cardiologist` - `"Neurologist"Neurologist` - `"Urologist"Urologist` - `"Gynecologist"Gynecologist` - `"Endocrinologist"Endocrinologist` - `"Doctor"Doctor` - `"Surgeon"Surgeon` - `"Physician"Physician` - `"Physician Assistant"PhysicianAssistant` - `"Nurse Practitioner"NursePractitioner` - `"Registered Nurse"RegisteredNurse` - `"Patient Care Coordinator"PatientCareCoordinator` - `"Front Desk Operator"FrontDeskOperator` - `"Imaging Technologist"ImagingTechnologist` - `"PACS Administrator"PacsAdministrator` - `"Software Engineer"SoftwareEngineer` - `"Revenue Cycle Manager"RevenueCycleManager` - `"Administrative Director"AdministrativeDirector` - `"Administrative Assistant"AdministrativeAssistant` - `"Other"Other` - `required DateTimeOffset? CreatedAt` Timestamp when the user was created - `required string Email` User's email address for login and notifications - `required string FirstName` User's first name - `required Boolean HasDashboardAccess` Whether the user can access the dashboard interface. Required for admin users - `required InvitedSource InvitedSource` How the user was invited - via dashboard UI or API - `"dashboard"Dashboard` - `"api"Api` - `required DateTimeOffset? LastLoginAt` Timestamp of user's last login, null if never logged in - `required string LastName` User's last name - `required Level Level` User access level. 'owner' has full control, 'admin' can manage users/settings, 'member' has standard access - `"owner"Owner` - `"admin"Admin` - `"member"Member` - `required string UserID` Unique user identifier. Format: usr_{32-hex-chars} - `string MiddleName` User's middle name (optional) - `string PhoneNumber` User's phone number (10-15 digits, optional) - `string Suffix1` Name suffix (e.g., 'Jr.', 'Sr.', 'III') - optional - `string Suffix2` Additional name suffix (optional) ### Example ```csharp UserRetrieveParams parameters = new() { UserID = "usr_1234567890abcdef1234567890abcdef" }; var user = await client.Viewer.Users.Retrieve(parameters); Console.WriteLine(user); ``` ## Update `UserUpdateResponse Viewer.Users.Update(UserUpdateParamsparameters, CancellationTokencancellationToken = default)` **patch** `/v1/viewer/users/{userId}` Updates a user's profile information, permissions, and access level. All fields are optional - only provided fields will be updated. Email cannot be changed via API. ### Parameters - `UserUpdateParams parameters` - `required string userID` Unique user identifier. Format: usr_{32-hex-chars} - `Boolean canManageStudies` - `ClinicRole? clinicRole` - `"Radiologist"Radiologist` - `"Cardiologist"Cardiologist` - `"Neurologist"Neurologist` - `"Urologist"Urologist` - `"Gynecologist"Gynecologist` - `"Endocrinologist"Endocrinologist` - `"Doctor"Doctor` - `"Surgeon"Surgeon` - `"Physician"Physician` - `"Physician Assistant"PhysicianAssistant` - `"Nurse Practitioner"NursePractitioner` - `"Registered Nurse"RegisteredNurse` - `"Patient Care Coordinator"PatientCareCoordinator` - `"Front Desk Operator"FrontDeskOperator` - `"Imaging Technologist"ImagingTechnologist` - `"PACS Administrator"PacsAdministrator` - `"Software Engineer"SoftwareEngineer` - `"Revenue Cycle Manager"RevenueCycleManager` - `"Administrative Director"AdministrativeDirector` - `"Administrative Assistant"AdministrativeAssistant` - `"Other"Other` - `string firstName` User's first name - `Boolean hasDashboardAccess` Whether the user can access the dashboard interface. Required for admin users - `string lastName` User's last name - `Level level` - `"admin"Admin` - `"member"Member` - `string? middleName` - `string? phoneNumber` - `string? suffix1` - `string? suffix2` ### Returns - `class UserUpdateResponse:` A user in the Viewer system with study management permissions - `required Boolean CanManageStudies` Whether the user has permission to create, update, and manage studies - `required ClinicRole ClinicRole` User's clinical or organizational role - `"Radiologist"Radiologist` - `"Cardiologist"Cardiologist` - `"Neurologist"Neurologist` - `"Urologist"Urologist` - `"Gynecologist"Gynecologist` - `"Endocrinologist"Endocrinologist` - `"Doctor"Doctor` - `"Surgeon"Surgeon` - `"Physician"Physician` - `"Physician Assistant"PhysicianAssistant` - `"Nurse Practitioner"NursePractitioner` - `"Registered Nurse"RegisteredNurse` - `"Patient Care Coordinator"PatientCareCoordinator` - `"Front Desk Operator"FrontDeskOperator` - `"Imaging Technologist"ImagingTechnologist` - `"PACS Administrator"PacsAdministrator` - `"Software Engineer"SoftwareEngineer` - `"Revenue Cycle Manager"RevenueCycleManager` - `"Administrative Director"AdministrativeDirector` - `"Administrative Assistant"AdministrativeAssistant` - `"Other"Other` - `required DateTimeOffset? CreatedAt` Timestamp when the user was created - `required string Email` User's email address for login and notifications - `required string FirstName` User's first name - `required Boolean HasDashboardAccess` Whether the user can access the dashboard interface. Required for admin users - `required InvitedSource InvitedSource` How the user was invited - via dashboard UI or API - `"dashboard"Dashboard` - `"api"Api` - `required DateTimeOffset? LastLoginAt` Timestamp of user's last login, null if never logged in - `required string LastName` User's last name - `required Level Level` User access level. 'owner' has full control, 'admin' can manage users/settings, 'member' has standard access - `"owner"Owner` - `"admin"Admin` - `"member"Member` - `required string UserID` Unique user identifier. Format: usr_{32-hex-chars} - `string MiddleName` User's middle name (optional) - `string PhoneNumber` User's phone number (10-15 digits, optional) - `string Suffix1` Name suffix (e.g., 'Jr.', 'Sr.', 'III') - optional - `string Suffix2` Additional name suffix (optional) ### Example ```csharp UserUpdateParams parameters = new() { UserID = "usr_1234567890abcdef1234567890abcdef" }; var user = await client.Viewer.Users.Update(parameters); Console.WriteLine(user); ``` ## Revoke Access `UserRevokeAccessResponse Viewer.Users.RevokeAccess(UserRevokeAccessParamsparameters, CancellationTokencancellationToken = default)` **post** `/v1/viewer/users/revoke-access` Deactivates a user's access to the system. The user will no longer be able to log in or access resources. User data is preserved and can be reactivated later. ### Parameters - `UserRevokeAccessParams parameters` - `required string userID` User ID to revoke access for. Format: usr_{32-hex-chars} ### Returns - `class UserRevokeAccessResponse:` Response for revoking user access in Viewer - `required Boolean Success` - `string Message` ### Example ```csharp UserRevokeAccessParams parameters = new() { UserID = "usr_1234567890abcdef1234567890abcdef" }; var response = await client.Viewer.Users.RevokeAccess(parameters); Console.WriteLine(response); ``` ## Reactivate `UserReactivateResponse Viewer.Users.Reactivate(UserReactivateParamsparameters, CancellationTokencancellationToken = default)` **post** `/v1/viewer/users/reactivate` Restores access for a previously deactivated user. The user will regain their original permissions and be able to log in again. ### Parameters - `UserReactivateParams parameters` - `required string userID` User ID to reactivate. Format: usr_{32-hex-chars} ### Returns - `class UserReactivateResponse:` Response for reactivating a user in Viewer - `required Boolean Success` - `string Message` ### Example ```csharp UserReactivateParams parameters = new() { UserID = "usr_1234567890abcdef1234567890abcdef" }; var response = await client.Viewer.Users.Reactivate(parameters); Console.WriteLine(response); ``` # Invitations ## List `InvitationListPageResponse Viewer.Users.Invitations.List(InvitationListParams?parameters, CancellationTokencancellationToken = default)` **get** `/v1/viewer/users/invitations` Retrieves a paginated list of user invitations with optional filtering by status, expiration, date range, and user ID. Returns up to 100 invitations per request. ### Parameters - `InvitationListParams parameters` - `string cursor` Base64 encoded cursor from previous response - `string endDate` Filter invitations created on or before this date (YYYY-MM-DD) - `Expired expired` Filter by expiration status - `"all"All` - `"expired"Expired` - `"not-expired"NotExpired` - `Double limit` Number of results to return (1-100) - `string startDate` Filter invitations created on or after this date (YYYY-MM-DD) - `IReadOnlyList status` Filter by invitation status(es) - `"sent"Sent` - `"accepted"Accepted` - `"rejected"Rejected` - `"revoked"Revoked` - `string userID` Filter by user ID. Format: usr_{32-hex-chars} ### Returns - `class InvitationListPageResponse:` Paginated list of Viewer invitations - `required Boolean HasMore` - `required IReadOnlyList Invitations` - `required Boolean CanManageStudies` Whether the invited user will have permission to manage studies - `required string ClinicID` UUID of the clinic this invitation belongs to - `required ClinicRole ClinicRole` Clinical or organizational role for the invited user - `"Radiologist"Radiologist` - `"Cardiologist"Cardiologist` - `"Neurologist"Neurologist` - `"Urologist"Urologist` - `"Gynecologist"Gynecologist` - `"Endocrinologist"Endocrinologist` - `"Doctor"Doctor` - `"Surgeon"Surgeon` - `"Physician"Physician` - `"Physician Assistant"PhysicianAssistant` - `"Nurse Practitioner"NursePractitioner` - `"Registered Nurse"RegisteredNurse` - `"Patient Care Coordinator"PatientCareCoordinator` - `"Front Desk Operator"FrontDeskOperator` - `"Imaging Technologist"ImagingTechnologist` - `"PACS Administrator"PacsAdministrator` - `"Software Engineer"SoftwareEngineer` - `"Revenue Cycle Manager"RevenueCycleManager` - `"Administrative Director"AdministrativeDirector` - `"Administrative Assistant"AdministrativeAssistant` - `"Other"Other` - `required DateTimeOffset? CreatedAt` Timestamp when the invitation was created - `required string Email` Email address the invitation was sent to - `required DateTimeOffset? Expiry` When the invitation expires, null if no expiration - `required string FirstName` Invited user's first name - `required Boolean HasDashboardAccess` Whether the invited user will have dashboard access - `required string InvitationID` Unique invitation identifier. Format: inv_{32-hex-chars} - `required InvitedSource InvitedSource` How the invitation was created - 'dashboard' or 'api' - `"dashboard"Dashboard` - `"api"Api` - `required string InviterID` User ID of the person who sent the invitation. Format: usr_{32-hex-chars}. Null if invited via API - `required string LastName` Invited user's last name - `required Level Level` Access level for the invited user. 'admin' or 'member' when created via API - `"owner"Owner` - `"admin"Admin` - `"member"Member` - `required Status Status` Invitation status: 'sent', 'accepted', 'rejected', or 'revoked' - `"sent"Sent` - `"accepted"Accepted` - `"rejected"Rejected` - `"revoked"Revoked` - `required DateTimeOffset? UpdatedAt` Timestamp when the invitation was last updated - `required string UserID` Pre-generated user ID for this invitation. Format: usr_{32-hex-chars}. This ID is assigned at invitation creation and will become the user's permanent ID upon acceptance - `string InvitedByApiKeyID` UUID of the API key used to send this invitation. Null if sent via dashboard - `string? MiddleName` Invited user's middle name (optional) - `string? PhoneNumber` Invited user's phone number (optional) - `string? Suffix1` Name suffix (e.g., 'Jr.', 'MD') - optional - `string? Suffix2` Additional name suffix - optional - `string Cursor` ### Example ```csharp InvitationListParams parameters = new(); var page = await client.Viewer.Users.Invitations.List(parameters); await foreach (var item in page.Paginate()) { Console.WriteLine(item); } ``` ## Retrieve `InvitationRetrieveResponse Viewer.Users.Invitations.Retrieve(InvitationRetrieveParamsparameters, CancellationTokencancellationToken = default)` **get** `/v1/viewer/users/invitations/{invitationId}` Retrieves a single invitation by its unique invitation ID. Returns the complete invitation details including status, expiration, and associated user information. ### Parameters - `InvitationRetrieveParams parameters` - `required string invitationID` Unique invitation identifier. Format: inv_{32-hex-chars} ### Returns - `class InvitationRetrieveResponse:` A pending user invitation in the Viewer system - `required Boolean CanManageStudies` Whether the invited user will have permission to manage studies - `required string ClinicID` UUID of the clinic this invitation belongs to - `required ClinicRole ClinicRole` Clinical or organizational role for the invited user - `"Radiologist"Radiologist` - `"Cardiologist"Cardiologist` - `"Neurologist"Neurologist` - `"Urologist"Urologist` - `"Gynecologist"Gynecologist` - `"Endocrinologist"Endocrinologist` - `"Doctor"Doctor` - `"Surgeon"Surgeon` - `"Physician"Physician` - `"Physician Assistant"PhysicianAssistant` - `"Nurse Practitioner"NursePractitioner` - `"Registered Nurse"RegisteredNurse` - `"Patient Care Coordinator"PatientCareCoordinator` - `"Front Desk Operator"FrontDeskOperator` - `"Imaging Technologist"ImagingTechnologist` - `"PACS Administrator"PacsAdministrator` - `"Software Engineer"SoftwareEngineer` - `"Revenue Cycle Manager"RevenueCycleManager` - `"Administrative Director"AdministrativeDirector` - `"Administrative Assistant"AdministrativeAssistant` - `"Other"Other` - `required DateTimeOffset? CreatedAt` Timestamp when the invitation was created - `required string Email` Email address the invitation was sent to - `required DateTimeOffset? Expiry` When the invitation expires, null if no expiration - `required string FirstName` Invited user's first name - `required Boolean HasDashboardAccess` Whether the invited user will have dashboard access - `required string InvitationID` Unique invitation identifier. Format: inv_{32-hex-chars} - `required InvitedSource InvitedSource` How the invitation was created - 'dashboard' or 'api' - `"dashboard"Dashboard` - `"api"Api` - `required string InviterID` User ID of the person who sent the invitation. Format: usr_{32-hex-chars}. Null if invited via API - `required string LastName` Invited user's last name - `required Level Level` Access level for the invited user. 'admin' or 'member' when created via API - `"owner"Owner` - `"admin"Admin` - `"member"Member` - `required Status Status` Invitation status: 'sent', 'accepted', 'rejected', or 'revoked' - `"sent"Sent` - `"accepted"Accepted` - `"rejected"Rejected` - `"revoked"Revoked` - `required DateTimeOffset? UpdatedAt` Timestamp when the invitation was last updated - `required string UserID` Pre-generated user ID for this invitation. Format: usr_{32-hex-chars}. This ID is assigned at invitation creation and will become the user's permanent ID upon acceptance - `string InvitedByApiKeyID` UUID of the API key used to send this invitation. Null if sent via dashboard - `string? MiddleName` Invited user's middle name (optional) - `string? PhoneNumber` Invited user's phone number (optional) - `string? Suffix1` Name suffix (e.g., 'Jr.', 'MD') - optional - `string? Suffix2` Additional name suffix - optional ### Example ```csharp InvitationRetrieveParams parameters = new() { InvitationID = "inv_1234567890abcdef1234567890abcdef" }; var invitation = await client.Viewer.Users.Invitations.Retrieve(parameters); Console.WriteLine(invitation); ``` ## Update `InvitationUpdateResponse Viewer.Users.Invitations.Update(InvitationUpdateParamsparameters, CancellationTokencancellationToken = default)` **patch** `/v1/viewer/users/invitations/{invitationId}` Updates a pending invitation's user details and permissions before it is accepted. Only valid for invitations that have not expired or been processed. ### Parameters - `InvitationUpdateParams parameters` - `required string invitationID` Unique invitation identifier. Format: inv_{32-hex-chars} - `Boolean canManageStudies` - `ClinicRole? clinicRole` - `"Radiologist"Radiologist` - `"Cardiologist"Cardiologist` - `"Neurologist"Neurologist` - `"Urologist"Urologist` - `"Gynecologist"Gynecologist` - `"Endocrinologist"Endocrinologist` - `"Doctor"Doctor` - `"Surgeon"Surgeon` - `"Physician"Physician` - `"Physician Assistant"PhysicianAssistant` - `"Nurse Practitioner"NursePractitioner` - `"Registered Nurse"RegisteredNurse` - `"Patient Care Coordinator"PatientCareCoordinator` - `"Front Desk Operator"FrontDeskOperator` - `"Imaging Technologist"ImagingTechnologist` - `"PACS Administrator"PacsAdministrator` - `"Software Engineer"SoftwareEngineer` - `"Revenue Cycle Manager"RevenueCycleManager` - `"Administrative Director"AdministrativeDirector` - `"Administrative Assistant"AdministrativeAssistant` - `"Other"Other` - `string firstName` Invited user's first name - `Boolean hasDashboardAccess` Whether the invited user will have dashboard access - `string lastName` Invited user's last name - `Level level` - `"admin"Admin` - `"member"Member` - `string? middleName` - `string? phoneNumber` - `string? suffix1` - `string? suffix2` ### Returns - `class InvitationUpdateResponse:` A pending user invitation in the Viewer system - `required Boolean CanManageStudies` Whether the invited user will have permission to manage studies - `required string ClinicID` UUID of the clinic this invitation belongs to - `required ClinicRole ClinicRole` Clinical or organizational role for the invited user - `"Radiologist"Radiologist` - `"Cardiologist"Cardiologist` - `"Neurologist"Neurologist` - `"Urologist"Urologist` - `"Gynecologist"Gynecologist` - `"Endocrinologist"Endocrinologist` - `"Doctor"Doctor` - `"Surgeon"Surgeon` - `"Physician"Physician` - `"Physician Assistant"PhysicianAssistant` - `"Nurse Practitioner"NursePractitioner` - `"Registered Nurse"RegisteredNurse` - `"Patient Care Coordinator"PatientCareCoordinator` - `"Front Desk Operator"FrontDeskOperator` - `"Imaging Technologist"ImagingTechnologist` - `"PACS Administrator"PacsAdministrator` - `"Software Engineer"SoftwareEngineer` - `"Revenue Cycle Manager"RevenueCycleManager` - `"Administrative Director"AdministrativeDirector` - `"Administrative Assistant"AdministrativeAssistant` - `"Other"Other` - `required DateTimeOffset? CreatedAt` Timestamp when the invitation was created - `required string Email` Email address the invitation was sent to - `required DateTimeOffset? Expiry` When the invitation expires, null if no expiration - `required string FirstName` Invited user's first name - `required Boolean HasDashboardAccess` Whether the invited user will have dashboard access - `required string InvitationID` Unique invitation identifier. Format: inv_{32-hex-chars} - `required InvitedSource InvitedSource` How the invitation was created - 'dashboard' or 'api' - `"dashboard"Dashboard` - `"api"Api` - `required string InviterID` User ID of the person who sent the invitation. Format: usr_{32-hex-chars}. Null if invited via API - `required string LastName` Invited user's last name - `required Level Level` Access level for the invited user. 'admin' or 'member' when created via API - `"owner"Owner` - `"admin"Admin` - `"member"Member` - `required Status Status` Invitation status: 'sent', 'accepted', 'rejected', or 'revoked' - `"sent"Sent` - `"accepted"Accepted` - `"rejected"Rejected` - `"revoked"Revoked` - `required DateTimeOffset? UpdatedAt` Timestamp when the invitation was last updated - `required string UserID` Pre-generated user ID for this invitation. Format: usr_{32-hex-chars}. This ID is assigned at invitation creation and will become the user's permanent ID upon acceptance - `string InvitedByApiKeyID` UUID of the API key used to send this invitation. Null if sent via dashboard - `string? MiddleName` Invited user's middle name (optional) - `string? PhoneNumber` Invited user's phone number (optional) - `string? Suffix1` Name suffix (e.g., 'Jr.', 'MD') - optional - `string? Suffix2` Additional name suffix - optional ### Example ```csharp InvitationUpdateParams parameters = new() { InvitationID = "inv_1234567890abcdef1234567890abcdef" }; var invitation = await client.Viewer.Users.Invitations.Update(parameters); Console.WriteLine(invitation); ``` ## Revoke `InvitationRevokeResponse Viewer.Users.Invitations.Revoke(InvitationRevokeParams?parameters, CancellationTokencancellationToken = default)` **post** `/v1/viewer/users/invitations/revoke` Revokes a pending invitation, preventing it from being accepted. Can revoke by invitation ID, user ID, or both. Useful for cancelling invitations sent in error. ### Parameters - `InvitationRevokeParams parameters` - `string invitationID` Invitation ID to revoke. Format: inv_{32-hex-chars} - `string userID` User ID whose pending invitation to revoke. Format: usr_{32-hex-chars} ### Returns - `class InvitationRevokeResponse:` Response for revoking an invitation in Viewer - `required Boolean Success` - `string Message` ### Example ```csharp InvitationRevokeParams parameters = new(); var response = await client.Viewer.Users.Invitations.Revoke(parameters); Console.WriteLine(response); ```