intelligence/src/PSSailpoint.Intelligence/Model/Intelidentitymachineaggregate.ps1

#
# Identity Security Cloud API - Intelligence
# 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: v1
# Generated by OpenAPI Generator: https://openapi-generator.tech
#

<#
.SYNOPSIS

No summary available.

.DESCRIPTION

Non-human identity response (type NHI). Machine identity fields are hoisted to the top level (no machine wrapper). Omits human-only fields and slices (email, alias, privilegedAccess, outliers, accessHistory). Top-level sourceId is omitted; use source.id when present. matchConfidence is present for opaque prefix resolution (exact or partial); omitted for direct id eq and exact opaque matches. The identityGraph deep link is omitted when the tenant lacks the idg:base license.

.PARAMETER Id
Identity Security Cloud identifier for this non-human identity.
.PARAMETER Type
Identity type for the matched record.
.PARAMETER DisplayName
Preferred display name for the non-human identity.
.PARAMETER Description
Optional description from upstream when present.
.PARAMETER Subtype
Sub-classification label for that NHI.
.PARAMETER Created
Timestamp when the identity record was created in Identity Security Cloud.
.PARAMETER Modified
Timestamp when the identity record was last modified in Identity Security Cloud.
.PARAMETER MatchConfidence
Match quality for opaque prefix resolution; omitted for direct id eq and exact opaque matches.
.PARAMETER IdentityGraph
Omitted when the tenant lacks the idg:base license.
.PARAMETER Accounts
No description available.
.PARAMETER NativeIdentity
Native identifier on the source system.
.PARAMETER DatasetId
Dataset identifier from upstream machine-identity services when present.
.PARAMETER Source
Source metadata for the machine identity when present upstream.
.PARAMETER ExistsOnSource
Upstream existsOnSource value. Wire uses uppercase strings such as TRUE or FALSE.
.PARAMETER ManuallyEdited
True when an administrator manually edited machine identity attributes.
.PARAMETER ManuallyCreated
True when the machine identity was created manually in Identity Security Cloud.
.PARAMETER Owners
No description available.
.PARAMETER UserEntitlements
Entitlements associated with the machine identity from upstream.
.PARAMETER Attributes
Connector or runtime metadata; empty object when absent upstream.
.PARAMETER Derived
No description available.
.OUTPUTS

Intelidentitymachineaggregate<PSCustomObject>
#>


function Initialize-Intelidentitymachineaggregate {
    [CmdletBinding()]
    Param (
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Id},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateSet("NHI")]
        [String]
        ${Type},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${DisplayName},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Description},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Subtype},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[System.DateTime]]
        ${Created},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[System.DateTime]]
        ${Modified},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateSet("exact", "partial")]
        [String]
        ${MatchConfidence},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${IdentityGraph},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${Accounts},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${NativeIdentity},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${DatasetId},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${Source},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${ExistsOnSource},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${ManuallyEdited} = $false,
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${ManuallyCreated} = $false,
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${Owners},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject[]]
        ${UserEntitlements},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Collections.Hashtable]
        ${Attributes},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${Derived}
    )

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

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

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

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

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

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

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

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


        $PSO = [PSCustomObject]@{
            "id" = ${Id}
            "type" = ${Type}
            "displayName" = ${DisplayName}
            "description" = ${Description}
            "subtype" = ${Subtype}
            "created" = ${Created}
            "modified" = ${Modified}
            "matchConfidence" = ${MatchConfidence}
            "identityGraph" = ${IdentityGraph}
            "accounts" = ${Accounts}
            "nativeIdentity" = ${NativeIdentity}
            "datasetId" = ${DatasetId}
            "source" = ${Source}
            "existsOnSource" = ${ExistsOnSource}
            "manuallyEdited" = ${ManuallyEdited}
            "manuallyCreated" = ${ManuallyCreated}
            "owners" = ${Owners}
            "userEntitlements" = ${UserEntitlements}
            "attributes" = ${Attributes}
            "derived" = ${Derived}
        }

        return $PSO
    }
}

<#
.SYNOPSIS

Convert from JSON to Intelidentitymachineaggregate<PSCustomObject>

.DESCRIPTION

Convert from JSON to Intelidentitymachineaggregate<PSCustomObject>

.PARAMETER Json

Json object

.OUTPUTS

Intelidentitymachineaggregate<PSCustomObject>
#>

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

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

        $JsonParameters = ConvertFrom-Json -InputObject $Json

        # check if Json contains properties not defined in Intelidentitymachineaggregate
        $AllProperties = ("id", "type", "displayName", "description", "subtype", "created", "modified", "matchConfidence", "identityGraph", "accounts", "nativeIdentity", "datasetId", "source", "existsOnSource", "manuallyEdited", "manuallyCreated", "owners", "userEntitlements", "attributes", "derived")
        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 "type"))) {
            throw "Error! JSON cannot be serialized due to the required property 'type' missing."
        } else {
            $Type = $JsonParameters.PSobject.Properties["type"].value
        }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        $PSO = [PSCustomObject]@{
            "id" = ${Id}
            "type" = ${Type}
            "displayName" = ${DisplayName}
            "description" = ${Description}
            "subtype" = ${Subtype}
            "created" = ${Created}
            "modified" = ${Modified}
            "matchConfidence" = ${MatchConfidence}
            "identityGraph" = ${IdentityGraph}
            "accounts" = ${Accounts}
            "nativeIdentity" = ${NativeIdentity}
            "datasetId" = ${DatasetId}
            "source" = ${Source}
            "existsOnSource" = ${ExistsOnSource}
            "manuallyEdited" = ${ManuallyEdited}
            "manuallyCreated" = ${ManuallyCreated}
            "owners" = ${Owners}
            "userEntitlements" = ${UserEntitlements}
            "attributes" = ${Attributes}
            "derived" = ${Derived}
        }

        return $PSO
    }

}