v2025/src/PSSailpoint.V2025/Model/ManagedClientHealthIndicatorsBody.ps1

#
# Identity Security Cloud V2025 API
# Use these APIs to interact with the Identity Security Cloud platform to achieve repeatable, automated processes with greater scalability. We encourage you to join the SailPoint Developer Community forum at https://developer.sailpoint.com/discuss to connect with other developers using our APIs.
# Version: v2025
# Generated by OpenAPI Generator: https://openapi-generator.tech
#

<#
.SYNOPSIS

No summary available.

.DESCRIPTION

Health indicator details from the Managed Client

.PARAMETER Id
Unique identifier for the health report
.PARAMETER ClusterId
Cluster ID the health report belongs to
.PARAMETER ApiUser
API user ID sending the health data
.PARAMETER CcgEtag
ETag value for CCG version control
.PARAMETER CcgPin
PIN value for CCG validation
.PARAMETER CookbookEtag
ETag for cookbook version
.PARAMETER Hostname
Hostname of the Managed Client
.PARAMETER InternalIp
Internal IP address of the Managed Client
.PARAMETER LastSeen
Epoch timestamp (in millis) when last seen
.PARAMETER SinceSeen
Seconds since last seen
.PARAMETER SinceSeenMillis
Milliseconds since last seen
.PARAMETER LocalDev
Indicates if this is a local development instance
.PARAMETER VarStacktrace
Stacktrace associated with any error, if available
.PARAMETER State
Optional state value from the client
.PARAMETER Status
Status of the client at the time of report
.PARAMETER Uuid
Optional UUID from the client
.PARAMETER Product
Product type (e.g., idn)
.PARAMETER VaVersion
VA version installed on the client
.PARAMETER PlatformVersion
Version of the platform on which VA is running
.PARAMETER OsVersion
Operating system version
.PARAMETER OsType
Operating system type
.PARAMETER Hypervisor
Virtualization platform used
.PARAMETER ConsolidatedHealthIndicatorsStatus
Consolidated health indicator status
.PARAMETER LastNotifiedCcgVersion
The last CCG version for which notification was sent
.PARAMETER DeployedProcesses
Information about deployed processes
.PARAMETER HealthIndicators
No description available.
.OUTPUTS

ManagedClientHealthIndicatorsBody<PSCustomObject>
#>


