Model/IdpDetails.ps1

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

<#
.SYNOPSIS

No summary available.

.DESCRIPTION

No description available.

.PARAMETER Role
Federation protocol role
.PARAMETER EntityId
An entity ID is a globally unique name for a SAML entity, either an Identity Provider (IDP) or a Service Provider (SP).
.PARAMETER Binding
Defines the binding used for the SAML flow. Used with IDP configurations.
.PARAMETER AuthContext
Specifies the SAML authentication method to use. Used with IDP configurations.
.PARAMETER LogoutUrl
The IDP logout URL. Used with IDP configurations.
.PARAMETER IncludeAuthContext
Determines if the configured AuthnContext should be used or the default. Used with IDP configurations.
.PARAMETER NameId
The name id format to use. Used with IDP configurations.
.PARAMETER JitConfiguration
No description available.
.PARAMETER Cert
The Base64-encoded certificate used by the IDP. Used with IDP configurations.
.PARAMETER LoginUrlPost
The IDP POST URL, used with IDP HTTP-POST bindings for IDP-initiated logins. Used with IDP configurations.
.PARAMETER LoginUrlRedirect
The IDP Redirect URL. Used with IDP configurations.
.PARAMETER MappingAttribute
Return the saml Id for the given user, based on the IDN as SP settings of the org. Used with IDP configurations.
.PARAMETER CertificateExpirationDate
The expiration date extracted from the certificate.
.PARAMETER CertificateName
The name extracted from the certificate.
.OUTPUTS

IdpDetails<PSCustomObject>
#>


function Initialize-IdpDetails {
    [CmdletBinding()]
    Param (
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateSet("SAML_IDP")]
        [String]
        ${Role},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${EntityId},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Binding},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${AuthContext},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${LogoutUrl},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${IncludeAuthContext} = $false,
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${NameId},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${JitConfiguration},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Cert},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${LoginUrlPost},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${LoginUrlRedirect},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${MappingAttribute},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${CertificateExpirationDate},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${CertificateName}
    )

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


        $PSO = [PSCustomObject]@{
            "role" = ${Role}
            "entityId" = ${EntityId}
            "binding" = ${Binding}
            "authContext" = ${AuthContext}
            "logoutUrl" = ${LogoutUrl}
            "includeAuthContext" = ${IncludeAuthContext}
            "nameId" = ${NameId}
            "jitConfiguration" = ${JitConfiguration}
            "cert" = ${Cert}
            "loginUrlPost" = ${LoginUrlPost}
            "loginUrlRedirect" = ${LoginUrlRedirect}
            "mappingAttribute" = ${MappingAttribute}
            "certificateExpirationDate" = ${CertificateExpirationDate}
            "certificateName" = ${CertificateName}
        }

        return $PSO
    }
}

<#
.SYNOPSIS

Convert from JSON to IdpDetails<PSCustomObject>

.DESCRIPTION

Convert from JSON to IdpDetails<PSCustomObject>

.PARAMETER Json

Json object

.OUTPUTS

IdpDetails<PSCustomObject>
#>

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

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

        $JsonParameters = ConvertFrom-Json -InputObject $Json

        # check if Json contains properties not defined in IdpDetails
        $AllProperties = ("role", "entityId", "binding", "authContext", "logoutUrl", "includeAuthContext", "nameId", "jitConfiguration", "cert", "loginUrlPost", "loginUrlRedirect", "mappingAttribute", "certificateExpirationDate", "certificateName")
        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 "role"))) { #optional property not found
            $Role = $null
        } else {
            $Role = $JsonParameters.PSobject.Properties["role"].value
        }

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

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

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

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

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

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

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

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

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

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

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

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

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

        $PSO = [PSCustomObject]@{
            "role" = ${Role}
            "entityId" = ${EntityId}
            "binding" = ${Binding}
            "authContext" = ${AuthContext}
            "logoutUrl" = ${LogoutUrl}
            "includeAuthContext" = ${IncludeAuthContext}
            "nameId" = ${NameId}
            "jitConfiguration" = ${JitConfiguration}
            "cert" = ${Cert}
            "loginUrlPost" = ${LoginUrlPost}
            "loginUrlRedirect" = ${LoginUrlRedirect}
            "mappingAttribute" = ${MappingAttribute}
            "certificateExpirationDate" = ${CertificateExpirationDate}
            "certificateName" = ${CertificateName}
        }

        return $PSO
    }

}