Model/POSTNodesLxcMovevolumeRB.ps1

#
# Proxmox PowerShell VE
# Generated module to access all Proxmox VE Api Endpoints. This module has been generated from the proxmox api description v. 8.4.0
# Version: 8.4.0
# Contact: mail@timo-wolf.de
# Generated by OpenAPI Generator: https://openapi-generator.tech
#

<#
.SYNOPSIS

No summary available.

.DESCRIPTION

No description available.

.PARAMETER TargetDigest
No description available.
.PARAMETER Volume
No description available.
.PARAMETER TargetVmid
No description available.
.PARAMETER Delete
No description available.
.PARAMETER TargetVolume
No description available.
.PARAMETER Digest
No description available.
.PARAMETER Bwlimit
No description available.
.PARAMETER Storage
No description available.
.OUTPUTS

POSTNodesLxcMovevolumeRB<PSCustomObject>
#>


function Initialize-PVEPOSTNodesLxcMovevolumeRB {
    [CmdletBinding()]
    Param (
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${TargetDigest},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateSet("rootfs", "mp0", "mp1", "mp2", "mp3", "mp4", "mp5", "mp6", "mp7", "mp8", "mp9", "mp10", "mp11", "mp12", "mp13", "mp14", "mp15", "mp16", "mp17", "mp18", "mp19", "mp20", "mp21", "mp22", "mp23", "mp24", "mp25", "mp26", "mp27", "mp28", "mp29", "mp30", "mp31", "mp32", "mp33", "mp34", "mp35", "mp36", "mp37", "mp38", "mp39", "mp40", "mp41", "mp42", "mp43", "mp44", "mp45", "mp46", "mp47", "mp48", "mp49", "mp50", "mp51", "mp52", "mp53", "mp54", "mp55", "mp56", "mp57", "mp58", "mp59", "mp60", "mp61", "mp62", "mp63", "mp64", "mp65", "mp66", "mp67", "mp68", "mp69", "mp70", "mp71", "mp72", "mp73", "mp74", "mp75", "mp76", "mp77", "mp78", "mp79", "mp80", "mp81", "mp82", "mp83", "mp84", "mp85", "mp86", "mp87", "mp88", "mp89", "mp90", "mp91", "mp92", "mp93", "mp94", "mp95", "mp96", "mp97", "mp98", "mp99", "mp100", "mp101", "mp102", "mp103", "mp104", "mp105", "mp106", "mp107", "mp108", "mp109", "mp110", "mp111", "mp112", "mp113", "mp114", "mp115", "mp116", "mp117", "mp118", "mp119", "mp120", "mp121", "mp122", "mp123", "mp124", "mp125", "mp126", "mp127", "mp128", "mp129", "mp130", "mp131", "mp132", "mp133", "mp134", "mp135", "mp136", "mp137", "mp138", "mp139", "mp140", "mp141", "mp142", "mp143", "mp144", "mp145", "mp146", "mp147", "mp148", "mp149", "mp150", "mp151", "mp152", "mp153", "mp154", "mp155", "mp156", "mp157", "mp158", "mp159", "mp160", "mp161", "mp162", "mp163", "mp164", "mp165", "mp166", "mp167", "mp168", "mp169", "mp170", "mp171", "mp172", "mp173", "mp174", "mp175", "mp176", "mp177", "mp178", "mp179", "mp180", "mp181", "mp182", "mp183", "mp184", "mp185", "mp186", "mp187", "mp188", "mp189", "mp190", "mp191", "mp192", "mp193", "mp194", "mp195", "mp196", "mp197", "mp198", "mp199", "mp200", "mp201", "mp202", "mp203", "mp204", "mp205", "mp206", "mp207", "mp208", "mp209", "mp210", "mp211", "mp212", "mp213", "mp214", "mp215", "mp216", "mp217", "mp218", "mp219", "mp220", "mp221", "mp222", "mp223", "mp224", "mp225", "mp226", "mp227", "mp228", "mp229", "mp230", "mp231", "mp232", "mp233", "mp234", "mp235", "mp236", "mp237", "mp238", "mp239", "mp240", "mp241", "mp242", "mp243", "mp244", "mp245", "mp246", "mp247", "mp248", "mp249", "mp250", "mp251", "mp252", "mp253", "mp254", "mp255", "unused0", "unused1", "unused2", "unused3", "unused4", "unused5", "unused6", "unused7", "unused8", "unused9", "unused10", "unused11", "unused12", "unused13", "unused14", "unused15", "unused16", "unused17", "unused18", "unused19", "unused20", "unused21", "unused22", "unused23", "unused24", "unused25", "unused26", "unused27", "unused28", "unused29", "unused30", "unused31", "unused32", "unused33", "unused34", "unused35", "unused36", "unused37", "unused38", "unused39", "unused40", "unused41", "unused42", "unused43", "unused44", "unused45", "unused46", "unused47", "unused48", "unused49", "unused50", "unused51", "unused52", "unused53", "unused54", "unused55", "unused56", "unused57", "unused58", "unused59", "unused60", "unused61", "unused62", "unused63", "unused64", "unused65", "unused66", "unused67", "unused68", "unused69", "unused70", "unused71", "unused72", "unused73", "unused74", "unused75", "unused76", "unused77", "unused78", "unused79", "unused80", "unused81", "unused82", "unused83", "unused84", "unused85", "unused86", "unused87", "unused88", "unused89", "unused90", "unused91", "unused92", "unused93", "unused94", "unused95", "unused96", "unused97", "unused98", "unused99", "unused100", "unused101", "unused102", "unused103", "unused104", "unused105", "unused106", "unused107", "unused108", "unused109", "unused110", "unused111", "unused112", "unused113", "unused114", "unused115", "unused116", "unused117", "unused118", "unused119", "unused120", "unused121", "unused122", "unused123", "unused124", "unused125", "unused126", "unused127", "unused128", "unused129", "unused130", "unused131", "unused132", "unused133", "unused134", "unused135", "unused136", "unused137", "unused138", "unused139", "unused140", "unused141", "unused142", "unused143", "unused144", "unused145", "unused146", "unused147", "unused148", "unused149", "unused150", "unused151", "unused152", "unused153", "unused154", "unused155", "unused156", "unused157", "unused158", "unused159", "unused160", "unused161", "unused162", "unused163", "unused164", "unused165", "unused166", "unused167", "unused168", "unused169", "unused170", "unused171", "unused172", "unused173", "unused174", "unused175", "unused176", "unused177", "unused178", "unused179", "unused180", "unused181", "unused182", "unused183", "unused184", "unused185", "unused186", "unused187", "unused188", "unused189", "unused190", "unused191", "unused192", "unused193", "unused194", "unused195", "unused196", "unused197", "unused198", "unused199", "unused200", "unused201", "unused202", "unused203", "unused204", "unused205", "unused206", "unused207", "unused208", "unused209", "unused210", "unused211", "unused212", "unused213", "unused214", "unused215", "unused216", "unused217", "unused218", "unused219", "unused220", "unused221", "unused222", "unused223", "unused224", "unused225", "unused226", "unused227", "unused228", "unused229", "unused230", "unused231", "unused232", "unused233", "unused234", "unused235", "unused236", "unused237", "unused238", "unused239", "unused240", "unused241", "unused242", "unused243", "unused244", "unused245", "unused246", "unused247", "unused248", "unused249", "unused250", "unused251", "unused252", "unused253", "unused254", "unused255")]
        [String]
        ${Volume},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Int32]]
        ${TargetVmid},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${Delete},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateSet("rootfs", "mp0", "mp1", "mp2", "mp3", "mp4", "mp5", "mp6", "mp7", "mp8", "mp9", "mp10", "mp11", "mp12", "mp13", "mp14", "mp15", "mp16", "mp17", "mp18", "mp19", "mp20", "mp21", "mp22", "mp23", "mp24", "mp25", "mp26", "mp27", "mp28", "mp29", "mp30", "mp31", "mp32", "mp33", "mp34", "mp35", "mp36", "mp37", "mp38", "mp39", "mp40", "mp41", "mp42", "mp43", "mp44", "mp45", "mp46", "mp47", "mp48", "mp49", "mp50", "mp51", "mp52", "mp53", "mp54", "mp55", "mp56", "mp57", "mp58", "mp59", "mp60", "mp61", "mp62", "mp63", "mp64", "mp65", "mp66", "mp67", "mp68", "mp69", "mp70", "mp71", "mp72", "mp73", "mp74", "mp75", "mp76", "mp77", "mp78", "mp79", "mp80", "mp81", "mp82", "mp83", "mp84", "mp85", "mp86", "mp87", "mp88", "mp89", "mp90", "mp91", "mp92", "mp93", "mp94", "mp95", "mp96", "mp97", "mp98", "mp99", "mp100", "mp101", "mp102", "mp103", "mp104", "mp105", "mp106", "mp107", "mp108", "mp109", "mp110", "mp111", "mp112", "mp113", "mp114", "mp115", "mp116", "mp117", "mp118", "mp119", "mp120", "mp121", "mp122", "mp123", "mp124", "mp125", "mp126", "mp127", "mp128", "mp129", "mp130", "mp131", "mp132", "mp133", "mp134", "mp135", "mp136", "mp137", "mp138", "mp139", "mp140", "mp141", "mp142", "mp143", "mp144", "mp145", "mp146", "mp147", "mp148", "mp149", "mp150", "mp151", "mp152", "mp153", "mp154", "mp155", "mp156", "mp157", "mp158", "mp159", "mp160", "mp161", "mp162", "mp163", "mp164", "mp165", "mp166", "mp167", "mp168", "mp169", "mp170", "mp171", "mp172", "mp173", "mp174", "mp175", "mp176", "mp177", "mp178", "mp179", "mp180", "mp181", "mp182", "mp183", "mp184", "mp185", "mp186", "mp187", "mp188", "mp189", "mp190", "mp191", "mp192", "mp193", "mp194", "mp195", "mp196", "mp197", "mp198", "mp199", "mp200", "mp201", "mp202", "mp203", "mp204", "mp205", "mp206", "mp207", "mp208", "mp209", "mp210", "mp211", "mp212", "mp213", "mp214", "mp215", "mp216", "mp217", "mp218", "mp219", "mp220", "mp221", "mp222", "mp223", "mp224", "mp225", "mp226", "mp227", "mp228", "mp229", "mp230", "mp231", "mp232", "mp233", "mp234", "mp235", "mp236", "mp237", "mp238", "mp239", "mp240", "mp241", "mp242", "mp243", "mp244", "mp245", "mp246", "mp247", "mp248", "mp249", "mp250", "mp251", "mp252", "mp253", "mp254", "mp255", "unused0", "unused1", "unused2", "unused3", "unused4", "unused5", "unused6", "unused7", "unused8", "unused9", "unused10", "unused11", "unused12", "unused13", "unused14", "unused15", "unused16", "unused17", "unused18", "unused19", "unused20", "unused21", "unused22", "unused23", "unused24", "unused25", "unused26", "unused27", "unused28", "unused29", "unused30", "unused31", "unused32", "unused33", "unused34", "unused35", "unused36", "unused37", "unused38", "unused39", "unused40", "unused41", "unused42", "unused43", "unused44", "unused45", "unused46", "unused47", "unused48", "unused49", "unused50", "unused51", "unused52", "unused53", "unused54", "unused55", "unused56", "unused57", "unused58", "unused59", "unused60", "unused61", "unused62", "unused63", "unused64", "unused65", "unused66", "unused67", "unused68", "unused69", "unused70", "unused71", "unused72", "unused73", "unused74", "unused75", "unused76", "unused77", "unused78", "unused79", "unused80", "unused81", "unused82", "unused83", "unused84", "unused85", "unused86", "unused87", "unused88", "unused89", "unused90", "unused91", "unused92", "unused93", "unused94", "unused95", "unused96", "unused97", "unused98", "unused99", "unused100", "unused101", "unused102", "unused103", "unused104", "unused105", "unused106", "unused107", "unused108", "unused109", "unused110", "unused111", "unused112", "unused113", "unused114", "unused115", "unused116", "unused117", "unused118", "unused119", "unused120", "unused121", "unused122", "unused123", "unused124", "unused125", "unused126", "unused127", "unused128", "unused129", "unused130", "unused131", "unused132", "unused133", "unused134", "unused135", "unused136", "unused137", "unused138", "unused139", "unused140", "unused141", "unused142", "unused143", "unused144", "unused145", "unused146", "unused147", "unused148", "unused149", "unused150", "unused151", "unused152", "unused153", "unused154", "unused155", "unused156", "unused157", "unused158", "unused159", "unused160", "unused161", "unused162", "unused163", "unused164", "unused165", "unused166", "unused167", "unused168", "unused169", "unused170", "unused171", "unused172", "unused173", "unused174", "unused175", "unused176", "unused177", "unused178", "unused179", "unused180", "unused181", "unused182", "unused183", "unused184", "unused185", "unused186", "unused187", "unused188", "unused189", "unused190", "unused191", "unused192", "unused193", "unused194", "unused195", "unused196", "unused197", "unused198", "unused199", "unused200", "unused201", "unused202", "unused203", "unused204", "unused205", "unused206", "unused207", "unused208", "unused209", "unused210", "unused211", "unused212", "unused213", "unused214", "unused215", "unused216", "unused217", "unused218", "unused219", "unused220", "unused221", "unused222", "unused223", "unused224", "unused225", "unused226", "unused227", "unused228", "unused229", "unused230", "unused231", "unused232", "unused233", "unused234", "unused235", "unused236", "unused237", "unused238", "unused239", "unused240", "unused241", "unused242", "unused243", "unused244", "unused245", "unused246", "unused247", "unused248", "unused249", "unused250", "unused251", "unused252", "unused253", "unused254", "unused255")]
        [String]
        ${TargetVolume},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Digest},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Decimal]]
        ${Bwlimit},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Storage}
    )

    Process {
        'Creating PSCustomObject: ProxmoxPVE => PVEPOSTNodesLxcMovevolumeRB' | Write-Debug
        $PSBoundParameters | Out-DebugParameter | Write-Debug

        if (!$TargetDigest -and $TargetDigest.length -gt 40) {
            throw "invalid value for 'TargetDigest', the character length must be smaller than or equal to 40."
        }

        if ($TargetVmid -and $TargetVmid -gt 999999999) {
          throw "invalid value for 'TargetVmid', must be smaller than or equal to 999999999."
        }

        if ($TargetVmid -and $TargetVmid -lt 100) {
          throw "invalid value for 'TargetVmid', must be greater than or equal to 100."
        }

        if (!$Digest -and $Digest.length -gt 40) {
            throw "invalid value for 'Digest', the character length must be smaller than or equal to 40."
        }


         $DisplayNameMapping =@{
            "TargetDigest"="target-digest"; "Volume"="volume"; "TargetVmid"="target-vmid"; "Delete"="delete"; "TargetVolume"="target-volume"; "Digest"="digest"; "Bwlimit"="bwlimit"; "Storage"="storage"
        }
        
         $OBJ = @{}
        foreach($parameter in   $PSBoundParameters.Keys){
            #If Specifield map the Display name back
            $OBJ.($DisplayNameMapping.($parameter)) = $PSBoundParameters.$parameter
        }

        $PSO = [PSCustomObject]$OBJ


        return $PSO
    }
}