function Initialize-V2025ManagedClientHealthIndicatorsBody {
    [CmdletBinding()]
    Param (
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Id},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${ClusterId},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${ApiUser},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${CcgEtag},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${CcgPin},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${CookbookEtag},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Hostname},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${InternalIp},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${LastSeen},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${SinceSeen},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${SinceSeenMillis},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${LocalDev} = $false,
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${VarStacktrace},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${State},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateSet("NORMAL", "UNDEFINED", "WARNING", "ERROR", "FAILED")]
        [String]
        ${Status},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Uuid},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Product},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${VaVersion},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${PlatformVersion},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${OsVersion},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${OsType},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Hypervisor},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateSet("NORMAL", "WARNING", "ERROR")]
        [String]
        ${ConsolidatedHealthIndicatorsStatus},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${LastNotifiedCcgVersion},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${DeployedProcesses},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${HealthIndicators}
    )

    Process {
        'Creating PSCustomObject: PSSailpoint.V2025 => V2025ManagedClientHealthIndicatorsBody' | Write-Debug
        $PSBoundParameters | Out-DebugParameter | Write-Debug

        if (!$Id) {
            throw "invalid value for 'Id', 'Id' cannot be null."
        }

        if (!$ClusterId) {
            throw "invalid value for 'ClusterId', 'ClusterId' cannot be null."
        }

        if (!$ApiUser) {
            throw "invalid value for 'ApiUser', 'ApiUser' cannot be null."
        }

        if (!$Hostname) {
            throw "invalid value for 'Hostname', 'Hostname' cannot be null."
        }

        if (!$Status) {
            throw "invalid value for 'Status', 'Status' cannot be null."
        }

        if (!$Product) {
            throw "invalid value for 'Product', 'Product' cannot be null."
        }

        if (!$PlatformVersion) {
            throw "invalid value for 'PlatformVersion', 'PlatformVersion' cannot be null."
        }

        if (!$OsVersion) {
            throw "invalid value for 'OsVersion', 'OsVersion' cannot be null."
        }

        if (!$OsType) {
            throw "invalid value for 'OsType', 'OsType' cannot be null."
        }

        if (!$Hypervisor) {
            throw "invalid value for 'Hypervisor', 'Hypervisor' cannot be null."
        }

        if (!$ConsolidatedHealthIndicatorsStatus) {
            throw "invalid value for 'ConsolidatedHealthIndicatorsStatus', 'ConsolidatedHealthIndicatorsStatus' cannot be null."
        }

        if (!$HealthIndicators) {
            throw "invalid value for 'HealthIndicators', 'HealthIndicators' cannot be null."
        }


        $PSO = [PSCustomObject]@{
            "id" = ${Id}
            "clusterId" = ${ClusterId}
            "apiUser" = ${ApiUser}
            "ccg_etag" = ${CcgEtag}
            "ccg_pin" = ${CcgPin}
            "cookbook_etag" = ${CookbookEtag}
            "hostname" = ${Hostname}
            "internal_ip" = ${InternalIp}
            "lastSeen" = ${LastSeen}
            "sinceSeen" = ${SinceSeen}
            "sinceSeenMillis" = ${SinceSeenMillis}
            "localDev" = ${LocalDev}
            "stacktrace" = ${VarStacktrace}
            "state" = ${State}
            "status" = ${Status}
            "uuid" = ${Uuid}
            "product" = ${Product}
            "va_version" = ${VaVersion}
            "platform_version" = ${PlatformVersion}
            "os_version" = ${OsVersion}
            "os_type" = ${OsType}
            "hypervisor" = ${Hypervisor}
            "consolidatedHealthIndicatorsStatus" = ${ConsolidatedHealthIndicatorsStatus}
            "lastNotifiedCcgVersion" = ${LastNotifiedCcgVersion}
            "deployed_processes" = ${DeployedProcesses}
            "health_indicators" = ${HealthIndicators}
        }

        return $PSO
    }
}

<#
.SYNOPSIS

Convert from JSON to ManagedClientHealthIndicatorsBody<PSCustomObject>

.DESCRIPTION

Convert from JSON to ManagedClientHealthIndicatorsBody<PSCustomObject>

.PARAMETER Json

Json object

.OUTPUTS

