Model/VirtualSite.ps1

#
# SMServer V6
# Syncplify Server! REST API
# Version: 1.0.0
# Generated by OpenAPI Generator: https://openapi-generator.tech
#

<#
.SYNOPSIS

No summary available.

.DESCRIPTION

When adding a new virtual site the required fields are 'id', 'name', and at least one binding must be defined

.PARAMETER Id
ID of the virtual site. Only letters and numbers, no spaces, no special characters
.PARAMETER Name
Name of the virtual site (can be anything)
.PARAMETER AutoStart
Should this virtualsite be automatically started when the program starts?
.PARAMETER AutoRestart
Should this virtualsite be automatically restarted if its process ""dies"" unexpectedly?
.PARAMETER ServiceStatus
No description available.
.PARAMETER NodeBindings
Multiple bindings are supported for each node of each virtual site
.PARAMETER AdminUiLogo
Logo to be displayed in the Admin UI
.PARAMETER AdminUiLogoType
MIME-Type of the logo to be displayed in the Admin UI
.PARAMETER AdminUiDisclaimer
Legal disclaimer (free text) to be displayed on the Admin UI's login page
.OUTPUTS

VirtualSite<PSCustomObject>
#>


function Initialize-SS6VirtualSite {
    [CmdletBinding()]
    Param (
        [Parameter(Position = 0, ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Id},
        [Parameter(Position = 1, ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Name},
        [Parameter(Position = 2, ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${AutoStart},
        [Parameter(Position = 3, ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${AutoRestart},
        [Parameter(Position = 4, ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${ServiceStatus},
        [Parameter(Position = 5, ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject[]]
        ${NodeBindings},
        [Parameter(Position = 6, ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${AdminUiLogo},
        [Parameter(Position = 7, ValueFromPipelineByPropertyName = $true)]
        [String]
        ${AdminUiLogoType},
        [Parameter(Position = 8, ValueFromPipelineByPropertyName = $true)]
        [String]
        ${AdminUiDisclaimer}
    )

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


        $PSO = [PSCustomObject]@{
            "id" = ${Id}
            "name" = ${Name}
            "autoStart" = ${AutoStart}
            "autoRestart" = ${AutoRestart}
            "serviceStatus" = ${ServiceStatus}
            "nodeBindings" = ${NodeBindings}
            "adminUiLogo" = ${AdminUiLogo}
            "adminUiLogoType" = ${AdminUiLogoType}
            "adminUiDisclaimer" = ${AdminUiDisclaimer}
        }


        return $PSO
    }
}

<#
.SYNOPSIS

Convert from JSON to VirtualSite<PSCustomObject>

.DESCRIPTION

Convert from JSON to VirtualSite<PSCustomObject>

.PARAMETER Json

Json object

.OUTPUTS

VirtualSite<PSCustomObject>
#>

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

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

        $JsonParameters = ConvertFrom-Json -InputObject $Json

        # check if Json contains properties not defined in SS6VirtualSite
        $AllProperties = ("id", "name", "autoStart", "autoRestart", "serviceStatus", "nodeBindings", "adminUiLogo", "adminUiLogoType", "adminUiDisclaimer")
        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 "id"))) { #optional property not found
            $Id = $null
        } else {
            $Id = $JsonParameters.PSobject.Properties["id"].value
        }

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

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

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

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

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

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

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

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

        $PSO = [PSCustomObject]@{
            "id" = ${Id}
            "name" = ${Name}
            "autoStart" = ${AutoStart}
            "autoRestart" = ${AutoRestart}
            "serviceStatus" = ${ServiceStatus}
            "nodeBindings" = ${NodeBindings}
            "adminUiLogo" = ${AdminUiLogo}
            "adminUiLogoType" = ${AdminUiLogoType}
            "adminUiDisclaimer" = ${AdminUiDisclaimer}
        }

        return $PSO
    }

}