Model/SourceSubtypeV2WithConfig.ps1

#
# SailPoint Identity Security API - Machine Account Subtypes
# Use these APIs to interact with the SailPoint Identity Security 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

A machine account subtype list item, returned when `includeConfigs=true`.

.PARAMETER Id
Unique identifier for the subtype.
.PARAMETER TechnicalName
Technical name of the subtype.
.PARAMETER DisplayName
Display name of the subtype.
.PARAMETER Description
Description of the subtype.
.PARAMETER Type
Entity type of the subtype.
.PARAMETER TargetType
Tier the subtype is defined at. `SOURCE` subtypes apply to one source. `CONNECTOR` subtypes apply to every source of a connector type. `CONNECTOR_VARIANT` is reserved for future use.
.PARAMETER TargetId
Scope key of the subtype. The source ID for `SOURCE` subtypes, or the connector type for `CONNECTOR` subtypes.
.PARAMETER TargetName
Display name of the target source or connector.
.PARAMETER Classification
Classification of the subtype.
.PARAMETER Origin
Tier of the parent subtype this subtype overrides. Set to `CONNECTOR` when a source subtype replaces a connector subtype with the same technical name in a source's effective subtype list. Otherwise `null`.
.PARAMETER VarProfile
No description available.
.PARAMETER Created
Creation timestamp.
.PARAMETER Modified
Last modified timestamp.
.PARAMETER Target
No description available.
.PARAMETER Config
No description available.
.OUTPUTS

SourceSubtypeV2WithConfig<PSCustomObject>
#>


function Initialize-SourceSubtypeV2WithConfig {
    [CmdletBinding()]
    Param (
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Id},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${TechnicalName},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${DisplayName},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Description},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Type},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateSet("SOURCE", "CONNECTOR", "CONNECTOR_VARIANT")]
        [String]
        ${TargetType},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${TargetId},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${TargetName},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateSet("MACHINE")]
        [String]
        ${Classification},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateSet("SOURCE", "CONNECTOR", "CONNECTOR_VARIANT")]
        [String]
        ${Origin},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${VarProfile},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[System.DateTime]]
        ${Created},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[System.DateTime]]
        ${Modified},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${Target},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${Config}
    )

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


        $PSO = [PSCustomObject]@{
            "id" = ${Id}
            "technicalName" = ${TechnicalName}
            "displayName" = ${DisplayName}
            "description" = ${Description}
            "type" = ${Type}
            "targetType" = ${TargetType}
            "targetId" = ${TargetId}
            "targetName" = ${TargetName}
            "classification" = ${Classification}
            "origin" = ${Origin}
            "profile" = ${VarProfile}
            "created" = ${Created}
            "modified" = ${Modified}
            "target" = ${Target}
            "config" = ${Config}
        }

        return $PSO
    }
}

<#
.SYNOPSIS

Convert from JSON to SourceSubtypeV2WithConfig<PSCustomObject>

.DESCRIPTION

Convert from JSON to SourceSubtypeV2WithConfig<PSCustomObject>

.PARAMETER Json

Json object

.OUTPUTS

SourceSubtypeV2WithConfig<PSCustomObject>
#>

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

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

        $JsonParameters = ConvertFrom-Json -InputObject $Json

        # check if Json contains properties not defined in SourceSubtypeV2WithConfig
        $AllProperties = ("id", "technicalName", "displayName", "description", "type", "targetType", "targetId", "targetName", "classification", "origin", "profile", "systemManaged", "created", "modified", "target", "config")
        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 "technicalName"))) { #optional property not found
            $TechnicalName = $null
        } else {
            $TechnicalName = $JsonParameters.PSobject.Properties["technicalName"].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 "type"))) { #optional property not found
            $Type = $null
        } else {
            $Type = $JsonParameters.PSobject.Properties["type"].value
        }

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

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

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

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

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

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

        if (!([bool]($JsonParameters.PSobject.Properties.name -match "systemManaged"))) { #optional property not found
            $SystemManaged = $null
        } else {
            $SystemManaged = $JsonParameters.PSobject.Properties["systemManaged"].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 "target"))) { #optional property not found
            $Target = $null
        } else {
            $Target = $JsonParameters.PSobject.Properties["target"].value
        }

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

        $PSO = [PSCustomObject]@{
            "id" = ${Id}
            "technicalName" = ${TechnicalName}
            "displayName" = ${DisplayName}
            "description" = ${Description}
            "type" = ${Type}
            "targetType" = ${TargetType}
            "targetId" = ${TargetId}
            "targetName" = ${TargetName}
            "classification" = ${Classification}
            "origin" = ${Origin}
            "profile" = ${VarProfile}
            "systemManaged" = ${SystemManaged}
            "created" = ${Created}
            "modified" = ${Modified}
            "target" = ${Target}
            "config" = ${Config}
        }

        return $PSO
    }

}