ManagedClientHealthIndicatorsBody<PSCustomObject>
#>

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

    Process {
        'Converting JSON to PSCustomObject: PSSailpoint.V2025 => V2025ManagedClientHealthIndicatorsBody' | Write-Debug
        $PSBoundParameters | Out-DebugParameter | Write-Debug

        $JsonParameters = ConvertFrom-Json -InputObject $Json

        # check if Json contains properties not defined in V2025ManagedClientHealthIndicatorsBody
        $AllProperties = ("alertKey", "id", "clusterId", "apiUser", "ccg_etag", "ccg_pin", "cookbook_etag", "hostname", "internal_ip", "lastSeen", "sinceSeen", "sinceSeenMillis", "localDev", "stacktrace", "state", "status", "uuid", "product", "va_version", "platform_version", "os_version", "os_type", "hypervisor", "consolidatedHealthIndicatorsStatus", "lastNotifiedCcgVersion", "deployed_processes", "health_indicators")
        foreach ($name in $JsonParameters.PsObject.Properties.Name) {
            if (!($AllProperties.Contains($name))) {
                throw "Error! JSON key '$name' not found in the properties: $($AllProperties)"
            }
        }

        If ([string]::IsNullOrEmpty($Json) -or $Json -eq "{}") { # empty json
            throw "Error! Empty JSON cannot be serialized due to the required property 'id' missing."
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "id"))) {
            throw "Error! JSON cannot be serialized due to the required property 'id' missing."
        } else {
            $Id = $JsonParameters.PSobject.Properties["id"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "clusterId"))) {
            throw "Error! JSON cannot be serialized due to the required property 'clusterId' missing."
        } else {
            $ClusterId = $JsonParameters.PSobject.Properties["clusterId"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "apiUser"))) {
            throw "Error! JSON cannot be serialized due to the required property 'apiUser' missing."
        } else {
            $ApiUser = $JsonParameters.PSobject.Properties["apiUser"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "hostname"))) {
            throw "Error! JSON cannot be serialized due to the required property 'hostname' missing."
        } else {
            $Hostname = $JsonParameters.PSobject.Properties["hostname"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "status"))) {
            throw "Error! JSON cannot be serialized due to the required property 'status' missing."
        } else {
            $Status = $JsonParameters.PSobject.Properties["status"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "product"))) {
            throw "Error! JSON cannot be serialized due to the required property 'product' missing."
        } else {
            $Product = $JsonParameters.PSobject.Properties["product"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "platform_version"))) {
            throw "Error! JSON cannot be serialized due to the required property 'platform_version' missing."
        } else {
            $PlatformVersion = $JsonParameters.PSobject.Properties["platform_version"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "os_version"))) {
            throw "Error! JSON cannot be serialized due to the required property 'os_version' missing."
        } else {
            $OsVersion = $JsonParameters.PSobject.Properties["os_version"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "os_type"))) {
            throw "Error! JSON cannot be serialized due to the required property 'os_type' missing."
        } else {
            $OsType = $JsonParameters.PSobject.Properties["os_type"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "hypervisor"))) {
            throw "Error! JSON cannot be serialized due to the required property 'hypervisor' missing."
        } else {
            $Hypervisor = $JsonParameters.PSobject.Properties["hypervisor"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "consolidatedHealthIndicatorsStatus"))) {
            throw "Error! JSON cannot be serialized due to the required property 'consolidatedHealthIndicatorsStatus' missing."
        } else {
            $ConsolidatedHealthIndicatorsStatus = $JsonParameters.PSobject.Properties["consolidatedHealthIndicatorsStatus"].value
        }

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "health_indicators"))) {
            throw "Error! JSON cannot be serialized due to the required property 'health_indicators' missing."
        } else {
            $HealthIndicators = $JsonParameters.PSobject.Properties["health_indicators"].value
        }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $PSO = [PSCustomObject]@{
            "alertKey" = ${AlertKey}
            "id" = ${Id}
            "clusterId" = ${ClusterId}
            "apiUser" = ${ApiUser}
            "ccg_etag" = ${CcgEtag}
            "ccg_pin" = ${CcgPin}
            "cookbook_etag" = ${CookbookEtag}
            "hostname" = ${Hostname}
            "internal_ip" = ${InternalIp}
            "lastSeen" = ${LastSeen}
            "sinceSeen" = ${SinceSeen}
            "sinceSeenMillis" = ${SinceSeenMillis}
            "localDev" = ${LocalDev}
            "stacktrace" = ${VarStacktrace}
            "state" = ${State}
            "status" = ${Status}
            "uuid" = ${Uuid}
            "product" = ${Product}
            "va_version" = ${VaVersion}
            "platform_version" = ${PlatformVersion}
            "os_version" = ${OsVersion}
            "os_type" = ${OsType}
            "hypervisor" = ${Hypervisor}
            "consolidatedHealthIndicatorsStatus" = ${ConsolidatedHealthIndicatorsStatus}
            "lastNotifiedCcgVersion" = ${LastNotifiedCcgVersion}
            "deployed_processes" = ${DeployedProcesses}
            "health_indicators" = ${HealthIndicators}
        }

        return $PSO
    }

}