function GetOciTopLevelCommand_bv() {
    return 'bv'
}

function GetOciSubcommands_bv() {
    $ociSubcommands = @{
        'bv' = 'backup block-volume-replica boot-volume boot-volume-backup boot-volume-kms-key boot-volume-replica volume volume-backup-policy volume-backup-policy-assignment volume-group volume-group-backup volume-kms-key'
        'bv backup' = 'change-compartment copy create delete get list update'
        'bv block-volume-replica' = 'get list'
        'bv boot-volume' = 'change-compartment create create-boot-volume-boot-volume-source-from-boot-volume-replica-details delete get list update'
        'bv boot-volume-backup' = 'change-compartment copy create delete get list update'
        'bv boot-volume-kms-key' = 'delete get update'
        'bv boot-volume-replica' = 'get list'
        'bv volume' = 'change-compartment create create-volume-volume-source-from-block-volume-replica-details delete get list update'
        'bv volume-backup-policy' = 'create delete get list update'
        'bv volume-backup-policy-assignment' = 'create delete get get-volume-backup-policy-asset-assignment'
        'bv volume-group' = 'change-compartment create delete get list update'
        'bv volume-group-backup' = 'change-compartment create delete get list update'
        'bv volume-kms-key' = 'delete get update'
    }
    return $ociSubcommands
}

