# Viewer # Studies ## Create `StudyCreateResponse viewer().studies().create(StudyCreateParamsparams, RequestOptionsrequestOptions = RequestOptions.none())` **post** `/v1/viewer/studies` Creates a new study in the Viewer system with the specified DICOM Study Instance UID and metadata. The study can be optionally assigned to a user. ### Parameters - `StudyCreateParams params` - `Severity severity` Priority level of the study. 'normal' for routine, 'high' for urgent, 'stat' for immediate attention - `NORMAL("normal")` - `HIGH("high")` - `STAT("stat")` - `String studyDescription` Description of the study/scan (e.g., 'Brain MRI with Contrast', 'Chest CT') - `String studyInstanceUid` DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., '1.2.840.10008.5.1.4.1.1.2') - `Optional assignedTo` User ID to assign the study to. Format: usr_{32-hex-chars} - `Optional expressCustomerId` Express customer ID for the study. Format: cus_{32-hex-chars} - `Optional metadata` Custom key-value metadata for the study. Maximum 50 pairs, keys up to 100 chars, values up to 1000 chars ### Returns - `class StudyCreateResponse:` A study entity in the Viewer system with viewing status - `Optional cancelledAt` Timestamp when the study was cancelled, null if not cancelled - `Optional createdAt` Timestamp when the study was created - `boolean isCancelled` Whether the study has been cancelled - `Severity severity` Priority level of the study. 'normal' for routine, 'high' for urgent, 'stat' for immediate attention - `NORMAL("normal")` - `HIGH("high")` - `STAT("stat")` - `String studyDescription` Description of the study/scan (e.g., 'Brain MRI with Contrast', 'Chest CT') - `String studyId` Unique study identifier. Format: stu_{32-hex-chars} - `String studyInstanceUid` DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., '1.2.840.10008.5.1.4.1.1.2') - `StudyViewerStatus studyViewerStatus` - `INCOMPLETE("incomplete")` - `COMPLETE("complete")` - `Optional updatedAt` Timestamp when the study was last updated - `Optional assignedTo` A reference to a user with basic identifying information - `String email` User's email address - `String userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional firstName` User's first name - `Optional lastName` User's last name - `Optional middleName` User's middle name - `Optional suffix1` Name suffix (e.g., 'MD', 'Jr.') - `Optional suffix2` Additional name suffix - `Optional createdByApiKey` A reference to an API key with basic identifying information - `String apiKeyId` Unique API key identifier (UUIDv4 format) - `String description` Human-readable description of the API key - `Optional isViewerEnabled` Whether this API key has access to the Viewer product - `Optional createdByUser` A reference to a user with basic identifying information - `String email` User's email address - `String userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional firstName` User's first name - `Optional lastName` User's last name - `Optional middleName` User's middle name - `Optional suffix1` Name suffix (e.g., 'MD', 'Jr.') - `Optional suffix2` Additional name suffix - `Optional expressCustomer` A reference to an Express customer with basic identifying information - `String expressCustomerId` Unique Express customer identifier. Format: cus_{32-hex-chars} - `String expressCustomerName` Name of the Express customer - `Optional metadata` Custom key-value metadata for the study. Maximum 50 pairs, keys up to 100 chars, values up to 1000 chars ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.studies.StudyCreateParams; import com.avara.models.viewer.studies.StudyCreateResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); StudyCreateParams params = StudyCreateParams.builder() .severity(StudyCreateParams.Severity.HIGH) .studyDescription("CT Chest/Abdomen/Pelvis") .studyInstanceUid("1.2.840.113619.2.55.3.604688119.868.1234567890.123") .build(); StudyCreateResponse study = client.viewer().studies().create(params); } } ``` ## List `StudyListPage viewer().studies().list(StudyListParamsparams = StudyListParams.none(), RequestOptionsrequestOptions = RequestOptions.none())` **get** `/v1/viewer/studies` Retrieves a paginated list of studies with optional filtering by assignment, severity, description, cancellation status, and viewer status. Returns up to 100 studies per request. ### Parameters - `StudyListParams params` - `Optional assignedTo` Filter by assigned user ID (null = explicitly unassigned). Format: usr_<32-hex-chars> - `Optional cursor` Base64 encoded cursor from previous response - `Optional expressCustomerId` Filter by Express customer ID (null = studies with no customer). Format: cus_{32-hex-chars} - `Optional isCancelled` Filter by cancellation status - `Optional limit` Number of results to return (1-100) - `Optional severity` Filter by study severity - `NORMAL("normal")` - `HIGH("high")` - `STAT("stat")` - `Optional studyDescription` Filter by study description (contains match) - `Optional studyViewerStatus` Filter by study viewer status - `INCOMPLETE("incomplete")` - `COMPLETE("complete")` ### Returns - `class StudyListResponse:` A study entity in the Viewer system with viewing status - `Optional cancelledAt` Timestamp when the study was cancelled, null if not cancelled - `Optional createdAt` Timestamp when the study was created - `boolean isCancelled` Whether the study has been cancelled - `Severity severity` Priority level of the study. 'normal' for routine, 'high' for urgent, 'stat' for immediate attention - `NORMAL("normal")` - `HIGH("high")` - `STAT("stat")` - `String studyDescription` Description of the study/scan (e.g., 'Brain MRI with Contrast', 'Chest CT') - `String studyId` Unique study identifier. Format: stu_{32-hex-chars} - `String studyInstanceUid` DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., '1.2.840.10008.5.1.4.1.1.2') - `StudyViewerStatus studyViewerStatus` - `INCOMPLETE("incomplete")` - `COMPLETE("complete")` - `Optional updatedAt` Timestamp when the study was last updated - `Optional assignedTo` A reference to a user with basic identifying information - `String email` User's email address - `String userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional firstName` User's first name - `Optional lastName` User's last name - `Optional middleName` User's middle name - `Optional suffix1` Name suffix (e.g., 'MD', 'Jr.') - `Optional suffix2` Additional name suffix - `Optional createdByApiKey` A reference to an API key with basic identifying information - `String apiKeyId` Unique API key identifier (UUIDv4 format) - `String description` Human-readable description of the API key - `Optional isViewerEnabled` Whether this API key has access to the Viewer product - `Optional createdByUser` A reference to a user with basic identifying information - `String email` User's email address - `String userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional firstName` User's first name - `Optional lastName` User's last name - `Optional middleName` User's middle name - `Optional suffix1` Name suffix (e.g., 'MD', 'Jr.') - `Optional suffix2` Additional name suffix - `Optional expressCustomer` A reference to an Express customer with basic identifying information - `String expressCustomerId` Unique Express customer identifier. Format: cus_{32-hex-chars} - `String expressCustomerName` Name of the Express customer - `Optional metadata` Custom key-value metadata for the study. Maximum 50 pairs, keys up to 100 chars, values up to 1000 chars ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.studies.StudyListPage; import com.avara.models.viewer.studies.StudyListParams; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); StudyListPage page = client.viewer().studies().list(); } } ``` ## Retrieve `StudyRetrieveResponse viewer().studies().retrieve(StudyRetrieveParamsparams = StudyRetrieveParams.none(), RequestOptionsrequestOptions = RequestOptions.none())` **get** `/v1/viewer/studies/{studyId}` Retrieves a single study by its unique study ID. Returns the complete study object with all metadata and status information. ### Parameters - `StudyRetrieveParams params` - `Optional studyId` Unique study identifier. Format: stu_{32-hex-chars} ### Returns - `class StudyRetrieveResponse:` A study entity in the Viewer system with viewing status - `Optional cancelledAt` Timestamp when the study was cancelled, null if not cancelled - `Optional createdAt` Timestamp when the study was created - `boolean isCancelled` Whether the study has been cancelled - `Severity severity` Priority level of the study. 'normal' for routine, 'high' for urgent, 'stat' for immediate attention - `NORMAL("normal")` - `HIGH("high")` - `STAT("stat")` - `String studyDescription` Description of the study/scan (e.g., 'Brain MRI with Contrast', 'Chest CT') - `String studyId` Unique study identifier. Format: stu_{32-hex-chars} - `String studyInstanceUid` DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., '1.2.840.10008.5.1.4.1.1.2') - `StudyViewerStatus studyViewerStatus` - `INCOMPLETE("incomplete")` - `COMPLETE("complete")` - `Optional updatedAt` Timestamp when the study was last updated - `Optional assignedTo` A reference to a user with basic identifying information - `String email` User's email address - `String userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional firstName` User's first name - `Optional lastName` User's last name - `Optional middleName` User's middle name - `Optional suffix1` Name suffix (e.g., 'MD', 'Jr.') - `Optional suffix2` Additional name suffix - `Optional createdByApiKey` A reference to an API key with basic identifying information - `String apiKeyId` Unique API key identifier (UUIDv4 format) - `String description` Human-readable description of the API key - `Optional isViewerEnabled` Whether this API key has access to the Viewer product - `Optional createdByUser` A reference to a user with basic identifying information - `String email` User's email address - `String userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional firstName` User's first name - `Optional lastName` User's last name - `Optional middleName` User's middle name - `Optional suffix1` Name suffix (e.g., 'MD', 'Jr.') - `Optional suffix2` Additional name suffix - `Optional expressCustomer` A reference to an Express customer with basic identifying information - `String expressCustomerId` Unique Express customer identifier. Format: cus_{32-hex-chars} - `String expressCustomerName` Name of the Express customer - `Optional metadata` Custom key-value metadata for the study. Maximum 50 pairs, keys up to 100 chars, values up to 1000 chars ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.studies.StudyRetrieveParams; import com.avara.models.viewer.studies.StudyRetrieveResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); StudyRetrieveResponse study = client.viewer().studies().retrieve("stu_1234567890abcdef1234567890abcdef"); } } ``` ## Update `StudyUpdateResponse viewer().studies().update(StudyUpdateParamsparams = StudyUpdateParams.none(), RequestOptionsrequestOptions = RequestOptions.none())` **patch** `/v1/viewer/studies/{studyId}` Updates a study's properties including description, severity, assignment, organization, and metadata. All fields are optional - only provided fields will be updated. ### Parameters - `StudyUpdateParams params` - `Optional studyId` Unique study identifier. Format: stu_{32-hex-chars} - `Optional assignedTo` User ID to assign the study to, or null to unassign. Format: usr_{32-hex-chars} - `Optional metadata` - `Optional severity` Priority level of the study. 'normal' for routine, 'high' for urgent, 'stat' for immediate attention - `NORMAL("normal")` - `HIGH("high")` - `STAT("stat")` - `Optional studyDescription` Description of the study/scan (e.g., 'Brain MRI with Contrast', 'Chest CT') - `Optional studyViewerStatus` - `INCOMPLETE("incomplete")` - `COMPLETE("complete")` ### Returns - `class StudyUpdateResponse:` A study entity in the Viewer system with viewing status - `Optional cancelledAt` Timestamp when the study was cancelled, null if not cancelled - `Optional createdAt` Timestamp when the study was created - `boolean isCancelled` Whether the study has been cancelled - `Severity severity` Priority level of the study. 'normal' for routine, 'high' for urgent, 'stat' for immediate attention - `NORMAL("normal")` - `HIGH("high")` - `STAT("stat")` - `String studyDescription` Description of the study/scan (e.g., 'Brain MRI with Contrast', 'Chest CT') - `String studyId` Unique study identifier. Format: stu_{32-hex-chars} - `String studyInstanceUid` DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., '1.2.840.10008.5.1.4.1.1.2') - `StudyViewerStatus studyViewerStatus` - `INCOMPLETE("incomplete")` - `COMPLETE("complete")` - `Optional updatedAt` Timestamp when the study was last updated - `Optional assignedTo` A reference to a user with basic identifying information - `String email` User's email address - `String userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional firstName` User's first name - `Optional lastName` User's last name - `Optional middleName` User's middle name - `Optional suffix1` Name suffix (e.g., 'MD', 'Jr.') - `Optional suffix2` Additional name suffix - `Optional createdByApiKey` A reference to an API key with basic identifying information - `String apiKeyId` Unique API key identifier (UUIDv4 format) - `String description` Human-readable description of the API key - `Optional isViewerEnabled` Whether this API key has access to the Viewer product - `Optional createdByUser` A reference to a user with basic identifying information - `String email` User's email address - `String userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional firstName` User's first name - `Optional lastName` User's last name - `Optional middleName` User's middle name - `Optional suffix1` Name suffix (e.g., 'MD', 'Jr.') - `Optional suffix2` Additional name suffix - `Optional expressCustomer` A reference to an Express customer with basic identifying information - `String expressCustomerId` Unique Express customer identifier. Format: cus_{32-hex-chars} - `String expressCustomerName` Name of the Express customer - `Optional metadata` Custom key-value metadata for the study. Maximum 50 pairs, keys up to 100 chars, values up to 1000 chars ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.studies.StudyUpdateParams; import com.avara.models.viewer.studies.StudyUpdateResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); StudyUpdateResponse study = client.viewer().studies().update("stu_1234567890abcdef1234567890abcdef"); } } ``` ## Cancel `StudyCancelResponse viewer().studies().cancel(StudyCancelParamsparams = StudyCancelParams.none(), RequestOptionsrequestOptions = RequestOptions.none())` **post** `/v1/viewer/studies/cancel` Marks a study as cancelled. Cancelled studies are preserved but flagged as inactive. Can be identified by either study ID or DICOM Study Instance UID. ### Parameters - `StudyCancelParams params` - `Optional studyId` Unique study identifier. Format: stu_{32-hex-chars} - `Optional studyInstanceUid` DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., '1.2.840.10008.5.1.4.1.1.2') ### Returns - `class StudyCancelResponse:` Response for cancelling a study 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.studies.StudyCancelParams; import com.avara.models.viewer.studies.StudyCancelResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); StudyCancelResponse response = client.viewer().studies().cancel(); } } ``` ## Uncancel `StudyUncancelResponse viewer().studies().uncancel(StudyUncancelParamsparams = StudyUncancelParams.none(), RequestOptionsrequestOptions = RequestOptions.none())` **post** `/v1/viewer/studies/uncancel` Restores a cancelled study to active status. The study must have been previously cancelled. Can be identified by either study ID or DICOM Study Instance UID. ### Parameters - `StudyUncancelParams params` - `Optional studyId` Unique study identifier. Format: stu_{32-hex-chars} - `Optional studyInstanceUid` DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., '1.2.840.10008.5.1.4.1.1.2') ### Returns - `class StudyUncancelResponse:` Response for uncancelling a study 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.studies.StudyUncancelParams; import com.avara.models.viewer.studies.StudyUncancelResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); StudyUncancelResponse response = client.viewer().studies().uncancel(); } } ``` ## Reroute URL `StudyRerouteUrlResponse viewer().studies().rerouteUrl(StudyRerouteUrlParamsparams = StudyRerouteUrlParams.none(), RequestOptionsrequestOptions = RequestOptions.none())` **post** `/v1/viewer/studies/reroute-url` Generates a tokenized URL that redirects users directly to the Avara Viewer for the specified study. The URL includes authentication and is time-limited for security. ### Parameters - `StudyRerouteUrlParams params` - `Optional studyId` Unique study identifier. Format: stu_{32-hex-chars} - `Optional studyInstanceUid` DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., '1.2.840.10008.5.1.4.1.1.2') ### Returns - `class StudyRerouteUrlResponse:` Response containing the generated reroute URL for a study in Viewer - `String url` ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.studies.StudyRerouteUrlParams; import com.avara.models.viewer.studies.StudyRerouteUrlResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); StudyRerouteUrlResponse response = client.viewer().studies().rerouteUrl(); } } ``` ## Retrieve By Uid `StudyRetrieveByUidResponse viewer().studies().retrieveByUid(StudyRetrieveByUidParamsparams = StudyRetrieveByUidParams.none(), RequestOptionsrequestOptions = RequestOptions.none())` **get** `/v1/viewer/studies/by-uid/{studyInstanceUid}` Retrieves a single study by its DICOM Study Instance UID. This is useful when you have the DICOM UID but not the Avara study ID. ### Parameters - `StudyRetrieveByUidParams params` - `Optional studyInstanceUid` DICOM Study Instance UID. Format: numbers and dots (e.g., 1.2.840.10008.5.1.4.1.1.2). ### Returns - `class StudyRetrieveByUidResponse:` A study entity in the Viewer system with viewing status - `Optional cancelledAt` Timestamp when the study was cancelled, null if not cancelled - `Optional createdAt` Timestamp when the study was created - `boolean isCancelled` Whether the study has been cancelled - `Severity severity` Priority level of the study. 'normal' for routine, 'high' for urgent, 'stat' for immediate attention - `NORMAL("normal")` - `HIGH("high")` - `STAT("stat")` - `String studyDescription` Description of the study/scan (e.g., 'Brain MRI with Contrast', 'Chest CT') - `String studyId` Unique study identifier. Format: stu_{32-hex-chars} - `String studyInstanceUid` DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., '1.2.840.10008.5.1.4.1.1.2') - `StudyViewerStatus studyViewerStatus` - `INCOMPLETE("incomplete")` - `COMPLETE("complete")` - `Optional updatedAt` Timestamp when the study was last updated - `Optional assignedTo` A reference to a user with basic identifying information - `String email` User's email address - `String userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional firstName` User's first name - `Optional lastName` User's last name - `Optional middleName` User's middle name - `Optional suffix1` Name suffix (e.g., 'MD', 'Jr.') - `Optional suffix2` Additional name suffix - `Optional createdByApiKey` A reference to an API key with basic identifying information - `String apiKeyId` Unique API key identifier (UUIDv4 format) - `String description` Human-readable description of the API key - `Optional isViewerEnabled` Whether this API key has access to the Viewer product - `Optional createdByUser` A reference to a user with basic identifying information - `String email` User's email address - `String userId` Unique user identifier. Format: usr_{32-hex-chars} - `Optional firstName` User's first name - `Optional lastName` User's last name - `Optional middleName` User's middle name - `Optional suffix1` Name suffix (e.g., 'MD', 'Jr.') - `Optional suffix2` Additional name suffix - `Optional expressCustomer` A reference to an Express customer with basic identifying information - `String expressCustomerId` Unique Express customer identifier. Format: cus_{32-hex-chars} - `String expressCustomerName` Name of the Express customer - `Optional metadata` Custom key-value metadata for the study. Maximum 50 pairs, keys up to 100 chars, values up to 1000 chars ### Example ```java package com.avara.example; import com.avara.client.AvaraClient; import com.avara.client.okhttp.AvaraOkHttpClient; import com.avara.models.viewer.studies.StudyRetrieveByUidParams; import com.avara.models.viewer.studies.StudyRetrieveByUidResponse; public final class Main { private Main() {} public static void main(String[] args) { AvaraClient client = AvaraOkHttpClient.fromEnv(); StudyRetrieveByUidResponse response = client.viewer().studies().retrieveByUid("1.2.840.10008.5.1.4.1.1.2"); } } ``` # 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(); } } ```