<#
.SYNOPSIS

Convert from JSON to POSTNodesLxcMovevolumeRB<PSCustomObject>

.DESCRIPTION

Convert from JSON to POSTNodesLxcMovevolumeRB<PSCustomObject>

.PARAMETER Json

Json object

.OUTPUTS

POSTNodesLxcMovevolumeRB<PSCustomObject>
#>

function ConvertFrom-PVEJsonToPOSTNodesLxcMovevolumeRB {
    Param(
        [AllowEmptyString()]
        [string]$Json
    )

    Process {
        'Converting JSON to PSCustomObject: ProxmoxPVE => PVEPOSTNodesLxcMovevolumeRB' | Write-Debug
        $PSBoundParameters | Out-DebugParameter | Write-Debug

        $JsonParameters = ConvertFrom-Json -InputObject $Json

        # check if Json contains properties not defined in PVEPOSTNodesLxcMovevolumeRB
        $AllProperties = ("target-digest", "volume", "target-vmid", "delete", "target-volume", "digest", "bwlimit", "storage")
        foreach ($name in $JsonParameters.PsObject.Properties.Name) {
            if (!($AllProperties.Contains($name))) {
                throw "Error! JSON key '$name' not found in the properties: $($AllProperties)"
            }
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "target-digest"))) { #optional property not found
            $TargetDigest = $null
        } else {
            $TargetDigest = $JsonParameters.PSobject.Properties["target-digest"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "volume"))) { #optional property not found
            $Volume = $null
        } else {
            $Volume = $JsonParameters.PSobject.Properties["volume"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "target-vmid"))) { #optional property not found
            $TargetVmid = $null
        } else {
            $TargetVmid = $JsonParameters.PSobject.Properties["target-vmid"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "delete"))) { #optional property not found
            $Delete = $null
        } else {
            $Delete = $JsonParameters.PSobject.Properties["delete"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "target-volume"))) { #optional property not found
            $TargetVolume = $null
        } else {
            $TargetVolume = $JsonParameters.PSobject.Properties["target-volume"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "digest"))) { #optional property not found
            $Digest = $null
        } else {
            $Digest = $JsonParameters.PSobject.Properties["digest"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "bwlimit"))) { #optional property not found
            $Bwlimit = $null
        } else {
            $Bwlimit = $JsonParameters.PSobject.Properties["bwlimit"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "storage"))) { #optional property not found
            $Storage = $null
        } else {
            $Storage = $JsonParameters.PSobject.Properties["storage"].value
        }

        $PSO = [PSCustomObject]@{
            "target-digest" = ${TargetDigest}
            "volume" = ${Volume}
            "target-vmid" = ${TargetVmid}
            "delete" = ${Delete}
            "target-volume" = ${TargetVolume}
            "digest" = ${Digest}
            "bwlimit" = ${Bwlimit}
            "storage" = ${Storage}
        }

        return $PSO
    }

}