function GetOciCommandsToLongParams_bv() {
    $ociCommandsToLongParams = @{
        'bv backup change-compartment' = 'compartment-id from-json help volume-backup-id'
        'bv backup copy' = 'destination-region display-name from-json help kms-key-id max-wait-seconds volume-backup-id wait-for-state wait-interval-seconds'
        'bv backup create' = 'defined-tags display-name freeform-tags from-json help max-wait-seconds type volume-id wait-for-state wait-interval-seconds'
        'bv backup delete' = 'force from-json help if-match max-wait-seconds volume-backup-id wait-for-state wait-interval-seconds'
        'bv backup get' = 'from-json help volume-backup-id'
        'bv backup list' = 'all compartment-id display-name from-json help lifecycle-state limit page page-size sort-by sort-order source-volume-backup-id volume-id'
        'bv backup update' = 'defined-tags display-name force freeform-tags from-json help if-match max-wait-seconds volume-backup-id wait-for-state wait-interval-seconds'
        'bv block-volume-replica get' = 'block-volume-replica-id from-json help'
        'bv block-volume-replica list' = 'all availability-domain compartment-id display-name from-json help lifecycle-state limit page page-size sort-by sort-order'
        'bv boot-volume change-compartment' = 'boot-volume-id compartment-id from-json help'
        'bv boot-volume create' = 'availability-domain backup-policy-id boot-volume-backup-id boot-volume-replicas compartment-id defined-tags display-name freeform-tags from-json help is-auto-tune-enabled kms-key-id max-wait-seconds size-in-gbs source-boot-volume-id source-volume-replica-id vpus-per-gb wait-for-state wait-interval-seconds'
        'bv boot-volume create-boot-volume-boot-volume-source-from-boot-volume-replica-details' = 'availability-domain backup-policy-id boot-volume-replicas compartment-id defined-tags display-name freeform-tags from-json help is-auto-tune-enabled kms-key-id max-wait-seconds size-in-gbs source-details-id vpus-per-gb wait-for-state wait-interval-seconds'
        'bv boot-volume delete' = 'boot-volume-id force from-json help if-match max-wait-seconds wait-for-state wait-interval-seconds'
        'bv boot-volume get' = 'boot-volume-id from-json help'
        'bv boot-volume list' = 'all availability-domain compartment-id from-json help limit page page-size volume-group-id'
        'bv boot-volume update' = 'boot-volume-id boot-volume-replicas defined-tags display-name force freeform-tags from-json help if-match is-auto-tune-enabled max-wait-seconds size-in-gbs vpus-per-gb wait-for-state wait-interval-seconds'
        'bv boot-volume-backup change-compartment' = 'boot-volume-backup-id compartment-id from-json help'
        'bv boot-volume-backup copy' = 'boot-volume-backup-id destination-region display-name from-json help kms-key-id max-wait-seconds wait-for-state wait-interval-seconds'
        'bv boot-volume-backup create' = 'boot-volume-id defined-tags display-name freeform-tags from-json help max-wait-seconds type wait-for-state wait-interval-seconds'
        'bv boot-volume-backup delete' = 'boot-volume-backup-id force from-json help if-match max-wait-seconds wait-for-state wait-interval-seconds'
        'bv boot-volume-backup get' = 'boot-volume-backup-id from-json help'
        'bv boot-volume-backup list' = 'all boot-volume-id compartment-id display-name from-json help lifecycle-state limit page page-size sort-by sort-order source-boot-volume-backup-id'
        'bv boot-volume-backup update' = 'boot-volume-backup-id defined-tags display-name force freeform-tags from-json help if-match max-wait-seconds wait-for-state wait-interval-seconds'
        'bv boot-volume-kms-key delete' = 'boot-volume-id force from-json help if-match'
        'bv boot-volume-kms-key get' = 'boot-volume-id from-json help if-match'
        'bv boot-volume-kms-key update' = 'boot-volume-id from-json help if-match kms-key-id'
        'bv boot-volume-replica get' = 'boot-volume-replica-id from-json help'
        'bv boot-volume-replica list' = 'all availability-domain compartment-id display-name from-json help lifecycle-state limit page page-size sort-by sort-order'
        'bv volume change-compartment' = 'compartment-id from-json help volume-id'
        'bv volume create' = 'availability-domain backup-policy-id block-volume-replicas compartment-id defined-tags display-name freeform-tags from-json help is-auto-tune-enabled kms-key-id max-wait-seconds size-in-gbs size-in-mbs source-volume-id source-volume-replica-id volume-backup-id vpus-per-gb wait-for-state wait-interval-seconds'
        'bv volume create-volume-volume-source-from-block-volume-replica-details' = 'availability-domain backup-policy-id block-volume-replicas compartment-id defined-tags display-name freeform-tags from-json help is-auto-tune-enabled kms-key-id max-wait-seconds size-in-gbs size-in-mbs source-details-id volume-backup-id vpus-per-gb wait-for-state wait-interval-seconds'
        'bv volume delete' = 'force from-json help if-match max-wait-seconds volume-id wait-for-state wait-interval-seconds'
        'bv volume get' = 'from-json help volume-id'
        'bv volume list' = 'all availability-domain compartment-id display-name from-json help lifecycle-state limit page page-size sort-by sort-order volume-group-id'
        'bv volume update' = 'block-volume-replicas defined-tags display-name force freeform-tags from-json help if-match is-auto-tune-enabled max-wait-seconds size-in-gbs volume-id vpus-per-gb wait-for-state wait-interval-seconds'
        'bv volume-backup-policy create' = 'compartment-id defined-tags destination-region display-name freeform-tags from-json help schedules'
        'bv volume-backup-policy delete' = 'force from-json help if-match policy-id'
        'bv volume-backup-policy get' = 'from-json help policy-id'
        'bv volume-backup-policy list' = 'all compartment-id from-json help limit page page-size'
        'bv volume-backup-policy update' = 'defined-tags destination-region display-name force freeform-tags from-json help if-match policy-id schedules'
        'bv volume-backup-policy-assignment create' = 'asset-id from-json help policy-id'
        'bv volume-backup-policy-assignment delete' = 'force from-json help if-match policy-assignment-id'
        'bv volume-backup-policy-assignment get' = 'from-json help policy-assignment-id'
        'bv volume-backup-policy-assignment get-volume-backup-policy-asset-assignment' = 'asset-id from-json help limit page'
        'bv volume-group change-compartment' = 'compartment-id from-json help volume-group-id'
        'bv volume-group create' = 'availability-domain backup-policy-id compartment-id defined-tags display-name freeform-tags from-json help max-wait-seconds source-details wait-for-state wait-interval-seconds'
        'bv volume-group delete' = 'force from-json help if-match max-wait-seconds volume-group-id wait-for-state wait-interval-seconds'
        'bv volume-group get' = 'from-json help volume-group-id'
        'bv volume-group list' = 'all availability-domain compartment-id display-name from-json help lifecycle-state limit page page-size sort-by sort-order'
        'bv volume-group update' = 'defined-tags display-name force freeform-tags from-json help if-match max-wait-seconds volume-group-id volume-ids wait-for-state wait-interval-seconds'
        'bv volume-group-backup change-compartment' = 'compartment-id from-json help volume-group-backup-id'
        'bv volume-group-backup create' = 'compartment-id defined-tags display-name freeform-tags from-json help max-wait-seconds type volume-group-id wait-for-state wait-interval-seconds'
        'bv volume-group-backup delete' = 'force from-json help if-match max-wait-seconds volume-group-backup-id wait-for-state wait-interval-seconds'
        'bv volume-group-backup get' = 'from-json help volume-group-backup-id'
        'bv volume-group-backup list' = 'all compartment-id display-name from-json help limit page page-size sort-by sort-order volume-group-id'
        'bv volume-group-backup update' = 'defined-tags display-name force freeform-tags from-json help if-match max-wait-seconds volume-group-backup-id wait-for-state wait-interval-seconds'
        'bv volume-kms-key delete' = 'force from-json help if-match volume-id'
        'bv volume-kms-key get' = 'from-json help if-match volume-id'
        'bv volume-kms-key update' = 'from-json help if-match kms-key-id volume-id'
    }
    return $ociCommandsToLongParams
}

