Private/Get-RubrikAPIData.ps1
function Get-RubrikAPIData { [cmdletbinding(SupportsShouldProcess)] param( $endpoint ) <# .SYNOPSIS Helper function to retrieve API data from Rubrik .DESCRIPTION Function which defines the structure of each cmdlet's API request and response based on the software version the connected Rubrik cluster. #> $api = @{ Example = @{ '1.0' = @{ Description = 'Details about the API endpoint' URI = 'The URI expressed as /api/v#/endpoint' Method = 'Method to use against the endpoint' Body = 'Parameters to use in the body' Query = 'Parameters to use in the URI query' Result = 'If the result content is stored in a higher level key, express it here to be unwrapped in the return' Filter = 'If the result content needs to be filtered based on key names, express them here' Success = 'The expected HTTP status code for a successful call' } } 'Connect-Rubrik' = @{ '3.0' = @{ Description = 'Create a new login session' URI = '/api/v1/session' Method = 'Post' Body = '' Query = @{ organization_id = 'organization_id' } Result = '' Filter = '' Success = '200' } } 'Disconnect-Rubrik' = @{ '1.0' = @{ Description = 'Closes a user session and invalidates the session token' URI = '/api/v1/session/{id}' Method = 'Delete' Body = '' Query = '' Result = '' Filter = '' Success = '204' } } 'Export-RubrikDatabase' = @{ '1.0' = @{ Description = 'Export MSSQL Database from Rubrik to Destination Instance.' URI = '/api/v1/mssql/db/{id}/export' Method = 'Post' Body = @{ targetInstanceId = 'targetInstanceId' targetDatabaseName = 'targetDatabaseName' recoveryPoint = @{ lsnPoint = @{lsn='lsn'} timestampMs = 'timestampMs' } finishRecovery = 'finishRecovery' maxDataStreams = 'maxDataStreams' targetDataFilePath = 'targetDataFilePath' targetLogFilePath = 'targetLogFilePath' } Query = '' Result = '' Filter = '' Success = '202' } } 'Export-RubrikVM' = @{ '1.0' = @{ Description = 'Export a VMware VM to an existing vSphere environment' URI = '/api/v1/vmware/vm/snapshot/{id}/export' Method = 'Post' Body = @{ vmName = 'vmName' disableNetwork = 'disableNetwork' removeNetworkDevices = 'removeNetworkDevices' powerOn = 'powerOn' hostId = 'hostId' datastoreId = 'datastoreId' shouldRecoverTags = 'shouldRecoverTags' keepMacAddresses = 'keepMacAddresses' } Query = '' Result = '' Filter = '' Success = '202' } } 'Export-RubrikReport' = @{ '1.0' = @{ Description = 'Get the link to a CSV file for a report.' URI = '/api/internal/report/{id}/download_csv' Method = 'Get' Body = '' Query = @{ timezone_offset = 'timezone_offset' } Result = 'data' Filter = '' Success = '200' } '4.1' = @{ Description = 'Get the link to a CSV file for a report.' URI = '/api/internal/report/{id}/csv_link' Method = 'Get' Body = '' Query = @{ timezone_offset = 'timezone_offset' } Result = 'data' Filter = '' Success = '200' } } 'Export-RubrikVApp' = @{ '1.0' = @{ Description = 'Exports a given snapshot for a vCD vApp' URI = '/api/internal/vcd/vapp/snapshot/{id}/export' Method = 'Post' Body = @{ exportMode = 'exportMode' networksToRestore = [System.Collections.ArrayList]@() vmsToExport = @( @{ name = 'name' vcdMoid = 'vcdMoid' networkConnections = @{ nicIndex = 'nicIndex' addressingMode = 'addressingMode' ipAddress = 'ipAddress' isConnected = 'isConnected' vappNetworkName = 'vappNetworkName' } } ) shouldPowerOnVmsAfterRecovery = 'shouldPowerOnVmsAfterRecovery' newVappParams = @{ name = 'name' orgVdcId = 'orgVdcId' } } Query = '' Result = '' Filter = '' Success = '202' } } 'Export-RubrikVcdTemplate' = @{ '1.0' = @{ Description = 'Exports a given vCD template' URI = '/api/v1/vcd/vapp/template/snapshot/{id}/export' Method = 'Post' Body = @{ name = 'name' catalogId = 'catalogId' orgVdcId = 'orgVdcId' storagePolicyId = 'storagePolicyId' } Query = '' Result = '' Filter = '' Success = '202' } } 'Get-RubrikAPIToken' = @{ '5.0' = @{ Description = 'Retrieves list of generated API tokens from the Rubrik cluster' URI = '/api/internal/session' Method = 'Get' Body = '' Query = @{ user_id = 'user_id' } Result = 'data' Filter = @{ 'tag' = 'tag' 'organizationId' = 'organizationId' } Success = '200' ObjectTName = 'Rubrik.APIToken' } } 'Get-RubrikAPIVersion' = @{ '1.0' = @{ Description = 'Retrieves software version of the Rubrik cluster' URI = '/api/v1/cluster/{id}/api_version' Method = 'Get' Body = '' Query = '' Result = 'apiVersion' Filter = '' Success = '200' } } 'Get-RubrikArchive' = @{ '1.0' = @{ Description = 'Retrieves software version of the Rubrik cluster' URI = '/api/internal/archive/location' Method = 'Get' Body = '' Query = @{ 'ArchiveType' = 'location_type' } Result = 'data' Filter = @{ 'name' = 'name' 'id' = 'id' } Success = '200' ObjectTName = 'Rubrik.Archive' } } 'Get-RubrikAvailabilityGroup' = @{ '1.0' = @{ Description = 'Get summary information for Microsoft SQL availability groups' URI = '/api/internal/mssql/availability_group' Method = 'Get' Body = '' Query = @{ primary_database_id = 'primary_database_id' } Result = 'data' Filter = @{ 'GroupName' = 'name' 'SLA' = 'effectiveSlaDomainName' 'SLAID' = 'effectiveSlaDomainId' } Success = '200' ObjectTName = 'Rubrik.AvailabilityGroup' } } 'Get-RubrikBlackout' = @{ '1.0' = @{ Description = 'Whether global blackout window is active.' URI = '/api/internal/blackout_window' Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } '5.1' = @{ Description = 'Whether global blackout window is active.' URI = '/api/v1/blackout_window' Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Get-RubrikClusterInfo' = @{ '4.2' = @{ Description = 'Retrieves advanced settings of the Rubrik cluster' URI = @{ BrikCount = '/api/internal/cluster/me/brik_count' MemoryCapacityInGb = '/api/internal/cluster/me/memory_capacity' CPUCoresCount = '/api/internal/node/*/cpu_cores_count' ConnectedToPolaris = '/api/internal/cluster/me/global_manager' NodeCount = '/api/internal/cluster/me/node' HasTPM = '/api/internal/cluster/me/has_tpm' IsEncrypted = '/api/internal/cluster/me/is_encrypted' IsHardwareEncrypted = '/api/internal/cluster/me/is_hardware_encrypted' IsOnCloud = '/api/internal/cluster/me/is_on_cloud' IsRegistered = '/api/internal/cluster/me/is_registered' IsSingleNode = '/api/internal/cluster/me/is_single_node' Platform = '/api/internal/cluster/me/platforminfo' GeneralInfo = '/api/v1/cluster/me' Status = '/api/internal/cluster/me/system_status' } Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } '5.0' = @{ Description = 'Retrieves advanced settings of the Rubrik cluster' URI = @{ BrikCount = '/api/internal/cluster/me/brik_count' MemoryCapacityInGb = '/api/internal/cluster/me/memory_capacity' CPUCoresCount = '/api/internal/node/*/cpu_cores_count' ConnectedToPolaris = '/api/internal/cluster/me/global_manager' NodeCount = '/api/internal/cluster/me/node' HasTPM = '/api/internal/cluster/me/has_tpm' OnlyAzureSupport = '/api/internal/cluster/me/is_azure_cloud_only' IsEncrypted = '/api/internal/cluster/me/is_encrypted' IsHardwareEncrypted = '/api/internal/cluster/me/is_hardware_encrypted' IsOnCloud = '/api/internal/cluster/me/is_on_cloud' IsRegistered = '/api/internal/cluster/me/is_registered' IsSingleNode = '/api/internal/cluster/me/is_single_node' Platform = '/api/internal/cluster/me/platforminfo' GeneralInfo = '/api/v1/cluster/me' Status = '/api/internal/cluster/me/system_status' } Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Get-RubrikClusterNetworkInterface' = @{ '1.0' = @{ Description = 'Returns details of the network interfaces configured on nodes within the Rubrik cluster' URI = '/api/internal/cluster/me/network_interface' Method = 'Get' Body = '' Query = @{ interface = 'interface' } Result = 'data' Filter = @{ 'Node' = 'node' } Success = '200' } } 'Get-RubrikClusterStorage' = @{ '4.2' = @{ Description = 'Retrieves advanced settings of the Rubrik cluster' URI = @{ StorageOverview = '/api/internal/stats/system_storage' DiskCapacityInTb = '/api/internal/cluster/me/disk_capacity' FlashCapacityInTb = '/api/internal/cluster/me/flash_capacity' CloudStorage = '/api/internal/stats/cloud_storage' LocalStorageIngested = '/api/internal/stats/snapshot_storage/ingested' DailyGrowth = '/api/internal/report/summary/average_local_growth_per_day' } Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } '5.0' = @{ Description = 'Retrieves advanced settings of the Rubrik cluster' URI = @{ StorageOverview = '/api/internal/stats/system_storage' DiskCapacityInTb = '/api/internal/cluster/me/disk_capacity' FlashCapacityInTb = '/api/internal/cluster/me/flash_capacity' CloudStorage = '/api/internal/stats/cloud_storage/physical' CloudStorageIngested = '/api/internal/stats/cloud_storage/ingested' LocalStorageIngested = '/api/internal/stats/snapshot_storage/ingested' DailyGrowth = '/api/internal/report/summary/average_local_growth_per_day' } Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } '5.2' = @{ Description = 'Retrieves advanced settings of the Rubrik cluster' URI = @{ StorageOverview = '/api/internal/stats/system_storage' DiskCapacityInTb = '/api/internal/cluster/me/disk_capacity' FlashCapacityInTb = '/api/internal/cluster/me/flash_capacity' CloudStorage = '/api/internal/stats/cloud_storage/physical' CloudStorageIngested = '/api/internal/stats/cloud_storage/ingested' LocalStorageIngested = '/api/internal/stats/snapshot_storage/ingested' DailyGrowth = '/api/internal/stats/average_storage_growth_per_day' } Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Get-RubrikBackupServiceDeployment' = @{ '1.0' = @{ Description = 'Retrieve the global settings for automatic deployment of the Rubrik Backup Service to virtual machines.' URI = '/api/internal/vmware/agent' Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Get-RubrikDatabase' = @{ '1.0' = @{ Description = 'Returns a list of summary information for Microsoft SQL databases.' URI = '/api/v1/mssql/db' Method = 'Get' Body = '' Query = @{ instance_id = 'instance_id' effective_sla_domain_id = 'effective_sla_domain_id' primary_cluster_id = 'primary_cluster_id' is_relic = 'is_relic' availability_group_id = 'availability_group_id' } Result = 'data' Filter = @{ 'Name' = 'name' 'SLA' = 'effectiveSlaDomainName' 'Hostname' = 'rootProperties.rootName' 'Instance' = 'instanceName' 'AvailabilityGroupID' = 'availabilityGroupId' } Success = '200' ObjectTName = 'Rubrik.MSSQLDatabase' } } 'Get-RubrikDatabaseFiles' = @{ '1.0' = @{ Description = 'Returns a list of files for the database.' URI = '/api/internal/mssql/db/{id}/restore_files' Method = 'Get' Body = '' Query = @{ time = 'time' } Result = '' Filter = '' Success = '200' ObjectTName = 'Rubrik.MSSQLDatabaseFiles' } } 'Get-RubrikDatabaseMount' = @{ '1.0' = @{ Description = 'Retrieve information for all live mounts for databases' URI = '/api/v1/mssql/db/mount' Method = 'Get' Body = '' Query = @{ source_database_id = 'source_database_id' source_database_name = 'source_database_name' target_instance_id = 'target_instance_id' mounted_database_name = 'mounted_database_name' offset = 'offset' limit = 'limit' } Result = 'data' Filter = '' Success = '200' ObjectTName = 'Rubrik.MSSQLDatabaseMount' } } 'Get-RubrikDatabaseRecoverableRange' = @{ '1.0' = @{ Description = 'Returns a list of summary information for Microsoft SQL databases.' URI = '/api/v1/mssql/db/{id}/recoverable_range' Method = 'Get' Body = '' Query = @{ before_time = 'before_time' after_time = 'after_time' } Result = 'data' Filter = '' Success = '200' } } 'Get-RubrikDNSSetting' = @{ '1.0' = @{ Description = 'Retrieves DNS settings of the Rubrik cluster' URI = @{ DNSServers = '/api/internal/cluster/me/dns_nameserver' DNSSearchDomain = '/api/internal/cluster/me/dns_search_domain' } Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Get-RubrikEmailSetting' = @{ '1.0' = @{ Description = 'Returns details of the configured email settings within the Rubrik cluster' URI = '/api/internal/smtp_instance' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = '' Success = '200' } } 'Get-RubrikEvent' = @{ '1.0' = @{ Description = 'Retrieve information for the latest of related events that match the value specified in any of the following categories: type, status, or ID, and limit events by date.' URI = '/api/internal/event' Method = 'Get' Body = '' Query = @{ limit = 'limit' after_id = 'after_id' event_series_id = 'event_series_id' status = 'status' event_type = 'event_type' object_ids = 'object_ids' object_name = 'object_name' before_date = 'before_date' after_date = 'after_date' object_type = 'object_type' show_only_latest = 'show_only_latest' filter_only_on_latest = 'filter_only_on_latest' } Result = 'data' Filter = '' Success = '200' ObjectTName = 'Rubrik.Event' } '5.2' = @{ Description = 'Retrieve information for the latest of related events that match the value specified in any of the following categories: type, status, or ID, and limit events by date.' URI = '/api/v1/event/latest' Method = 'Get' Body = '' Query = @{ limit = 'limit' after_id = 'after_id' event_series_id = 'event_series_id' event_status = 'event_status' event_series_status = 'event_series_status' event_type = 'event_type' object_ids = 'object_ids' object_name = 'object_name' before_date = 'before_date' after_date = 'after_date' object_type = 'object_type' order_by_time = 'order_by_time' should_include_event_series = 'should_include_event_series' } Result = 'data' Filter = '' Success = '200' ObjectTName = 'Rubrik.Event.5.2' } } 'Get-RubrikEventSeries' = @{ '5.0' = @{ Description = 'Retrieve information for event series within Rubrik.' URI = '/api/internal/event_series' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = '' Success = '200' ObjectTName = 'Rubrik.EventSeries' } '5.2' = @{ Description = 'Retrieve information for event series within Rubrik.' URI = '/api/v1/event_series/{id}' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = '' Success = '200' ObjectTName = 'Rubrik.EventSeries.5.2' } } 'Get-RubrikFileset' = @{ '1.0' = @{ Description = 'Retrieve summary information for each fileset. Optionally, filter the retrieved information.' URI = '/api/v1/fileset' Method = 'Get' Body = '' Query = @{ primary_cluster_id = 'primary_cluster_id' host_id = 'host_id' is_relic = 'is_relic' effective_sla_domain_id = 'effective_sla_domain_id' template_id = 'template_id' limit = 'limit' offset = 'offset' cached = 'cached' name = 'name' host_name = 'host_name' share_id = 'share_id' } Result = 'data' Filter = @{ 'SLA' = 'effectiveSlaDomainName' } Success = '200' ObjectTName = 'Rubrik.Fileset' } } 'Get-RubrikFilesetTemplate' = @{ '1.0' = @{ Description = 'Retrieve summary information for all fileset templates, including: ID and name of the fileset template, fileset template creation timestamp, array of the included filepaths, array of the excluded filepaths.' URI = '/api/v1/fileset_template' Method = 'Get' Body = '' Query = @{ primary_cluster_id = 'primary_cluster_id' operating_system_type = 'operating_system_type' name = 'name' share_type = 'share_type' } Result = 'data' Filter = '' Success = '200' ObjectTName = 'Rubrik.FilesetTemplate' } } 'Get-RubrikGuestOsCredential' = @{ '1.0' = @{ Description = 'Returns the known guest os credentials from Rubrik' URI = '/api/internal/vmware/guest_credential' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = @{ Username = 'username' Domain = 'domain' } Success = '200' } } 'Get-RubrikHost' = @{ '1.0' = @{ Description = 'Retrieve summary information for all hosts that are registered with a Rubrik cluster' URI = '/api/v1/host' Method = 'Get' Body = '' Query = @{ operating_system_type = 'operating_system_type' primary_cluster_id = 'primary_cluster_id' hostname = 'hostname' name = 'name' } Result = 'data' Filter = @{ Name = 'name' } Success = '200' ObjectTName = 'Rubrik.Host' } } 'Get-RubrikHyperVHost' = @{ '1.0' = @{ Description = 'Retrieves all HyperV hosts known to the Rubrik cluster' URI = '/api/internal/hyperv/host' Method = 'Get' Body = '' Query = @{ primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'name' = 'name' } Success = '200' ObjectTName = 'Rubrik.HyperVHost' } } 'Get-RubrikHyperVMount' = @{ '1.0' = @{ Description = 'Retrieve information for all HyperV live mounts' URI = '/api/internal/hyperv/vm/snapshot/mount' Method = 'Get' Body = '' Query = @{ vm_id = 'vm_id' offset = 'offset' limit = 'limit' } Result = 'data' Filter = @{ id = 'id' vmId = 'vmId' } Success = '200' } } 'Get-RubrikHyperVVM' = @{ '1.0' = @{ Description = 'Get summary of all HyperV VMs' URI = '/api/internal/hyperv/vm' Method = 'Get' Body = '' Query = @{ is_relic = 'is_relic' name = 'name' effective_sla_domain_id = 'effective_sla_domain_id' sla_assignment = 'sla_assignment' primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' 'SLA' = 'effectiveSlaDomainName' } Success = '200' ObjectTName = 'Rubrik.HyperVVM' } } 'Get-RubrikIPMI' = @{ '1.0' = @{ Description = 'Retrieve the configured IPMI settings within the Rubrik Cluster' URI = '/api/internal/cluster/me/ipmi' Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Get-RubrikLDAP' = @{ '1.0' = @{ Description = 'Retrieves all LDAP settings of the Rubrik cluster' URI = '/api/v1/ldap_service' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = @{ DomainType = 'domainType' ID = 'id' InitialRefreshStatus = 'initialRefreshStatus' Name = 'name' } Success = '200' ObjectTName = 'Rubrik.LDAP' } } 'Get-RubrikLoginBanner' = @{ '5.0' = @{ Description = 'Retrieves the Login Banner text of the Rubrik Cluster' URI = '/api/internal/cluster/me/login_banner' Method = 'Get' Body = '' Query = '' Result = '' Filter = '''' Success = '200' } } 'Get-RubrikUser' = @{ '1.0' = @{ Description = 'Retrieves settings related to a given user within the Rubrik cluster' URI = '/api/internal/user' Method = 'Get' Body = '' Query = @{ username = 'username' auth_domain_id = 'auth_domain_id' } Result = '' Filter = '' Success = '200' ObjectTName = 'Rubrik.User' } '5.3' = @{ Description = 'Retrieves settings related to a given user within the Rubrik cluster' URI = '/api/v1/principal' Method = 'Get' Body = '' Query = @{ name = 'name' auth_domain_id = 'auth_domain_id' principal_type = 'principal_type' } Result = 'data' Filter = '' Success = '200' ObjectTName = 'Rubrik.User' } } 'Get-RubrikUserRole' = @{ '1.0' = @{ Description = 'Retrieves settings related to a given users role and authorization within the Rubrik cluster' URI = '/api/internal/authorization' Method = 'Get' Body = '' Query = @{ principals = 'principals' } Result = 'Data' Filter = '' Success = '200' } } 'Get-RubrikManagedVolume' = @{ '1.0' = @{ Description = 'Returns a list of summary information for Rubrik Managed Volumes' URI = '/api/internal/managed_volume' Method = 'Get' Body = '' Query = @{ effective_sla_domain_id = 'effective_sla_domain_id' primary_cluster_id = 'primary_cluster_id' is_relic = 'is_relic' } Result = 'data' Filter = @{ 'Name' = 'name' 'SLA' = 'effectiveSlaDomainName' } Success = '200' ObjectTName = 'Rubrik.ManagedVolume' } } 'Get-RubrikManagedVolumeExport' = @{ '1.0' = @{ Description = 'Returns a list of summary information for Rubrik Managed Volume Exports' URI = '/api/internal/managed_volume/snapshot/export' Method = 'Get' Body = '' Query = @{ source_managed_volume_id = 'source_managed_volume_id' source_managed_volume_name = 'source_managed_volume_name' } Result = 'data' Filter = @{ SourceManagedVolumeID = 'SourceManagedVolumeID' SourceManagedVolumeName = 'SourceManagedVolumeName' } Success = '200' } } 'Get-RubrikMount' = @{ '1.0' = @{ Description = 'Retrieve information for all live mounts' URI = '/api/v1/vmware/vm/snapshot/mount' Method = 'Get' Body = '' Query = @{ vm_id = 'vm_id' offset = 'offset' limit = 'limit' } Result = 'data' Filter = @{ id = 'id' vmId = 'vmId' } Success = '200' ObjectTName = 'Rubrik.VMwareVmMount' } } 'Get-RubrikNASShare' = @{ '1.0' = @{ Description = 'Retrieve information NAS Shares' URI = '/api/internal/host/share' Method = 'Get' Body = '' Query = @{ host_id = 'host_id' share_type = 'share_type' primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ hostName = 'hostName' exportPoint = 'exportPoint' } Success = '200' ObjectTName = 'Rubrik.NASShare' } } 'Get-RubrikNetworkThrottle' = @{ '1.0' = @{ Description = 'Retrieve information network throttling within the Rubrik Cluster' URI = '/api/internal/network_throttle' Method = 'Get' Body = '' Query = @{ 'resource_id' = 'resource_id' } Result = 'data' Filter = '' Success = '200' } } 'Get-RubrikNFSArchive' = @{ '1.0' = @{ Description = 'Retrieves a list of NFS archives from the Rubrik cluster' URI = '/api/internal/archive/nfs' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = @{ name = 'definition.Name' } Success = '200' ObjectTName = 'Rubrik.ArchiveDetailed' } } 'Get-RubrikNode' = @{ '1.0' = @{ Description = 'Retrieve information on nodes within the Rubrik Cluster' URI = '/api/internal/cluster/{id}/node' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = '' Success = '200' } } 'Get-RubrikNotificationSetting' = @{ '5.0' = @{ Description = 'Returns details of the configured notification settings within the Rubrik cluster' URI = '/api/internal/notification_setting' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = '' Success = '200' } } 'Get-RubrikNTPServer' = @{ '1.0' = @{ Description = 'Returns details of the configured NTP servers within the Rubrik cluster' URI = '/api/internal/cluster/me/ntp_server' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = '' Success = '200' } } 'Get-RubrikNutanixCluster' = @{ '1.0' = @{ Description = 'Get summary of all Nutanix Clusters' URI = '/api/internal/nutanix/cluster' Method = 'Get' Body = '' Query = @{ should_get_status = 'should_get_status' primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' 'Hostname' = 'hostname' } Success = '200' ObjectTName = 'Rubrik.NutanixCluster' } } 'Get-RubrikNutanixVM' = @{ '1.0' = @{ Description = 'Get summary of all Nutanix VMs' URI = '/api/internal/nutanix/vm' Method = 'Get' Body = '' Query = @{ is_relic = 'is_relic' name = 'name' effective_sla_domain_id = 'effective_sla_domain_id' sla_assignment = 'sla_assignment' primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' 'SLA' = 'effectiveSlaDomainName' } Success = '200' ObjectTName = 'Rubrik.NutanixVM' } } 'Get-RubrikObjectStoreArchive' = @{ '1.0' = @{ Description = 'Retrieves a list of object store archives from the Rubrik cluster' URI = '/api/internal/archive/object_store' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = @{ name = 'definition.Name' } Success = '200' ObjectTName = 'Rubrik.ArchiveDetailed' } } 'Get-RubrikOracleDB' = @{ '1.0' = @{ Description = 'Get summary of all the Oracle DBs' URI = '/api/internal/oracle/db' Method = 'Get' Body = '' Query = @{ is_relic = 'is_relic' is_live_mount = 'is_live_mount' name = 'name' effective_sla_domain_id = 'effective_sla_domain_id' sla_assignment = 'sla_assignment' primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' 'SLA' = 'effectiveSlaDomainName' } Success = '200' ObjectTName = 'Rubrik.OracleDatabase' } } 'Get-RubrikOrganization' = @{ '1.0' = @{ Description = 'Get summary of all Rubrik organizations' URI = '/api/internal/organization' Method = 'Get' Body = '' Query = @{ is_global = 'is_global' name = 'name' } Result = 'data' Filter = @{ 'name' = 'name' } Success = '200' } } 'Get-RubrikOrgAuthorization' = @{ '1.0' = @{ Description = 'Gets the current list of explicit authorizations for the organization role' URI = '/api/internal/authorization/role/organization' Method = 'Get' Body = '' Query = @{ principals = 'principals' organization_id = 'organization_id' } Result = 'data' Filter = '' Success = '200' ObjectTName = 'Rubrik.OrgAuthorization' } } 'Get-RubrikProxySetting' = @{ '1.0' = @{ Description = 'Get Rubrik Node Proxy Configuration' URI = '/api/internal/node_management/proxy_config' Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' ObjectTName = 'Rubrik.ProxySetting' } } 'Get-RubrikQstarArchive' = @{ '1.0' = @{ Description = 'Retrieves a list of Qstar archives from the Rubrik cluster' URI = '/api/internal/archive/qstar' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = @{ name = 'definition.Name' } Success = '200' ObjectTName = 'Rubrik.ArchiveDetailed' } } 'Get-RubrikReplicationSource' = @{ '1.0' = @{ Description = 'Get summaries for all replication sources' URI = '/api/internal/replication/source' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = @{ sourceClusterName = 'sourceClusterName' } Success = '200' } } 'Get-RubrikReplicationTarget' = @{ '1.0' = @{ Description = 'Get summaries for all replication targets' URI = '/api/internal/replication/target' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = @{ targetClusterName = 'targetClusterName' } Success = '200' } } 'Get-RubrikReport' = @{ '1.0' = @{ Description = 'Retrieve summary information for each report.' URI = '/api/internal/report' Method = 'Get' Body = '' Query = @{ report_type = 'report_type' search_text = 'search_text' } Result = 'data' Filter = '' Success = '200' ObjectTName = 'Rubrik.Report' } '4.1' = @{ Description = 'Retrieve summary information for each report.' URI = '/api/internal/report' Method = 'Get' Body = '' Query = @{ report_type = 'report_type' search_text = 'name' } Result = 'data' Filter = '' Success = '200' ObjectTName = 'Rubrik.Report' } } 'Get-RubrikReportData' = @{ '1.0' = @{ Description = 'Retrieve table data for a specific report' URI = '/api/internal/report/{id}/table' Method = 'Get' Body = '' Query = @{ search_value = 'search_value' sla_domain_id = 'sla_domain_id' task_type = 'task_type' task_status = 'task_status' object_type = 'object_type' compliance_status = 'compliance_status' cluster_location = 'cluster_location' } Result = '' Filter = '' Success = '200' } '4.1' = @{ Description = 'Retrieve table data for a specific report' URI = '/api/internal/report/{id}/table' Method = 'Post' Body = @{ limit = 'limit' sortBy = 'sortBy' sortOrder = 'sortOrder' search_value = 'objectName' cursor = 'cursor' requestFilters = @{ sla_domain_id = 'slaDomain' task_type = 'taskType' task_status = 'taskStatus' object_type = 'objectType' compliance_status = 'complianceStatus' cluster_location = 'clusterLocation' } } Query = '' Result = '' Filter = '' Success = '200' } } 'Get-RubrikRequest' = @{ '1.0' = @{ Description = 'Get details about an async request.' URI = '/api/v1/{type}/request/{id}' Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Get-RubrikScvmm' = @{ '1.0' = @{ Description = 'Returns the known SCVMM servers from Rubrik' URI = '/api/internal/hyperv/scvmm' Method = 'Get' Body = '' Query = @{ primary_cluster_id = 'primary_cluster_id' sla_assignment = 'sla_assignment' effective_sla_domain_id = 'effective_sla_domain_id' } Result = 'data' Filter = @{ 'Name' = 'name' } Success = '200' ObjectTName = 'Rubrik.Scvmm' } } 'Get-RubrikSecurityClassification' = @{ '1.0' = @{ Description = 'Returns a the security classification settings from Rubrik' URI = '/api/internal/cluster/me/security_classification' Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Get-RubrikSetting' = @{ '1.0' = @{ Description = 'Retrieves all settings of the Rubrik cluster' URI = '/api/v1/cluster/{id}' Method = 'Get' Body = '' Query = '' Result = 'settings' Filter = '' Success = '200' } } 'Get-RubrikSLA' = @{ '1.0' = @{ Description = 'Retrieve summary information for all SLA Domains' URI = '/api/v1/sla_domain' Method = 'Get' Body = 'Parameters to use in the body' Query = @{ primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' } Success = '200' ObjectTName = 'Rubrik.SLADomainv1' } '5.0' = @{ Description = 'Retrieve summary information for all SLA Domains' URI = '/api/v2/sla_domain' Method = 'Get' Body = 'Parameters to use in the body' Query = @{ primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' } Success = '200' ObjectTName = 'Rubrik.SLADomain' } } 'Get-RubrikSmbDomain' = @{ '1.0' = @{ Description = 'Retrieve the configured SMB Domains within the Rubrik Cluster' URI = '/api/internal/smb/domain' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = @{ 'Name' = 'name' } Success = '200' } } 'Get-RubrikSmbSecurity' = @{ '1.0' = @{ Description = 'Retrieve the configured SMB security configuration within the Rubrik Cluster' URI = '/api/internal/smb/config' Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Get-RubrikSnapshot' = @{ '1.0' = @{ Description = 'Retrieve information for all snapshots' URI = @{ Fileset = '/api/v1/fileset/{id}/snapshot' MSSQL = '/api/v1/mssql/db/{id}/snapshot' VMware = '/api/v1/vmware/vm/{id}/snapshot' HyperV = '/api/internal/hyperv/vm/{id}/snapshot' ManagedVolume = '/api/internal/managed_volume/{id}/snapshot' Nutanix = '/api/internal/nutanix/vm/{id}/snapshot' VolumeGroup = '/api/internal/volume_group/{id}/snapshot' Oracle = '/api/internal/oracle/db/{id}/snapshot' VcdVapp = '/api/internal/vcd/vapp/{id}/snapshot' } Method = 'Get' Body = '' Query = '' Result = 'data' Filter = @{ 'CloudState' = 'cloudState' 'OnDemandSnapshot' = 'isOnDemandSnapshot' } Success = '200' } '5.3' = @{ Description = 'Retrieve information for all snapshots' URI = @{ Fileset = '/api/v1/fileset/{id}/snapshot' MSSQL = '/api/v1/mssql/db/{id}/snapshot' VMware = '/api/v1/vmware/vm/{id}/snapshot' HyperV = '/api/internal/hyperv/vm/{id}/snapshot' ManagedVolume = '/api/internal/managed_volume/{id}/snapshot' Nutanix = '/api/internal/nutanix/vm/{id}/snapshot' VolumeGroup = '/api/v1/volume_group/{id}/snapshot' Oracle = '/api/internal/oracle/db/{id}/snapshot' VcdVapp = '/api/internal/vcd/vapp/{id}/snapshot' } Method = 'Get' Body = '' Query = '' Result = 'data' Filter = @{ 'CloudState' = 'cloudState' 'OnDemandSnapshot' = 'isOnDemandSnapshot' } Success = '200' } } 'Get-RubrikSNMPSetting' = @{ '1.0' = @{ Description = 'Returns details of the configured SNMP settings within the Rubrik cluster' URI = '/api/internal/cluster/me/snmp_configuration' Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Get-RubrikSoftwareVersion' = @{ '1.0' = @{ Description = 'Retrieves software version of the Rubrik cluster' URI = '/api/v1/cluster/{id}/version' Method = 'Get' Body = '' Query = '' Result = 'version' Filter = '' Success = '200' } } 'Get-RubrikSQLInstance' = @{ '1.0' = @{ Description = 'Returns a list of summary information for Microsoft SQL instances.' URI = '/api/v1/mssql/instance' Method = 'Get' Body = '' Query = @{ instance_id = 'instance_id' primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' 'SLA' = 'configuredSlaDomainName' 'Hostname' = 'rootProperties.rootName' } Success = '200' ObjectTName = 'Rubrik.MSSQLInstance' } } 'Get-RubrikSupportTunnel' = @{ '1.0' = @{ Description = 'To be used by Admin to check status of the support tunnel.' URI = '/api/internal/node/me/support_tunnel' Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Get-RubrikSyslogServer' = @{ '1.0' = @{ Description = 'Retrieve the configured syslog servers within the Rubrik Cluster' URI = '/api/internal/syslog' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = @{ 'Name' = 'hostname' } Success = '200' } '5.2' = @{ Description = 'Retrieve the configured syslog servers within the Rubrik Cluster' URI = '/api/v1/syslog/export' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = @{ 'Name' = 'hostname' } Success = '200' } } 'Get-RubrikUnmanagedObject' = @{ '1.0' = @{ Description = 'Get summary of all the objects with unmanaged snapshots' URI = '/api/internal/unmanaged_object' Method = 'Get' Body = '' Query = @{ search_value = 'search_value' unmanaged_status = 'unmanaged_status' object_type = 'object_type' } Result = 'data' Filter = '' Success = '200' ObjectTName = 'Rubrik.UnmanagedObject' } } 'Get-RubrikVApp' = @{ '1.0' = @{ Description = 'Get summary of all the vCD vApps' URI = '/api/internal/vcd/vapp' Method = 'Get' Body = '' Query = @{ is_relic = 'is_relic' name = 'name' effective_sla_domain_id = 'effective_sla_domain_id' sla_assignment = 'sla_assignment' primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' 'SLA' = 'effectiveSlaDomainName' 'SourceObjectId' = 'effectiveSlaSourceObjectId' 'SourceObjectName' = 'effectiveSlaSourceObjectName' 'vcdClusterId' = 'vcdClusterId' 'vcdClusterName' = 'vcdClusterName' } Success = '200' ObjectTName = 'Rubrik.VCDvApp' } } 'Get-RubrikVAppExportOption' = @{ '1.0' = @{ Description = 'Retrieves export options for a vCD vApp' URI = '/api/internal/vcd/vapp/snapshot/{id}/export/options' Method = 'Get' Body = '' Query = @{ export_mode = 'export_mode' target_vapp_id = 'target_vapp_id' target_org_vdc_id = 'target_org_vdc_id' } Result = '' Filter = '' Success = '200' } } 'Get-RubrikVAppRecoverOption' = @{ '1.0' = @{ Description = 'Retrieves instant recovery options for a vCD vApp' URI = '/api/internal/vcd/vapp/snapshot/{id}/instant_recover/options' Method = 'Get' Body = '' Query = @{} Result = '' Filter = '' Success = '200' } } 'Get-RubrikVcdTemplateExportOption' = @{ '1.0' = @{ Description = 'Retrieves export options for a vCD Template' URI = '/api/v1/vcd/vapp/template/snapshot/{id}/export/options' Method = 'Get' Body = '' Query = @{ catalog_id = 'catalog_id' name = 'name' org_vdc_id = 'org_vdc_id' } Result = '' Filter = '' Success = '200' } } 'Get-RubrikVAppSnapshot' = @{ '1.0' = @{ Description = 'Retrieve information of a vCD vApp snapshot' URI = '/api/internal/vcd/vapp/snapshot/{id}' Method = 'Get' Body = '' Query = @{ id = 'id' } Result = 'data' Filter = '' Success = '200' } } 'Get-RubrikVCD' = @{ '1.0' = @{ Description = 'Retrieve summary information for all vCD cluster objects' URI = '/api/internal/vcd/cluster' Method = 'Get' Body = '' Query = @{ name = 'name' status = 'status' } Result = 'data' Filter = @{ 'Hostname' = 'hostname' } Success = '200' ObjectTName = 'Rubrik.VCDServer' } } 'Get-RubrikVCenter' = @{ '1.0' = @{ Description = 'Retrieves all vCenter settings of the Rubrik cluster' URI = '/api/v1/vmware/vcenter' Method = 'Get' Body = '' Query = @{ primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' } Success = '200' ObjectTName = 'Rubrik.vCenter' } } 'Get-RubrikVMwareCluster' = @{ '1.0' = @{ Description = 'Retrieves all VMware Cluster objects known to the Rubrik cluster' URI = '/api/internal/vmware/compute_cluster' Method = 'Get' Body = '' Query = @{ primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' } Success = '200' ObjectTName = 'Rubrik.VMwareCluster' } '5.1' = @{ Description = 'Retrieves all VMware Cluster objects known to the Rubrik cluster' URI = '/api/v1/vmware/compute_cluster' Method = 'Get' Body = '' Query = @{ primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' } Success = '200' ObjectTName = 'Rubrik.VMwareCluster' } } 'Get-RubrikVMwareDatacenter' = @{ '1.0' = @{ Description = 'Retrieves all VMware Datacenter objects known to the Rubrik cluster' URI = '/api/internal/vmware/data_center' Method = 'Get' Body = '' Query = @{ primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' } Success = '200' ObjectTName = 'Rubrik.VMwareDatacenter' } } 'Get-RubrikVMwareDatastore' = @{ '1.0' = @{ Description = 'Retrieves all datastores known to the Rubrik cluster' URI = '/api/internal/vmware/datastore' Method = 'Get' Body = '' Query = @{} Result = 'data' Filter = @{ 'Name' = 'name' 'dataStoreType' = 'dataStoreType' } Success = '200' ObjectTName = 'Rubrik.VMwareDatastore' } } 'Get-RubrikVMwareHost' = @{ '1.0' = @{ Description = 'Retrieves all ESXi hosts known to the Rubrik cluster' URI = '/api/v1/vmware/host' Method = 'Get' Body = '' Query = @{ primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' } Success = '200' ObjectTName = 'Rubrik.VMwareHost' } } 'Get-RubrikVersion' = @{ '1.0' = @{ Description = 'Retrieve public information about the Rubrik cluster' URI = '/api/v1/cluster/{id}' Method = 'Get' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Get-RubrikVM' = @{ '1.0' = @{ Description = 'Get summary of all the VMs' URI = '/api/v1/vmware/vm' Method = 'Get' Body = '' Query = @{ is_relic = 'is_relic' name = 'name' effective_sla_domain_id = 'effective_sla_domain_id' sla_assignment = 'sla_assignment' primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' 'SLA' = 'effectiveSlaDomainName' } Success = '200' ObjectTName = 'Rubrik.VMwareVM' } } 'Get-RubrikVolumeGroup' = @{ '1.0' = @{ Description = 'Get summary of all Volume Groups' URI = '/api/internal/volume_group' Method = 'Get' Body = '' Query = @{ is_relic = 'is_relic' name = 'name' hostname = 'hostname' effective_sla_domain_id = 'effective_sla_domain_id' sla_assignment = 'sla_assignment' primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' 'SLA' = 'effectiveSlaDomainName' 'hostname' = 'HostName' } Success = '200' ObjectTName = 'Rubrik.VolumeGroup' } '5.3' = @{ Description = 'Get summary of all Volume Groups' URI = '/api/v1/volume_group' Method = 'Get' Body = '' Query = @{ is_relic = 'is_relic' name = 'name' hostname = 'hostname' effective_sla_domain_id = 'effective_sla_domain_id' sla_assignment = 'sla_assignment' primary_cluster_id = 'primary_cluster_id' } Result = 'data' Filter = @{ 'Name' = 'name' 'SLA' = 'effectiveSlaDomainName' 'hostname' = 'HostName' } Success = '200' ObjectTName = 'Rubrik.VolumeGroup' } } 'Get-RubrikVgfAutoUpgrade' = @{ '5.3' = @{ Description = 'Retrieve the global Volume Group settings for backup format migration.' URI = '/api/internal/config/usersettable_volumeGroup' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = '' Success = '200' } } 'Get-RubrikVolumeGroupMount' = @{ '1.0' = @{ Description = 'Retrieve information for all Volume mounts' URI = '/api/internal/volume_group/snapshot/mount' Method = 'Get' Body = '' Query = @{ id = 'source_volume_group_id' source_host = 'source_host_name' offset = 'offset' limit = 'limit' } Result = 'data' Filter = '' Success = '200' } '5.3' = @{ Description = 'Retrieve information for all Volume mounts' URI = '/api/v1/volume_group/snapshot/mount' Method = 'Get' Body = '' Query = @{ id = 'source_volume_group_id' source_host = 'source_host_name' offset = 'offset' limit = 'limit' } Result = 'data' Filter = '' Success = '200' } } 'Get-RubrikVMSnapshot' = @{ '1.0' = @{ Description = 'Retrieve information of a VM snapshot' URI = '/api/v1/vmware/vm/snapshot/{id}' Method = 'Get' Body = '' Query = @{ id = 'id' } Result = 'data' Filter = '' Success = '200' } } 'Get-RubrikHostVolume' = @{ '1.0' = @{ Description = 'Retrieve summary information for all Volume Groups that belong to a Windows host' URI = '/api/internal/host/{id}/volume' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = '' Success = '200' } '5.3' = @{ Description = 'Retrieve summary information for all Volume Groups that belong to a Windows host' URI = '/api/v1/host/{id}/volume' Method = 'Get' Body = '' Query = '' Result = 'data' Filter = '' Success = '200' } } 'Invoke-RubrikVgfUpgrade' = @{ '5.3' = @{ Description = 'Update the forceFull property of a Volume Group.' URI = '/api/v1/volume_group/{id}' Method = 'Patch' Body = @{ forceFull = 'forceFull' } Query = '' Result = '' Filter = '' Success = '200' } } 'New-RubrikOrganization' = @{ '1.0' = @{ Description = 'Adds an organization to a Rubrik cluster' URI = '/api/internal/organization' Method = 'Post' Body = @{ name = "name" } Query = '' Result = '' Filter = '' Success = '201' } } 'New-RubrikVCenter' = @{ '1.0' = @{ Description = 'Create VMware vCenter connection' URI = '/api/v1/vmware/vcenter' Method = 'Post' Body = @{ hostname = "hostname" username = "username" password = "password" } Query = '' Result = '' Filter = '' Success = '202' } } 'New-RubrikVMDKMount' = @{ '1.0' = @{ Description = 'Create a VMDK mount request with given configuration' URI = '/api/internal/vmware/vm/snapshot/{id}/mount_disks' Method = 'Post' Body = @{ targetVmId = 'targetVmId' vmdkIds = @{} vlan = 'vlan' createNewScsiController = 'createNewScsiController' } Query = '' Result = '' Filter = '' Success = '202' } } 'New-RubrikVolumeGroupMount' = @{ '1.0' = @{ Description = 'Create a Volume Group mount request with given configuration' URI = '/api/internal/volume_group/snapshot/{id}/mount' Method = 'Post' Body = @{ targetHostId = 'targetHostId' smbValidUsers = 'smbValidUsers' volumeConfigs = @{ volumeId = 'volumeId' mountPointOnHost = 'mountPointOnHost' } } Query = '' Result = '' Filter = '' Success = '202' } } 'Remove-RubrikVolumeGroupMount' = @{ '1.0' = @{ Description = 'Create a request to delete a mounted Volume Group' URI = '/api/internal/volume_group/snapshot/mount/{id}' Method = 'Delete' Body = '' Query = @{ force = 'force' } Result = '' Filter = '' Success = '204' } } 'New-RubrikAPIToken' = @{ '5.0' = @{ Description = 'Create an API Token' URI = '/api/internal/session' Method = 'Post' Body = '' Query = '' Result = 'session' Filter = '' Success = '200' } } 'New-RubrikDatabaseMount' = @{ '1.0' = @{ Description = 'Create a live mount request with given configuration' URI = '/api/v1/mssql/db/{id}/mount' Method = 'Post' Body = @{ targetInstanceId = 'targetInstanceId' mountedDatabaseName = 'mountedDatabaseName' recoveryPoint = @{ timestampMs = 'timestampMs' } } Query = '' Result = '' Filter = '' Success = '202' } } 'New-RubrikFileSet' = @{ '1.0' = @{ Description = 'Create a fileset using an existing template along with a host or share' URI = '/api/v1/fileset' Method = 'Post' Body = @{ hostId = 'hostId' shareId = 'shareId' templateId = 'templateId' } Query = '' Result = 'data' Filter = '' Success = '202' } } 'New-RubrikFileSetTemplate' = @{ '1.0' = @{ Description = 'Create a new fileset template for fileset backups' URI = '/api/v1/fileset_template' Method = 'Post' Body = @{ allowBackupNetworkMounts = 'allowBackupNetworkMounts' allowBackupHiddenFoldersInNetworkMounts = 'allowBackupHiddenFoldersInNetworkMounts' useWindowsVss = 'useWindowsVss' name = 'name' includes = 'includes' excludes = 'excludes' exceptions = 'exceptions' operatingSystemType = 'operatingSystemType' shareType = 'shareType' preBackupScript = 'preBackupScript' postBackupScript = 'postBackupScript' backupScriptTimeout = 'backupScriptTimeout' backupScriptErrorHandling = 'backupScriptErrorHandling' } Query = '' Result = '' Filter = '' Success = '202' ObjectTName = 'Rubrik.FilesetTemplate' } } 'New-RubrikHost' = @{ '1.0' = @{ Description = 'Register a host' URI = '/api/v1/host' Method = 'Post' Body = @{ hostname = 'hostname' hasAgent = 'hasAgent' } Query = '' Result = '' Filter = '' Success = '201' } } 'New-RubrikHyperVVMMount' = @{ '1.0' = @{ Description = 'Create a live mount request for a HyperV VM with given configuration' URI = '/api/internal/hyperv/vm/snapshot/{id}/mount' Method = 'Post' Body = @{ hostId = 'hostId' vmName = 'vmName' dataStoreName = 'dataStoreName' disableNetwork = 'disableNetwork' removeNetworkDevices = 'removeNetworkDevices' powerOn = 'powerOn' } Query = '' Result = '' Filter = '' Success = '202' } } 'New-RubrikLDAP' = @{ '1.0' = @{ Description = 'Creates new LDAP server connection on the Rubrik cluster' URI = '/api/v1/ldap_service' Method = 'Post' Body = @{ name = "name" dynamicDnsName = "dynamicDnsName" bindUserName = "bindUserName" bindUserPassword = "bindUserPassword" baseDn = "baseDn" authServers = "authServers" advancedOptions = "advancedOptions" } Query = '' Result = '' Filter = '' Success = '200' } } 'New-RubrikLogBackup' = @{ '1.0' = @{ Description = 'Takes on demand transaction log backup for SQL Server' URI = '/api/v1/mssql/db/{id}/log_backup' Method = 'Post' Body = '' Query = '' Result = '' Filter = '' Success = '202' } } 'New-RubrikManagedVolume' = @{ '1.0' = @{ Description = 'Create a new managed volume' URI = '/api/internal/managed_volume' Method = 'Post' Body = @{ name = 'name' numChannels = 'numChannels' subnet = 'subnet' volumeSize = 'volumeSize' applicationTag = 'applicationTag' exportConfig = @{ hostPatterns = 'hostPatterns' } } Query = '' Result = '' Filter = '' Success = '201' } } 'New-RubrikManagedVolumeExport' = @{ '1.0' = @{ Description = 'Create a Managed Volume export.' URI = '/api/internal/managed_volume/snapshot/{id}/export' Method = 'Post' Body = '' Query = '' Result = '' Filter = '' Success = '202' } } 'New-RubrikMount' = @{ '1.0' = @{ Description = 'Create a live mount request with given configuration' URI = '/api/v1/vmware/vm/snapshot/{id}/mount' Method = 'Post' Body = @{ hostId = 'hostId' vmName = 'vmName' dataStoreName = 'dataStoreName' disableNetwork = 'disableNetwork' removeNetworkDevices = 'removeNetworkDevices' powerOn = 'powerOn' } Query = '' Result = '' Filter = '' Success = '202' } } 'New-RubrikNASShare' = @{ '1.0' = @{ Description = 'Create a new NAS share on an existing host' URI = '/api/internal/host/share' Method = 'Post' Body = @{ hostId = 'hostId' shareType = 'shareType' exportPoint = 'exportPoint' username = 'username' password = 'password' domain = 'domain' } Query = '' Result = '' Filter = '' Success = '202' } } 'New-RubrikReport' = @{ '1.0' = @{ Description = 'Create a new report by specifying one of the report templates' URI = '/api/internal/report' Method = 'Post' Body = @{ name = 'name' reportTemplate = 'reportTemplate' } Query = '' Result = '' Filter = '' Success = '201' } } 'New-RubrikSLA' = @{ '1.0' = @{ Description = 'Create a new SLA Domain on a Rubrik cluster by specifying Domain Rules and policies' URI = '/api/v1/sla_domain' Method = 'Post' Body = @{ name = 'name' frequencies = @{ timeUnit = 'timeUnit' frequency = 'frequency' retention = 'retention' } allowedBackupWindows = @{ startTimeAttributes = @{ minutes = 'minutes' hour = 'hour' } durationInHours = 'durationInHours' } firstFullAllowedBackupWindows = @{ startTimeAttributes = @{ minutes = 'minutes' hour = 'hour' dayOfWeek = 'dayOfWeek' } durationInHours = 'durationInHours' } localRetentionLimit = 'localRetentionLimit' archivalSpecs = @{ locationId = 'locationId' archivalThreshold = 'archivalThreshold' } replicationSpecs = @{ locationId = 'locationId' retentionLimit = 'retentionLimit' } } Query = '' Result = '' Filter = '' Success = '201' ObjectTName = 'Rubrik.SLADomainv1' } '5.0' = @{ Description = 'Create a new SLA Domain on a Rubrik cluster by specifying Domain Rules and policies' URI = '/api/v2/sla_domain' Method = 'Post' Body = @{ name = 'name' showAdvancedUi = 'showAdvancedUi' frequencies = @{ frequency = 'frequency' retention = 'retention' } advancedUiConfig = @{ timeUnit = 'timeUnit' retentionType = 'retentionType' } allowedBackupWindows = @{ startTimeAttributes = @{ minutes = 'minutes' hour = 'hour' } durationInHours = 'durationInHours' } firstFullAllowedBackupWindows = @{ startTimeAttributes = @{ minutes = 'minutes' hour = 'hour' dayOfWeek = 'dayOfWeek' } durationInHours = 'durationInHours' } localRetentionLimit = 'localRetentionLimit' archivalSpecs = @{ locationId = 'locationId' polarisManagedId = 'polarisManagedId' archivalThreshold = 'archivalThreshold' } replicationSpecs = @{ locationId = 'locationId' retentionLimit = 'retentionLimit' } } Query = '' Result = '' Filter = '' Success = '201' ObjectTName = 'Rubrik.SLADomain' } } 'New-RubrikUser' = @{ '1.0' = @{ Description = 'Creates a new Rubrik user.' URI = '/api/internal/user' Method = 'Post' Body = @{ username = 'username' password = 'password' firstName = 'firstName' lastName = 'lastName' emailAddress = 'emailAddress' contactNumber = 'contactNumber' mfaServerId = 'mfaServerId' } Query = '' Result = '' Filter = '' Success = '200' } } 'New-RubrikSnapshot' = @{ '1.0' = @{ Description = 'Create an on-demand snapshot for the given object ID' URI = @{ Fileset = '/api/v1/fileset/{id}/snapshot' MSSQL = '/api/v1/mssql/db/{id}/snapshot' VMware = '/api/v1/vmware/vm/{id}/snapshot' VolumeGroup = '/api/internal/volume_group/{id}/snapshot' Oracle = '/api/internal/oracle/db/{id}/snapshot' VcdVapp = '/api/internal/vcd/vapp/{id}/snapshot' Nutanix = '/api/internal/nutanix/vm/{id}/snapshot' HyperV = '/api/internal/hyperv/vm/{id}/snapshot' } Method = 'Post' Body = @{ forceFullSnapshot = 'forceFullSnapshot' slaId = 'slaId' } Query = '' Result = '' Filter = '' Success = '202' } '5.3' = @{ Description = 'Create an on-demand snapshot for the given object ID' URI = @{ Fileset = '/api/v1/fileset/{id}/snapshot' MSSQL = '/api/v1/mssql/db/{id}/snapshot' VMware = '/api/v1/vmware/vm/{id}/snapshot' VolumeGroup = '/api/v1/volume_group/{id}/snapshot' Oracle = '/api/internal/oracle/db/{id}/snapshot' VcdVapp = '/api/internal/vcd/vapp/{id}/snapshot' Nutanix = '/api/internal/nutanix/vm/{id}/snapshot' HyperV = '/api/internal/hyperv/vm/{id}/snapshot' } Method = 'Post' Body = @{ forceFullSnapshot = 'forceFullSnapshot' slaId = 'slaId' } Query = '' Result = '' Filter = '' Success = '202' } } 'Protect-RubrikDatabase' = @{ '1.0' = @{ Description = 'Update a Microsoft SQL database with the specified SLA Domain.' URI = '/api/v1/mssql/db/{id}' Method = 'Patch' Body = @{ logBackupFrequencyInSeconds = 'logBackupFrequencyInSeconds' logRetentionHours = 'logRetentionHours' copyOnly = 'copyOnly' maxDataStreams = 'maxDataStreams' configuredSlaDomainId = 'configuredSlaDomainId' } Query = '' Result = 'data' Filter = '' Success = '200' } } 'Protect-RubrikFileset' = @{ '1.0' = @{ Description = 'Update a Fileset with the specified SLA Domain.' URI = '/api/v1/fileset/{id}' Method = 'Patch' Body = @{ configuredSlaDomainId = 'configuredSlaDomainId' } Query = '' Result = 'data' Filter = '' Success = '200' } } 'Protect-RubrikHyperVVM' = @{ '1.0' = @{ Description = 'Update a VM with the specified SLA Domain.' URI = '/api/internal/hyperv/vm/{id}' Method = 'Patch' Body = @{ configuredSlaDomainId = 'configuredSlaDomainId' } Query = '' Result = '' Filter = '' Success = '200' } } 'Protect-RubrikNutanixVM' = @{ '1.0' = @{ Description = 'Update a VM with the specified SLA Domain.' URI = '/api/internal/nutanix/vm/{id}' Method = 'Patch' Body = @{ configuredSlaDomainId = 'configuredSlaDomainId' } Query = '' Result = '' Filter = '' Success = '200' } } 'Protect-RubrikTag' = @{ '1.0' = @{ Description = 'Assign managed entities to the specified SLA Domain. The assignment event runs synchronously.' URI = '/api/internal/sla_domain/{id}/assign' Method = 'Post' Body = '' Query = '' Result = '' Filter = '' Success = '204' } } 'Protect-RubrikVApp' = @{ '1.0' = @{ Description = 'Update a vCD vApp with the specified SLA Domain.' URI = '/api/internal/vcd/vapp/{id}' Method = 'Patch' Body = @{ configuredSlaDomainId = 'configuredSlaDomainId' } Query = '' Result = '' Filter = '' Success = '200' } } 'Protect-RubrikVM' = @{ '1.0' = @{ Description = 'Update a VM with the specified SLA Domain.' URI = '/api/v1/vmware/vm/{id}' Method = 'Patch' Body = @{ configuredSlaDomainId = 'configuredSlaDomainId' existingSnapshotRetention = 'existingSnapshotRetention' } Query = '' Result = '' Filter = '' Success = '200' ObjectTName = 'Rubrik.VMwareVM' } '5.2' = @{ Description = 'Update a VM with the specified SLA Domain.' URI = '/api/v2/sla_domain/{id}/assign' Method = 'Post' Body = @{ managedIds = [System.Collections.ArrayList]@() configuredSlaDomainId = 'configuredSlaDomainId' existingSnapshotRetention = 'existingSnapshotRetention' } Query = '' Result = '' Filter = '' Success = '200' } } 'Protect-RubrikVolumeGroup' = @{ '1.0' = @{ Description = 'Update a Volume Group with the specified SLA Domain.' URI = '/api/internal/volume_group/{id}' Method = 'Patch' Body = @{ configuredSlaDomainId = 'configuredSlaDomainId' volumeIdsIncludedInSnapshots = @{} } Query = '' Result = '' Filter = '' Success = '200' ObjectTName = 'Rubrik.VolumeGroup' } '5.3' = @{ Description = 'Update a Volume Group with the specified SLA Domain.' URI = '/api/v1/volume_group/{id}' Method = 'Patch' Body = @{ configuredSlaDomainId = 'configuredSlaDomainId' volumeIdsIncludedInSnapshots = @{} } Query = '' Result = '' Filter = '' Success = '200' ObjectTName = 'Rubrik.VolumeGroup' } } 'Update-RubrikHost' = @{ '1.0' = @{ Description = 'Refresh the properties of a host object when changes on the host are not seen in the Rubrik web UI.' URI = '/api/v1/host/{id}/refresh' Method = 'Post' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Register-RubrikBackupService' = @{ '1.0' = @{ Description = 'Register the Rubrik Backup Service.' URI = @{ VMware = '/api/v1/vmware/vm/{id}/register_agent' HyperV = '/api/internal/hyperv/vm/{id}/register_agent' Nutanix = '/api/internal/nutanix/vm/{id}/register_agent' } Method = 'Post' Body = '' Query = '' Result = '' Filter = '' Success = '204' } } 'Remove-RubrikAPIToken' = @{ '5.0' = @{ Description = 'Deletes session tokens' URI = '/api/internal/session/bulk_delete' Method = 'Post' Body = @{ tokenIds = 'tokenIds' } Query = '' Result = '' Filter = '' Success = '204' } } 'Remove-RubrikDatabaseMount' = @{ '1.0' = @{ Description = 'Create a request to delete a database live mount' URI = '/api/v1/mssql/db/mount/{id}' Method = 'Delete' Body = '' Query = @{ force = 'force' } Result = '' Filter = '' Success = '202' } } 'Remove-RubrikDatabaseSnapshots' = @{ '1.0' = @{ Description = 'Removes all database snapshots for a MSSQL database' URI = '/api/v1/mssql/db/{id}/snapshot' Method = 'Delete' Body = '' Query = '' Result = '' Success = '204' } } 'Remove-RubrikFileset' = @{ '1.0' = @{ Description = 'Delete a fileset by specifying the fileset ID' URI = '/api/v1/fileset/{id}' Method = 'Delete' Body = '' Query = '' Result = '' Filter = '' Success = '204' } } 'Remove-RubrikFilesetSnapshot' = @{ '1.0' = @{ Description = 'Removes a fileset snapshot' URI = '/api/v1/fileset/snapshot/{id}' Method = 'Delete' Body = '' Query = @{ location = 'location' } Result = '' Success = '204' } } 'Remove-RubrikFilesetTemplate' = @{ '1.0' = @{ Description = 'Removes a fileset snapshot' URI = '/api/v1/fileset_template/{id}' Method = 'Delete' Body = '' Query = @{ preserve_snapshots = 'preserve_snapshots' } Result = '' Success = '204' } } 'Remove-RubrikHost' = @{ '1.0' = @{ Description = 'Delete host by specifying the host ID' URI = '/api/v1/host/{id}' Method = 'Delete' Body = '' Query = '' Result = '' Filter = '' Success = '204' } } 'Remove-RubrikHyperVMount' = @{ '1.0' = @{ Description = 'Create a request to delete a HyperV live mount' URI = '/api/internal/hyperv/vm/snapshot/mount/{id}' Method = 'Delete' Body = '' Query = @{ force = 'force' } Result = '' Filter = '' Success = '202' } } 'Remove-RubrikHyperVSnapshot' = @{ '1.0' = @{ Description = 'Removes an expired HyperV VM snapshot available for garbage collection' URI = '/api/internal/hyperv/vm/snapshot/{id}' Method = 'Delete' Body = '' Query = @{ location = 'location' } Result = '' Success = '204' } } 'Remove-RubrikManagedVolume' = @{ '1.0' = @{ Description = 'Delete a managed volume' URI = '/api/internal/managed_volume/{id}' Method = 'Delete' Body = '' Query = '' Result = '' Filter = '' Success = '204' } } 'Remove-RubrikManagedVolumeExport' = @{ '1.0' = @{ Description = 'Delete a managed volume' URI = '/api/internal/managed_volume/snapshot/export/{id}' Method = 'Delete' Body = '' Query = '' Result = '' Filter = '' Success = '204' } } 'Remove-RubrikManagedVolumeSnapshot' = @{ '1.0' = @{ Description = 'Removes an expired Managed Volume snapshot available for garbage collection' URI = '/api/internal/managed_volume/snapshot/{id}' Method = 'Delete' Body = '' Query = @{ location = 'location' } Result = '' Success = '204' } } 'Remove-RubrikMount' = @{ '1.0' = @{ Description = 'Create a request to delete a live mount' URI = '/api/v1/vmware/vm/snapshot/mount/{id}' Method = 'Delete' Body = '' Query = @{ force = 'force' } Result = '' Filter = '' Success = '202' } } 'Remove-RubrikNASShare' = @{ '1.0' = @{ Description = 'Create a request to delete a NAS share' URI = '/api/internal/host/share/{id}' Method = 'Delete' Body = '' Query = '' Result = '' Filter = '' Success = '202' } } 'Remove-RubrikNutanixVMSnapshot' = @{ '1.0' = @{ Description = 'Removes an expired Nutanix VM snapshot available for garbage collection' URI = '/api/internal/nutanix/vm/snapshot/{id}' Method = 'Delete' Body = '' Query = @{ location = 'location' } Result = '' Success = '204' } } 'Remove-RubrikProxySetting' = @{ '1.0' = @{ Description = 'Remove Rubrik Node Proxy Configuration' URI = '/api/internal/node_management/proxy_config' Method = 'Delete' Body = '' Query = '' Result = '' Filter = '' Success = '204' } } 'Remove-RubrikOrganization' = @{ '1.0' = @{ Description = 'Remove an organization from a Rubrik cluster' URI = '/api/internal/organization/{id}' Method = 'Delete' Body = '' Query = '' Result = '' Filter = '' Success = '204' } } 'Remove-RubrikOrgAuthorization' = @{ '1.0' = @{ Description = 'Revokes an organization authorization for principal(s)' URI = '/api/internal/authorization/role/organization' Method = 'Delete' Body = @{ principals = [System.Collections.ArrayList]@() organizationId = 'organization_id' privileges = @{ manageCluster = [System.Collections.ArrayList]@() manageResource = [System.Collections.ArrayList]@() useSla = [System.Collections.ArrayList]@() manageSla = [System.Collections.ArrayList]@() } } Query = '' Result = 'data' Filter = '' Success = '200' } '5.1' = @{ Description = 'Revokes an organization authorization for principal(s)' URI = '/api/internal/authorization/role/organization' Method = 'Delete' Body = @{ principals = [System.Collections.ArrayList]@() organizationId = 'organization_id' privileges = @{ manageCluster = [System.Collections.ArrayList]@() manageResource = [System.Collections.ArrayList]@() manageRestoreSource = [System.Collections.ArrayList]@() useSla = [System.Collections.ArrayList]@() manageSla = [System.Collections.ArrayList]@() } } Query = '' Result = 'data' Filter = '' Success = '200' } } 'Remove-RubrikReport' = @{ '1.0' = @{ Description = 'Delete a specific report specified by reportId' URI = '/api/internal/report/{id}' Method = 'Delete' Body = '' Query = '' Result = '' Filter = '' Success = '204' } } 'Remove-RubrikSLA' = @{ '1.0' = @{ Description = 'Delete an SLA Domain from a Rubrik cluster' URI = '/api/v1/sla_domain/{id}' Method = 'Delete' Body = '' Query = '' Result = '' Filter = '' Success = '204' } '5.0' = @{ Description = 'Delete an SLA Domain from a Rubrik cluster' URI = '/api/v2/sla_domain/{id}' Method = 'Delete' Body = '' Query = '' Result = '' Filter = '' Success = '204' } } 'Remove-RubrikVMSnapshot' = @{ '1.0' = @{ Description = 'Removes an expired VM snapshot available for garbage collection' URI = '/api/v1/vmware/vm/snapshot/{id}' Method = 'Delete' Body = '' Query = @{ location = 'location' } Result = '' Success = '204' } } 'Remove-RubrikUnmanagedObject' = @{ '1.0' = @{ Description = 'Bulk delete all unmanaged snapshots for the objects specified by objectId/objectType pairings.' URI = '/api/internal/unmanaged_object/snapshot/bulk_delete' Method = 'Post' Body = @{ objectDefinitions = @( @{ objectId = 'objectId' objectType = 'objectType' } ) } Query = '' Result = '' Filter = '' Success = '204' } '5.2' = @{ Description = 'Bulk delete all unmanaged snapshots for the objects specified by objectId/objectType pairings.' URI = '/api/v1/data_source/snapshot/bulk_delete' Method = 'Post' Body = @{ objectDefinitions = @( @{ objectId = 'objectId' } ) } Query = '' Result = '' Filter = '' Success = '204' } } 'Remove-RubrikVCenter' = @{ '1.0' = @{ Description = 'Removes a vCenter connection' URI = '/api/v1/vmware/vcenter/{id}' Method = 'Delete' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Remove-RubrikVolumeGroupSnapshot' = @{ '1.0' = @{ Description = 'Removes an expired Volume Group snapshot available for garbage collection' URI = '/api/internal/volume_group/snapshot/{id}' Method = 'Delete' Body = '' Query = @{ location = 'location' } Result = '' Success = '204' } } 'Restore-RubrikDatabase' = @{ '1.0' = @{ Description = 'Export MSSQL Database from Rubrik to Destination Instance.' URI = '/api/v1/mssql/db/{id}/restore' Method = 'Post' Body = @{ recoveryPoint = @{ lsnPoint = @{lsn='lsn'} timestampMs = 'timestampMs' } finishRecovery = 'finishRecovery' maxDataStreams = 'maxDataStreams' } Query = '' Result = '' Filter = '' Success = '202' } } 'Restore-RubrikVApp' = @{ '1.0' = @{ Description = 'Restores a given snapshot for a vCD vApp' URI = '/api/internal/vcd/vapp/snapshot/{id}/instant_recover' Method = 'Post' Body = @{ vmsToRestore = @{ name = 'name' vcdMoid = 'vcdMoid' networkConnections = @{ nicIndex = 'nicIndex' addressingMode = 'addressingMode' ipAddress = 'ipAddress' isConnected = 'isConnected' vappNetworkName = 'vappNetworkName' } } shouldPowerOnVmsAfterRecovery = 'shouldPowerOnVmsAfterRecovery' } Query = '' Result = '' Filter = '' Success = '202' } } 'Resume-RubrikSLA' = @{ '5.1' = @{ Description = 'Resume a new SLA Domain on a Rubrik cluster' URI = '/api/v2/sla_domain/{id}/pause' Method = 'Post' Query = '' Result = '' Filter = '' Success = '200' ObjectTName = 'Rubrik.SLADomain' } } 'Set-RubrikAvailabilityGroup' = @{ '1.0' = @{ Description = 'Update a Microsoft SQL availability group.' URI = '/api/internal/mssql/availability_group/{id}' Method = 'Patch' Body = @{ logBackupFrequencyInSeconds = 'logBackupFrequencyInSeconds' logRetentionHours = 'logRetentionHours' copyOnly = 'copyOnly' configuredSlaDomainId = 'configuredSlaDomainId' } Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikBlackout' = @{ '1.0' = @{ Description = 'Whether to start or stop the global blackout window.' URI = '/api/internal/blackout_window' Method = 'Patch' Body = @{ isGlobalBlackoutActive = 'isGlobalBlackoutActive' } Query = '' Result = '' Filter = '' Success = '200' } '5.1' = @{ Description = 'Whether to start or stop the global blackout window.' URI = '/api/v1/blackout_window' Method = 'Patch' Body = @{ isGlobalBlackoutActive = 'isGlobalBlackoutActive' } Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikDatabase' = @{ '1.0' = @{ Description = 'Updates Rubrik database settings.' URI = '/api/v1/mssql/db/{id}' Method = 'Patch' Body = @{ logBackupFrequencyInSeconds = "logBackupFrequencyInSeconds" logRetentionHours = "logRetentionHours" copyOnly = "copyOnly" maxDataStreams = "maxDataStreams" configuredSlaDomainId = "configuredSlaDomainId" preBackupScript = @{ scriptPath = "scriptPath" timeoutMs = "timeoutMs" scriptErrorAction = "scriptErrorAction" } postBackupScript = @{ scriptPath = "scriptPath" timeoutMs = "timeoutMs" scriptErrorAction = "scriptErrorAction" } } Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikHyperVVM' = @{ '1.0' = @{ Description = 'Update VM with specified properties' URI = '/api/internal/hyperv/vm/{id}' Method = 'Patch' Body = @{ cloudInstantiationSpec = @{ imageRetentionInSeconds = 'imageRetentionInSeconds' } } Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikLDAP' = @{ '1.0' = @{ Description = 'Updates all settings of the Rubrik cluster' URI = '/api/v1/ldap_service' Method = 'Patch' Body = @{ name = "name" dynamicDnsName = "dynamicDnsName" bindUserName = "bindUserName" bindUserPassword = "bindUserPassword" baseDN = "baseDN" authServers = "authServers" advancedOptions = "advancedOptions" } Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikManagedVolume' = @{ '1.0' = @{ Description = 'Update a managed volume' URI = '/api/internal/managed_volume' Method = 'Patch' Body = @{ name = 'name' volumeSize = 'volumeSize' configuredSlaDomainId = 'configuredSlaDomainId' } Query = '' Result = '' Filter = '' Success = '201' } } 'Set-RubrikMount' = @{ '1.0' = @{ Description = 'Power given live-mounted vm on/off' URI = '/api/v1/vmware/vm/snapshot/mount/{id}' Method = 'Patch' Body = @{ powerStatus = 'powerStatus' } Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikNASShare' = @{ '1.0' = @{ Description = 'Change settings of NAS Shares' URI = '/api/internal/host/share/{id}' Method = 'Patch' Body = @{ exportPoint = 'exportPoint' username = 'username' password = 'password' domain = 'domain' } Query = '' Result = '' Filter = '' Success = '200' ObjectTName = 'Rubrik.NASShare' } } 'Set-RubrikProxySetting' = @{ '1.0' = @{ Description = 'Remove Rubrik Node Proxy Configuration' URI = '/api/internal/node_management/proxy_config' Method = 'Patch' Body = @{ host = 'host' port = 'port' protocol = 'protocol' username = 'username' password = 'password' } Query = '' Result = '' Filter = '' Success = '200' ObjectTName = 'Rubrik.ProxySetting' } } 'Set-RubrikNutanixVM' = @{ '1.0' = @{ Description = 'Update VM with specified properties' URI = '/api/internal/nutanix/vm/{id}' Method = 'Patch' Body = @{ snapshotConsistencyMandate = 'snapshotConsistencyMandate' isPaused = 'isPaused' } Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikOrgAuthorization' = @{ '1.0' = @{ Description = 'Grants an organization authorization for principal(s)' URI = '/api/internal/authorization/role/organization' Method = 'Post' Body = @{ principals = [System.Collections.ArrayList]@() organizationId = 'organization_id' privileges = @{ manageCluster = [System.Collections.ArrayList]@() manageResource = [System.Collections.ArrayList]@() useSla = [System.Collections.ArrayList]@() manageSla = [System.Collections.ArrayList]@() } } Query = '' Result = 'data' Filter = '' Success = '200' } '5.1' = @{ Description = 'Grants an organization authorization for principal(s)' URI = '/api/internal/authorization/role/organization' Method = 'Post' Body = @{ principals = [System.Collections.ArrayList]@() organizationId = 'organization_id' privileges = @{ manageCluster = [System.Collections.ArrayList]@() manageResource = [System.Collections.ArrayList]@() manageRestoreSource = [System.Collections.ArrayList]@() useSla = [System.Collections.ArrayList]@() manageSla = [System.Collections.ArrayList]@() } } Query = '' Result = 'data' Filter = '' Success = '200' } } 'Set-RubrikReport' = @{ '1.0' = @{ Description = 'Update a specific report. The report''s name, chart parameters, filters and table can be updated. If successful, this will automatically trigger an async job to refresh the report content.' URI = '/api/internal/report/{id}' Method = 'Patch' Body = @{ name = 'name' filters = @{ slaDomain = 'slaDomain' objects = 'objects' objectType = 'objectType' objectLocation = 'objectLocation' clusterLocation = 'clusterLocation' taskType = 'taskType' complianceStatus = 'complianceStatus' dateConfig = @{ beforeDate = 'beforeDate' afterDate = 'afterDate' period = 'period' } } chart0 = @{ id = 'id' name = 'name' chartType = 'chartType' attribute = 'attribute' measure = 'measure' } chart1 = @{ id = 'id' name = 'name' chartType = 'chartType' attribute = 'attribute' measure = 'measure' } table = @{ columns = 'columns' } } Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikSetting' = @{ '1.0' = @{ Description = 'Updates all settings of the Rubrik cluster' URI = '/api/v1/cluster/{id}' Method = 'Patch' Body = @{ name = "name" timezone = "timezone" geolocation = "geolocation" } Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikSLA' = @{ '1.0' = @{ Description = 'Update an existing SLA Domain on a Rubrik cluster by specifying Domain Rules and policies' URI = '/api/v1/sla_domain' Method = 'Patch' Body = @{ name = 'name' frequencies = @{ timeUnit = 'timeUnit' frequency = 'frequency' retention = 'retention' } allowedBackupWindows = @{ startTimeAttributes = @{ minutes = 'minutes' hour = 'hour' } durationInHours = 'durationInHours' } firstFullAllowedBackupWindows = @{ startTimeAttributes = @{ minutes = 'minutes' hour = 'hour' dayOfWeek = 'dayOfWeek' } durationInHours = 'durationInHours' } localRetentionLimit = 'localRetentionLimit' archivalSpecs = @{ locationId = 'locationId' archivalThreshold = 'archivalThreshold' } replicationSpecs = @{ locationId = 'locationId' retentionLimit = 'retentionLimit' } } Query = '' Result = '' Filter = '' Success = '200' ObjectTName = 'Rubrik.SLADomainv1' } '5.0' = @{ Description = 'Update an existing SLA Domain on a Rubrik cluster by specifying Domain Rules and policies' URI = '/api/v2/sla_domain' Method = 'Patch' Body = @{ name = 'name' showAdvancedUi = 'showAdvancedUi' frequencies = @{ frequency = 'frequency' retention = 'retention' } advancedUiConfig = @{ timeUnit = 'timeUnit' retentionType = 'retentionType' } allowedBackupWindows = @{ startTimeAttributes = @{ minutes = 'minutes' hour = 'hour' } durationInHours = 'durationInHours' } firstFullAllowedBackupWindows = @{ startTimeAttributes = @{ minutes = 'minutes' hour = 'hour' dayOfWeek = 'dayOfWeek' } durationInHours = 'durationInHours' } localRetentionLimit = 'localRetentionLimit' archivalSpecs = @{ locationId = 'locationId' polarisManagedId = 'polarisManagedId' archivalThreshold = 'archivalThreshold' } replicationSpecs = @{ locationId = 'locationId' retentionLimit = 'retentionLimit' } } Query = '' Result = '' Filter = '' Success = '200' ObjectTName = 'Rubrik.SLADomain' } } 'Set-RubrikSQLInstance' = @{ '1.0' = @{ Description = 'Updates Rubrik database settings.' URI = '/api/v1/mssql/instance/{id}' Method = 'Patch' Body = @{ logBackupFrequencyInSeconds = "logBackupFrequencyInSeconds" logRetentionHours = "logRetentionHours" copyOnly = "copyOnly" maxDataStreams = "maxDataStreams" configuredSlaDomainId = "configuredSlaDomainId" } Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikSupportTunnel' = @{ '1.0' = @{ Description = 'To be used by Admin to open or close a SSH tunnel for support.' URI = '/api/internal/node/me/support_tunnel' Method = 'Patch' Body = @{ isTunnelEnabled = "isTunnelEnabled" inactivityTimeoutInSeconds = "inactivityTimeoutInSeconds" } Query = '' Result = '' Filter = '' Success = '200' } } 'Suspend-RubrikSLA' = @{ '5.1' = @{ Description = 'Pause a new SLA Domain on a Rubrik cluster' URI = '/api/v2/sla_domain/{id}/pause' Method = 'Post' Query = '' Result = '' Filter = '' Success = '200' ObjectTName = 'Rubrik.SLADomain' } } 'Set-RubrikVCD' = @{ '1.0' = @{ Description = 'Updates settings of a vCD connection' URI = '/api/internal/vcd/cluster/{id}' Method = 'Patch' Body = @{ hostname = "hostname" username = "username" password = "password" configuredSlaDomainId = "configuredSlaDomainId" } Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikUser' = @{ '1.0' = @{ Description = 'Updates a Rubrik user.' URI = '/api/internal/user/{id}' Method = 'Patch' Body = @{ password = 'password' firstName = 'firstName' lastName = 'lastName' emailAddress = 'emailAddress' contactNumber = 'contactNumber' mfaServerId = 'mfaServerId' } Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikUserRole' = @{ '1.0' = @{ Description = 'Updates a Rubrik user role and authorizations.' URI = '/api/internal/authorization/role' Method = 'POST' Body = @{ principals = 'principals' privileges = @{ } } Query = '' Result = 'Data' Filter = '' Success = '200' } } 'Set-RubrikVM' = @{ '1.0' = @{ Description = 'Update VM with specified properties' URI = '/api/v1/vmware/vm/{id}' Method = 'Patch' Body = @{ snapshotConsistencyMandate = 'snapshotConsistencyMandate' maxNestedVsphereSnapshots = 'maxNestedVsphereSnapshots' isVmPaused = 'isVmPaused' preBackupScript = @{ scriptPath = 'scriptPath' timeoutMs = 'timeoutMs' failureHandling = 'failureHandling' } postSnapScript = @{ scriptPath = 'scriptPath' timeoutMs = 'timeoutMs' failureHandling = 'failureHandling' } postBackupScript = @{ scriptPath = 'scriptPath' timeoutMs = 'timeoutMs' failureHandling = 'failureHandling' } isArrayIntegrationEnabled = 'isArrayIntegrationEnabled' cloudInstantiationSpec = @{ imageRetentionInSeconds = 'imageRetentionInSeconds' } } Query = '' Result = '' Filter = '' Success = '200' ObjectTName = 'Rubrik.VMwareVM' } } 'Set-RubrikVCenter' = @{ '1.0' = @{ Description = 'Updates settings of a vCenter connection' URI = '/api/v1/vmware/vcenter/{id}' Method = 'Put' Body = @{ hostname = "hostname" username = "username" password = "password" } Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikVolumeFilterDriver' = @{ '1.0' = @{ Description = 'Installs or Uninstalls the Rubrik Volume Filter Driver' URI = '/api/internal/host/bulk/volume_filter_driver' Method = 'Post' Body = @{ hostIds = 'hostIds' install = 'install' } Query = '' Result = '' Filter = '' Success = '200' } '5.0' = @{ Description = 'Installs or Uninstalls the Rubrik Volume Filter Driver' URI = '/api/internal/host/bulk/volume_filter_driver' Method = 'Post' Body = @{ hostIds = 'hostIds' install = 'install' } Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikVgfAutoUpgrade' = @{ '5.3' = @{ Description = 'Update the global Volume Group settings for backup format migration.' URI = '/api/internal/config/usersettable_volumeGroup' Method = 'Patch' Body = @{ migrateFastVirtualDiskBuild = 'migrateFastVirtualDiskBuild' maxFullMigrationStoragePercentage = 'maxFullMigrationStoragePercentage' } Query = '' Result = '' Filter = '' Success = '200' } } 'Start-RubrikManagedVolumeSnapshot' = @{ '1.0' = @{ Description = 'Open a Rubrik Managed Volume for read/write' URI = '/api/internal/managed_volume/{id}/begin_snapshot' Method = 'Post' Body = '' Query = '' Result = '' Filter = '' Success = '201' } } 'Stop-RubrikManagedVolumeSnapshot' = @{ '1.0' = @{ Description = 'Close a Rubrik Managed Volume for read/write' URI = '/api/internal/managed_volume/{id}/end_snapshot' Method = 'Post' Body = @{ retentionConfig = @{ slaID = 'slaID' } } Query = '' Result = '' Filter = '' Success = '201' } } 'Get-RubrikLogShipping' = @{ '1.0' = @{ Description = 'Retrieves all log shipping configuration objects. Results can be filtered and sorted' URI = '/api/v1/mssql/db/log_shipping' Method = 'Get' Body = '' Query = @{ primary_database_id = 'primary_database_id' primary_database_name = 'primary_database_name' secondary_database_name = 'secondary_database_name' location = 'location' status = 'status' limit = 'limit' offset = 'offset' sort_by = 'sort_by' sort_order = 'sort_order' } Result = 'data' Filter = '' Success = '200' ObjectTName = 'Rubrik.LogShipping' } } 'New-RubrikLogShipping' = @{ '1.0' = @{ Description = 'Create a log shipping configuration' URI = '/api/v1/mssql/db/{id}/log_shipping' Method = 'Post' Body = @{ state = 'state' shouldDisconnectStandbyUsers = 'shouldDisconnectStandbyUsers' maxDataStreams = 'maxDataStreams' targetDatabaseName = 'targetDatabaseName' targetDataFilePath = 'targetDataFilePath' targetFilePaths = @{ logicalName = 'logicalName' exportPath = 'exportPath' newLogicalName = 'newLogicalName' newFilename = 'newFilename' } targetInstanceId = 'targetInstanceId' targetLogFilePath = 'targetLogFilePath' } Result = '' Filter = '' Success = '202' } } 'Remove-RubrikLogShipping' = @{ '1.0' = @{ Description = 'Delete a specified log shipping configuration' URI = '/api/v1/mssql/db/log_shipping/{id}' Method = 'Delete' Body = '' Query = @{ delete_secondary_database = 'delete_secondary_database' } Result = '' Filter = '' Success = '202' } } 'Remove-RubrikUser' = @{ '1.0' = @{ Description = 'Deletes a specified user from the Rubrik cluster' URI = '/api/internal/user/{id}' Method = 'Delete' Body = '' Query = '' Result = '' Filter = '' Success = '200' } } 'Set-RubrikLogShipping' = @{ '1.0' = @{ Description = 'Update a specified log shipping configuration' URI = '/api/v1/mssql/db/log_shipping/{id}' Method = 'Patch' Body = @{ state = 'state' shouldDisconnectStandbyUsers = 'shouldDisconnectStandbyUsers' } Query = '' Result = '' Filter = '' Success = '202' } } 'Reset-RubrikLogShipping' = @{ '1.0' = @{ Description = 'Reseed a secondary database' URI = '/api/v1/mssql/db/log_shipping/{id}/reseed' Method = 'Post' Body = @{ state = 'state' shouldDisconnectStandbyUsers = 'shouldDisconnectStandbyUsers' } Query = '' Result = '' Filter = '' Success = '202' } } 'Test-RubrikSnapshotVerification' = @{ '5.3' = @{ Description = 'Verifies the validity of a snapshot' URI = '/api/v1/backup/verify' Method = 'Post' Body = @{ "objectId" = '' "snapshotIdsOpt" = [System.Collections.ArrayList]@() "locationIdOpt" = "locationIdOpt" "shouldVerifyAfterOpt" = 'shouldVerifyAfterOpt' } Query = '' Result = '' Filter = '' Success = '200' } } 'Update-RubrikVCenter' = @{ '1.0' = @{ Description = 'Refresh the metadata for the specified vCenter Server' URI = '/api/v1/vmware/vcenter/{id}/refresh' Method = 'Post' Body = '' Query = '' Result = '' Filter = '' Success = '202' } } 'Update-RubrikNutanixCluster' = @{ '1.0' = @{ Description = 'Refresh the metadata for the specified Nutanix Cluster' URI = '/api/internal/nutanix/cluster/{id}/refresh' Method = 'Post' Body = '' Query = '' Result = '' Filter = '' Success = '202' } } 'Update-RubrikVCD' = @{ '1.0' = @{ Description = 'Refresh the metadata for the specified vCD Server' URI = '/api/internal/vcd/cluster/{id}/refresh' Method = 'Post' Body = '' Query = '' Result = '' Filter = '' Success = '202' } } 'Update-RubrikVMwareVM' = @{ '1.0' = @{ Description = 'Refresh the metadata for the specified VMware VM' URI = '/api/internal/vmware/vcenter/{id}/refresh_vm' Method = 'Post' Body = @{ vmMoid = 'vmMoid' } Query = '' Result = '' Filter = '' Success = '204' } } 'Get-RubrikBootStrap' = @{ '1.0' = @{ Description = 'Status of the bootstrap request' URI = '/api/internal/cluster/{id}/bootstrap' Method = 'Get' Body = '' Query = @{ request_id = 'request_id' } Result = '' Filter = '' Success = '200' } } 'New-RubrikBootStrap' = @{ '1.0' = @{ Description = 'New Bootstrap Request' URI = '/api/internal/cluster/{id}/bootstrap' Method = 'Post' Body = @{ name = 'name' dnsNameservers = 'dnsNameservers' dnsSearchDomains = 'dnsSearchDomains' ntpServerConfigs = @{ server = 'ntpServerConfigs' } enableSoftwareEncryptionAtRest = 'enableSoftwareEncryptionAtRest' adminUserInfo = @{ emailAddress = 'emailAddress' id = 'id' password = 'password' } #change to a foreach loop and accept object #needs to be depth 3 to work nodeConfigs = @{ node1 = @{ managementIpConfig = @{ address = 'address' gateway = 'management_gateway' netmask = 'management_netmask' } } } } Query = '' Result = '' Filter = '' Success = '202' } } } # End of API # Determine which version of RCDM is running # Note: Disregard for Software and API version; these do not require authentication if ($endpoint -eq 'Get-RubrikSoftwareVersion' -or $endpoint -eq 'Get-RubrikAPIVersion') {$key = '1.0'} else { # Take the first three values (major.minor) and convert to a float # If there is no version yet, we're probably connecting to the cluster for the first time (Connect-Rubrik) if (!$global:RubrikConnection.version) { $ver = [float](Get-RubrikSoftwareVersion -Server $Server).substring(0, 3) } # If there is a stored version, we'll use that to avoid more traffic to the cluster else { $ver = [float]$global:RubrikConnection.version.substring(0, 3) } # Parse through the keys to find a match (less or equal), pick the last one in the case of an array of values # Example: We're using RCDM 4.0 and an endpoint has details for 1.0 and 4.0. Both are less/equal to 4.0. We'll want the last value (4.0). # Example: We're using RCDM 4.0 and an endpoint has details for 1.0 and 4.1. 4.1 is not less/equal to 4.0, as such, we'll want the only matching value (1.0). $key = $api.$endpoint.Keys | Sort-Object | Where-Object {[float]$_ -le $ver} | Select-Object -Last 1 } if ($null -eq $key) { $ErrorSplat = @{ Message = "No matching endpoint found for $EndPoint that corrosponds to the current cluster version." ErrorAction = 'Stop' TargetObject = $api.$endpoint.keys -join ',' Category = 'ObjectNotFound' } Write-Error @ErrorSplat } else { Write-Verbose -Message "Selected $key API Data for $endpoint" # Add the function name to resolve issue #480 $api.$endpoint.$key.Add('Function',$endpoint) return $api.$endpoint.$key } } # End of function |