# Users ## Invite `UserInviteResponse viewer().users().invite(UserInviteParamsparams, RequestOptionsrequestOptions = RequestOptions.none())` **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 params` - `boolean canManageStudies` - `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("Physician Assistant")` - `NURSE_PRACTITIONER("Nurse Practitioner")` - `REGISTERED_NURSE("Registered Nurse")` - `PATIENT_CARE_COORDINATOR("Patient Care Coordinator")` - `FRONT_DESK_OPERATOR("Front Desk Operator")` - `IMAGING_TECHNOLOGIST("Imaging Technologist")` - `PACS_ADMINISTRATOR("PACS Administrator")` - `SOFTWARE_ENGINEER("Software Engineer")` - `REVENUE_CYCLE_MANAGER("Revenue Cycle Manager")` - `ADMINISTRATIVE_DIRECTOR("Administrative Director")` - `ADMINISTRATIVE_ASSISTANT("Administrative Assistant")` - `OTHER("Other")` - `String email` User's email address for login and notifications - `String firstName` User's first name - `boolean hasDashboardAccess` - `String lastName` User's last name - `Level level` - `ADMIN("admin")` - `MEMBER("member")` - `Optional middleName` User's middle name (optional) - `Optional phoneNumber` User's phone number (10-15 digits, optional) - `Optional suffix1` Name suffix (e.g., 'Jr.', 'Sr.', 'III') - optional - `Optional 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. - `boolean canManageStudies` Whether the user has permission to create, update, and manage studies - `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("Physician Assistant")` - `NURSE_PRACTITIONER("Nurse Practitioner")` - `REGISTERED_NURSE("Registered Nurse")` - `PATIENT_CARE_COORDINATOR("Patient Care Coordinator")` - `FRONT_DESK_OPERATOR("Front Desk Operator")` - `IMAGING_TECHNOLOGIST("Imaging Technologist")` - `PACS_ADMINISTRATOR("PACS Administrator")` - `SOFTWARE_ENGINEER("Software Engineer")` - `REVENUE_CYCLE_MANAGER("Revenue Cycle Manager")` - `ADMINISTRATIVE_DIRECTOR("Administrative Director")` - `ADMINISTRATIVE_ASSISTANT("Administrative Assistant")` - `OTHER("Other")` - `Optional createdAt` Timestamp when the user was created - `String email` User's email address for login and notifications - `String firstName` User's first name - `boolean hasDashboardAccess` Whether the user can access the dashboard interface. Required for admin users - `InvitedSource invitedSource` How the user was invited - via dashboard UI or API - `DASHBOARD("dashboard")` - `API("api")` - `Optional lastLoginAt` Timestamp of user's last login, null if never logged in - `String lastName` User's last name - `Level level` User access level. 'admin' can manage users/settings, 'member' has standard access - `ADMIN("admin")` - `MEMBER("member")` - `String userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional middleName` User's middle name (optional) - `Optional phoneNumber` User's phone number (10-15 digits, optional) - `Optional suffix1` Name suffix (e.g., 'Jr.', 'Sr.', 'III') - optional - `Optional suffix2` Additional name suffix (optional) ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.users.UserInviteParams; import com.avara.models.viewer.users.UserInviteResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); UserInviteParams params = UserInviteParams.builder() .canManageStudies(true) .clinicRole(UserInviteParams.ClinicRole.RADIOLOGIST) .email("dr.johnson@hospital.org") .firstName("Sarah") .hasDashboardAccess(true) .lastName("Johnson") .level(UserInviteParams.Level.MEMBER) .build(); UserInviteResponse response = client.viewer().users().invite(params); } } ``` ## List `UserListPage viewer().users().list(UserListParamsparams = UserListParams.none(), RequestOptionsrequestOptions = RequestOptions.none())` **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 params` - `Optional cursor` Base64 encoded cursor from previous response - `Optional email` Filter by exact email match - `Optional firstName` Filter by first name (contains match) - `Optional invitedSource` Filter by invitation source - `DASHBOARD("dashboard")` - `API("api")` - `Optional lastName` Filter by last name (contains match) - `Optional level` Filter by user level - `OWNER("owner")` - `ADMIN("admin")` - `MEMBER("member")` - `Optional limit` Number of results to return (1-100) ### Returns - `class UserListResponse:` A user in the Viewer system with study management permissions - `boolean canManageStudies` Whether the user has permission to create, update, and manage studies - `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("Physician Assistant")` - `NURSE_PRACTITIONER("Nurse Practitioner")` - `REGISTERED_NURSE("Registered Nurse")` - `PATIENT_CARE_COORDINATOR("Patient Care Coordinator")` - `FRONT_DESK_OPERATOR("Front Desk Operator")` - `IMAGING_TECHNOLOGIST("Imaging Technologist")` - `PACS_ADMINISTRATOR("PACS Administrator")` - `SOFTWARE_ENGINEER("Software Engineer")` - `REVENUE_CYCLE_MANAGER("Revenue Cycle Manager")` - `ADMINISTRATIVE_DIRECTOR("Administrative Director")` - `ADMINISTRATIVE_ASSISTANT("Administrative Assistant")` - `OTHER("Other")` - `Optional createdAt` Timestamp when the user was created - `String email` User's email address for login and notifications - `String firstName` User's first name - `boolean hasDashboardAccess` Whether the user can access the dashboard interface. Required for admin users - `InvitedSource invitedSource` How the user was invited - via dashboard UI or API - `DASHBOARD("dashboard")` - `API("api")` - `Optional lastLoginAt` Timestamp of user's last login, null if never logged in - `String lastName` User's last name - `Level level` User access level. 'owner' has full control, 'admin' can manage users/settings, 'member' has standard access - `OWNER("owner")` - `ADMIN("admin")` - `MEMBER("member")` - `String userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional middleName` User's middle name (optional) - `Optional phoneNumber` User's phone number (10-15 digits, optional) - `Optional suffix1` Name suffix (e.g., 'Jr.', 'Sr.', 'III') - optional - `Optional suffix2` Additional name suffix (optional) ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.users.UserListPage; import com.avara.models.viewer.users.UserListParams; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); UserListPage page = client.viewer().users().list(); } } ``` ## Retrieve `UserRetrieveResponse viewer().users().retrieve(UserRetrieveParamsparams = UserRetrieveParams.none(), RequestOptionsrequestOptions = RequestOptions.none())` **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 params` - `Optional userId` Unique user identifier. Format: usr_{32-hex-chars} ### Returns - `class UserRetrieveResponse:` A user in the Viewer system with study management permissions - `boolean canManageStudies` Whether the user has permission to create, update, and manage studies - `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("Physician Assistant")` - `NURSE_PRACTITIONER("Nurse Practitioner")` - `REGISTERED_NURSE("Registered Nurse")` - `PATIENT_CARE_COORDINATOR("Patient Care Coordinator")` - `FRONT_DESK_OPERATOR("Front Desk Operator")` - `IMAGING_TECHNOLOGIST("Imaging Technologist")` - `PACS_ADMINISTRATOR("PACS Administrator")` - `SOFTWARE_ENGINEER("Software Engineer")` - `REVENUE_CYCLE_MANAGER("Revenue Cycle Manager")` - `ADMINISTRATIVE_DIRECTOR("Administrative Director")` - `ADMINISTRATIVE_ASSISTANT("Administrative Assistant")` - `OTHER("Other")` - `Optional createdAt` Timestamp when the user was created - `String email` User's email address for login and notifications - `String firstName` User's first name - `boolean hasDashboardAccess` Whether the user can access the dashboard interface. Required for admin users - `InvitedSource invitedSource` How the user was invited - via dashboard UI or API - `DASHBOARD("dashboard")` - `API("api")` - `Optional lastLoginAt` Timestamp of user's last login, null if never logged in - `String lastName` User's last name - `Level level` User access level. 'owner' has full control, 'admin' can manage users/settings, 'member' has standard access - `OWNER("owner")` - `ADMIN("admin")` - `MEMBER("member")` - `String userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional middleName` User's middle name (optional) - `Optional phoneNumber` User's phone number (10-15 digits, optional) - `Optional suffix1` Name suffix (e.g., 'Jr.', 'Sr.', 'III') - optional - `Optional suffix2` Additional name suffix (optional) ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.users.UserRetrieveParams; import com.avara.models.viewer.users.UserRetrieveResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); UserRetrieveResponse user = client.viewer().users().retrieve("usr_1234567890abcdef1234567890abcdef"); } } ``` ## Update `UserUpdateResponse viewer().users().update(UserUpdateParamsparams = UserUpdateParams.none(), RequestOptionsrequestOptions = RequestOptions.none())` **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 params` - `Optional userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional canManageStudies` - `Optional clinicRole` - `RADIOLOGIST("Radiologist")` - `CARDIOLOGIST("Cardiologist")` - `NEUROLOGIST("Neurologist")` - `UROLOGIST("Urologist")` - `GYNECOLOGIST("Gynecologist")` - `ENDOCRINOLOGIST("Endocrinologist")` - `DOCTOR("Doctor")` - `SURGEON("Surgeon")` - `PHYSICIAN("Physician")` - `PHYSICIAN_ASSISTANT("Physician Assistant")` - `NURSE_PRACTITIONER("Nurse Practitioner")` - `REGISTERED_NURSE("Registered Nurse")` - `PATIENT_CARE_COORDINATOR("Patient Care Coordinator")` - `FRONT_DESK_OPERATOR("Front Desk Operator")` - `IMAGING_TECHNOLOGIST("Imaging Technologist")` - `PACS_ADMINISTRATOR("PACS Administrator")` - `SOFTWARE_ENGINEER("Software Engineer")` - `REVENUE_CYCLE_MANAGER("Revenue Cycle Manager")` - `ADMINISTRATIVE_DIRECTOR("Administrative Director")` - `ADMINISTRATIVE_ASSISTANT("Administrative Assistant")` - `OTHER("Other")` - `Optional firstName` User's first name - `Optional hasDashboardAccess` Whether the user can access the dashboard interface. Required for admin users - `Optional lastName` User's last name - `Optional level` - `ADMIN("admin")` - `MEMBER("member")` - `Optional middleName` - `Optional phoneNumber` - `Optional suffix1` - `Optional suffix2` ### Returns - `class UserUpdateResponse:` A user in the Viewer system with study management permissions - `boolean canManageStudies` Whether the user has permission to create, update, and manage studies - `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("Physician Assistant")` - `NURSE_PRACTITIONER("Nurse Practitioner")` - `REGISTERED_NURSE("Registered Nurse")` - `PATIENT_CARE_COORDINATOR("Patient Care Coordinator")` - `FRONT_DESK_OPERATOR("Front Desk Operator")` - `IMAGING_TECHNOLOGIST("Imaging Technologist")` - `PACS_ADMINISTRATOR("PACS Administrator")` - `SOFTWARE_ENGINEER("Software Engineer")` - `REVENUE_CYCLE_MANAGER("Revenue Cycle Manager")` - `ADMINISTRATIVE_DIRECTOR("Administrative Director")` - `ADMINISTRATIVE_ASSISTANT("Administrative Assistant")` - `OTHER("Other")` - `Optional createdAt` Timestamp when the user was created - `String email` User's email address for login and notifications - `String firstName` User's first name - `boolean hasDashboardAccess` Whether the user can access the dashboard interface. Required for admin users - `InvitedSource invitedSource` How the user was invited - via dashboard UI or API - `DASHBOARD("dashboard")` - `API("api")` - `Optional lastLoginAt` Timestamp of user's last login, null if never logged in - `String lastName` User's last name - `Level level` User access level. 'owner' has full control, 'admin' can manage users/settings, 'member' has standard access - `OWNER("owner")` - `ADMIN("admin")` - `MEMBER("member")` - `String userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional middleName` User's middle name (optional) - `Optional phoneNumber` User's phone number (10-15 digits, optional) - `Optional suffix1` Name suffix (e.g., 'Jr.', 'Sr.', 'III') - optional - `Optional suffix2` Additional name suffix (optional) ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.users.UserUpdateParams; import com.avara.models.viewer.users.UserUpdateResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); UserUpdateResponse user = client.viewer().users().update("usr_1234567890abcdef1234567890abcdef"); } } ``` ## Revoke Access `UserRevokeAccessResponse viewer().users().revokeAccess(UserRevokeAccessParamsparams, RequestOptionsrequestOptions = RequestOptions.none())` **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 params` - `String userId` User ID to revoke access for. Format: usr_{32-hex-chars} ### Returns - `class UserRevokeAccessResponse:` Response for revoking user access in Viewer - `boolean success` - `Optional message` ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.users.UserRevokeAccessParams; import com.avara.models.viewer.users.UserRevokeAccessResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); UserRevokeAccessParams params = UserRevokeAccessParams.builder() .userId("usr_1234567890abcdef1234567890abcdef") .build(); UserRevokeAccessResponse response = client.viewer().users().revokeAccess(params); } } ``` ## Reactivate `UserReactivateResponse viewer().users().reactivate(UserReactivateParamsparams, RequestOptionsrequestOptions = RequestOptions.none())` **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 params` - `String userId` User ID to reactivate. Format: usr_{32-hex-chars} ### Returns - `class UserReactivateResponse:` Response for reactivating a user in Viewer - `boolean success` - `Optional message` ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.users.UserReactivateParams; import com.avara.models.viewer.users.UserReactivateResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); UserReactivateParams params = UserReactivateParams.builder() .userId("usr_1234567890abcdef1234567890abcdef") .build(); UserReactivateResponse response = client.viewer().users().reactivate(params); } } ``` # Invitations ## List `InvitationListPage viewer().users().invitations().list(InvitationListParamsparams = InvitationListParams.none(), RequestOptionsrequestOptions = RequestOptions.none())` **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 params` - `Optional cursor` Base64 encoded cursor from previous response - `Optional endDate` Filter invitations created on or before this date (YYYY-MM-DD) - `Optional expired` Filter by expiration status - `ALL("all")` - `EXPIRED("expired")` - `NOT_EXPIRED("not-expired")` - `Optional limit` Number of results to return (1-100) - `Optional startDate` Filter invitations created on or after this date (YYYY-MM-DD) - `Optional> status` Filter by invitation status(es) - `SENT("sent")` - `ACCEPTED("accepted")` - `REJECTED("rejected")` - `REVOKED("revoked")` - `Optional userId` Filter by user ID. Format: usr_{32-hex-chars} ### Returns - `class InvitationListResponse:` A pending user invitation in the Viewer system - `boolean canManageStudies` Whether the invited user will have permission to manage studies - `String clinicId` UUID of the clinic this invitation belongs to - `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("Physician Assistant")` - `NURSE_PRACTITIONER("Nurse Practitioner")` - `REGISTERED_NURSE("Registered Nurse")` - `PATIENT_CARE_COORDINATOR("Patient Care Coordinator")` - `FRONT_DESK_OPERATOR("Front Desk Operator")` - `IMAGING_TECHNOLOGIST("Imaging Technologist")` - `PACS_ADMINISTRATOR("PACS Administrator")` - `SOFTWARE_ENGINEER("Software Engineer")` - `REVENUE_CYCLE_MANAGER("Revenue Cycle Manager")` - `ADMINISTRATIVE_DIRECTOR("Administrative Director")` - `ADMINISTRATIVE_ASSISTANT("Administrative Assistant")` - `OTHER("Other")` - `Optional createdAt` Timestamp when the invitation was created - `String email` Email address the invitation was sent to - `Optional expiry` When the invitation expires, null if no expiration - `String firstName` Invited user's first name - `boolean hasDashboardAccess` Whether the invited user will have dashboard access - `String invitationId` Unique invitation identifier. Format: inv_{32-hex-chars} - `InvitedSource invitedSource` How the invitation was created - 'dashboard' or 'api' - `DASHBOARD("dashboard")` - `API("api")` - `String inviterId` User ID of the person who sent the invitation. Format: usr_{32-hex-chars}. Null if invited via API - `String lastName` Invited user's last name - `Level level` Access level for the invited user. 'admin' or 'member' when created via API - `OWNER("owner")` - `ADMIN("admin")` - `MEMBER("member")` - `Status status` Invitation status: 'sent', 'accepted', 'rejected', or 'revoked' - `SENT("sent")` - `ACCEPTED("accepted")` - `REJECTED("rejected")` - `REVOKED("revoked")` - `Optional updatedAt` Timestamp when the invitation was last updated - `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 - `Optional invitedByApiKeyId` UUID of the API key used to send this invitation. Null if sent via dashboard - `Optional middleName` Invited user's middle name (optional) - `Optional phoneNumber` Invited user's phone number (optional) - `Optional suffix1` Name suffix (e.g., 'Jr.', 'MD') - optional - `Optional suffix2` Additional name suffix - optional ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.users.invitations.InvitationListPage; import com.avara.models.viewer.users.invitations.InvitationListParams; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); InvitationListPage page = client.viewer().users().invitations().list(); } } ``` ## Retrieve `InvitationRetrieveResponse viewer().users().invitations().retrieve(InvitationRetrieveParamsparams = InvitationRetrieveParams.none(), RequestOptionsrequestOptions = RequestOptions.none())` **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 params` - `Optional invitationId` Unique invitation identifier. Format: inv_{32-hex-chars} ### Returns - `class InvitationRetrieveResponse:` A pending user invitation in the Viewer system - `boolean canManageStudies` Whether the invited user will have permission to manage studies - `String clinicId` UUID of the clinic this invitation belongs to - `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("Physician Assistant")` - `NURSE_PRACTITIONER("Nurse Practitioner")` - `REGISTERED_NURSE("Registered Nurse")` - `PATIENT_CARE_COORDINATOR("Patient Care Coordinator")` - `FRONT_DESK_OPERATOR("Front Desk Operator")` - `IMAGING_TECHNOLOGIST("Imaging Technologist")` - `PACS_ADMINISTRATOR("PACS Administrator")` - `SOFTWARE_ENGINEER("Software Engineer")` - `REVENUE_CYCLE_MANAGER("Revenue Cycle Manager")` - `ADMINISTRATIVE_DIRECTOR("Administrative Director")` - `ADMINISTRATIVE_ASSISTANT("Administrative Assistant")` - `OTHER("Other")` - `Optional createdAt` Timestamp when the invitation was created - `String email` Email address the invitation was sent to - `Optional expiry` When the invitation expires, null if no expiration - `String firstName` Invited user's first name - `boolean hasDashboardAccess` Whether the invited user will have dashboard access - `String invitationId` Unique invitation identifier. Format: inv_{32-hex-chars} - `InvitedSource invitedSource` How the invitation was created - 'dashboard' or 'api' - `DASHBOARD("dashboard")` - `API("api")` - `String inviterId` User ID of the person who sent the invitation. Format: usr_{32-hex-chars}. Null if invited via API - `String lastName` Invited user's last name - `Level level` Access level for the invited user. 'admin' or 'member' when created via API - `OWNER("owner")` - `ADMIN("admin")` - `MEMBER("member")` - `Status status` Invitation status: 'sent', 'accepted', 'rejected', or 'revoked' - `SENT("sent")` - `ACCEPTED("accepted")` - `REJECTED("rejected")` - `REVOKED("revoked")` - `Optional updatedAt` Timestamp when the invitation was last updated - `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 - `Optional invitedByApiKeyId` UUID of the API key used to send this invitation. Null if sent via dashboard - `Optional middleName` Invited user's middle name (optional) - `Optional phoneNumber` Invited user's phone number (optional) - `Optional suffix1` Name suffix (e.g., 'Jr.', 'MD') - optional - `Optional suffix2` Additional name suffix - optional ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.users.invitations.InvitationRetrieveParams; import com.avara.models.viewer.users.invitations.InvitationRetrieveResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); InvitationRetrieveResponse invitation = client.viewer().users().invitations().retrieve("inv_1234567890abcdef1234567890abcdef"); } } ``` ## Update `InvitationUpdateResponse viewer().users().invitations().update(InvitationUpdateParamsparams = InvitationUpdateParams.none(), RequestOptionsrequestOptions = RequestOptions.none())` **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 params` - `Optional invitationId` Unique invitation identifier. Format: inv_{32-hex-chars} - `Optional canManageStudies` - `Optional clinicRole` - `RADIOLOGIST("Radiologist")` - `CARDIOLOGIST("Cardiologist")` - `NEUROLOGIST("Neurologist")` - `UROLOGIST("Urologist")` - `GYNECOLOGIST("Gynecologist")` - `ENDOCRINOLOGIST("Endocrinologist")` - `DOCTOR("Doctor")` - `SURGEON("Surgeon")` - `PHYSICIAN("Physician")` - `PHYSICIAN_ASSISTANT("Physician Assistant")` - `NURSE_PRACTITIONER("Nurse Practitioner")` - `REGISTERED_NURSE("Registered Nurse")` - `PATIENT_CARE_COORDINATOR("Patient Care Coordinator")` - `FRONT_DESK_OPERATOR("Front Desk Operator")` - `IMAGING_TECHNOLOGIST("Imaging Technologist")` - `PACS_ADMINISTRATOR("PACS Administrator")` - `SOFTWARE_ENGINEER("Software Engineer")` - `REVENUE_CYCLE_MANAGER("Revenue Cycle Manager")` - `ADMINISTRATIVE_DIRECTOR("Administrative Director")` - `ADMINISTRATIVE_ASSISTANT("Administrative Assistant")` - `OTHER("Other")` - `Optional firstName` Invited user's first name - `Optional hasDashboardAccess` Whether the invited user will have dashboard access - `Optional lastName` Invited user's last name - `Optional level` - `ADMIN("admin")` - `MEMBER("member")` - `Optional middleName` - `Optional phoneNumber` - `Optional suffix1` - `Optional suffix2` ### Returns - `class InvitationUpdateResponse:` A pending user invitation in the Viewer system - `boolean canManageStudies` Whether the invited user will have permission to manage studies - `String clinicId` UUID of the clinic this invitation belongs to - `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("Physician Assistant")` - `NURSE_PRACTITIONER("Nurse Practitioner")` - `REGISTERED_NURSE("Registered Nurse")` - `PATIENT_CARE_COORDINATOR("Patient Care Coordinator")` - `FRONT_DESK_OPERATOR("Front Desk Operator")` - `IMAGING_TECHNOLOGIST("Imaging Technologist")` - `PACS_ADMINISTRATOR("PACS Administrator")` - `SOFTWARE_ENGINEER("Software Engineer")` - `REVENUE_CYCLE_MANAGER("Revenue Cycle Manager")` - `ADMINISTRATIVE_DIRECTOR("Administrative Director")` - `ADMINISTRATIVE_ASSISTANT("Administrative Assistant")` - `OTHER("Other")` - `Optional createdAt` Timestamp when the invitation was created - `String email` Email address the invitation was sent to - `Optional expiry` When the invitation expires, null if no expiration - `String firstName` Invited user's first name - `boolean hasDashboardAccess` Whether the invited user will have dashboard access - `String invitationId` Unique invitation identifier. Format: inv_{32-hex-chars} - `InvitedSource invitedSource` How the invitation was created - 'dashboard' or 'api' - `DASHBOARD("dashboard")` - `API("api")` - `String inviterId` User ID of the person who sent the invitation. Format: usr_{32-hex-chars}. Null if invited via API - `String lastName` Invited user's last name - `Level level` Access level for the invited user. 'admin' or 'member' when created via API - `OWNER("owner")` - `ADMIN("admin")` - `MEMBER("member")` - `Status status` Invitation status: 'sent', 'accepted', 'rejected', or 'revoked' - `SENT("sent")` - `ACCEPTED("accepted")` - `REJECTED("rejected")` - `REVOKED("revoked")` - `Optional updatedAt` Timestamp when the invitation was last updated - `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 - `Optional invitedByApiKeyId` UUID of the API key used to send this invitation. Null if sent via dashboard - `Optional middleName` Invited user's middle name (optional) - `Optional phoneNumber` Invited user's phone number (optional) - `Optional suffix1` Name suffix (e.g., 'Jr.', 'MD') - optional - `Optional suffix2` Additional name suffix - optional ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.users.invitations.InvitationUpdateParams; import com.avara.models.viewer.users.invitations.InvitationUpdateResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); InvitationUpdateResponse invitation = client.viewer().users().invitations().update("inv_1234567890abcdef1234567890abcdef"); } } ``` ## Revoke `InvitationRevokeResponse viewer().users().invitations().revoke(InvitationRevokeParamsparams = InvitationRevokeParams.none(), RequestOptionsrequestOptions = RequestOptions.none())` **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 params` - `Optional invitationId` Invitation ID to revoke. Format: inv_{32-hex-chars} - `Optional userId` User ID whose pending invitation to revoke. Format: usr_{32-hex-chars} ### Returns - `class InvitationRevokeResponse:` Response for revoking an invitation in Viewer - `boolean success` - `Optional message` ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.users.invitations.InvitationRevokeParams; import com.avara.models.viewer.users.invitations.InvitationRevokeResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); InvitationRevokeResponse response = client.viewer().users().invitations().revoke(); } } ```