function GetOciCommandsToShortParams_bv() {
    $ociCommandsToShortParams = @{
        'bv backup change-compartment' = '? c h'
        'bv backup copy' = '? h'
        'bv backup create' = '? h'
        'bv backup delete' = '? h'
        'bv backup get' = '? h'
        'bv backup list' = '? c h'
        'bv backup update' = '? h'
        'bv block-volume-replica get' = '? h'
        'bv block-volume-replica list' = '? c h'
        'bv boot-volume change-compartment' = '? c h'
        'bv boot-volume create' = '? c h'
        'bv boot-volume create-boot-volume-boot-volume-source-from-boot-volume-replica-details' = '? c h'
        'bv boot-volume delete' = '? h'
        'bv boot-volume get' = '? h'
        'bv boot-volume list' = '? c h'
        'bv boot-volume update' = '? h'
        'bv boot-volume-backup change-compartment' = '? c h'
        'bv boot-volume-backup copy' = '? h'
        'bv boot-volume-backup create' = '? h'
        'bv boot-volume-backup delete' = '? h'
        'bv boot-volume-backup get' = '? h'
        'bv boot-volume-backup list' = '? c h'
        'bv boot-volume-backup update' = '? h'
        'bv boot-volume-kms-key delete' = '? h'
        'bv boot-volume-kms-key get' = '? h'
        'bv boot-volume-kms-key update' = '? h'
        'bv boot-volume-replica get' = '? h'
        'bv boot-volume-replica list' = '? c h'
        'bv volume change-compartment' = '? c h'
        'bv volume create' = '? c h'
        'bv volume create-volume-volume-source-from-block-volume-replica-details' = '? c h'
        'bv volume delete' = '? h'
        'bv volume get' = '? h'
        'bv volume list' = '? c h'
        'bv volume update' = '? h'
        'bv volume-backup-policy create' = '? c h'
        'bv volume-backup-policy delete' = '? h'
        'bv volume-backup-policy get' = '? h'
        'bv volume-backup-policy list' = '? c h'
        'bv volume-backup-policy update' = '? h'
        'bv volume-backup-policy-assignment create' = '? h'
        'bv volume-backup-policy-assignment delete' = '? h'
        'bv volume-backup-policy-assignment get' = '? h'
        'bv volume-backup-policy-assignment get-volume-backup-policy-asset-assignment' = '? h'
        'bv volume-group change-compartment' = '? c h'
        'bv volume-group create' = '? c h'
        'bv volume-group delete' = '? h'
        'bv volume-group get' = '? h'
        'bv volume-group list' = '? c h'
        'bv volume-group update' = '? h'
        'bv volume-group-backup change-compartment' = '? c h'
        'bv volume-group-backup create' = '? c h'
        'bv volume-group-backup delete' = '? h'
        'bv volume-group-backup get' = '? h'
        'bv volume-group-backup list' = '? c h'
        'bv volume-group-backup update' = '? h'
        'bv volume-kms-key delete' = '? h'
        'bv volume-kms-key get' = '? h'
        'bv volume-kms-key update' = '? h'
    }
    return $ociCommandsToShortParams
}