cc/src/PSSailpointCC/Model/RefreshIdentitiesRequestRefreshArgs.ps1

#
# IdentityNow cc (private) APIs
# No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
# Version: 1.0.0
# Generated by OpenAPI Generator: https://openapi-generator.tech
#

<#
.SYNOPSIS

No summary available.

.DESCRIPTION

No description available.

.PARAMETER CorrelateEntitlements
This will refresh entitlement, role, and access profile calculations.
.PARAMETER PromoteAttributes
This will calculate identity attributes.
.PARAMETER RefreshManagerStatus
This recalculates manager correlation and manager status. Note: This is computationally expensive to run.
.PARAMETER SynchronizeAttributes
Enables attribute synchronization.
.PARAMETER PruneIdentities
Option that will enable deletion of an identity objects if there are no account objects. Note: This is not typically used in IdentityNow, except by guidance from SailPoint.
.PARAMETER Provision
Enables provisioning of role assignments with entitlements that are not currently fulfilled.
.OUTPUTS

RefreshIdentitiesRequestRefreshArgs<PSCustomObject>
#>


function Initialize-CCRefreshIdentitiesRequestRefreshArgs {
    [CmdletBinding()]
    Param (
        [Parameter(Position = 0, ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${CorrelateEntitlements},
        [Parameter(Position = 1, ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${PromoteAttributes},
        [Parameter(Position = 2, ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${RefreshManagerStatus},
        [Parameter(Position = 3, ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${SynchronizeAttributes},
        [Parameter(Position = 4, ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${PruneIdentities},
        [Parameter(Position = 5, ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${Provision}
    )

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


        $PSO = [PSCustomObject]@{
            "correlateEntitlements" = ${CorrelateEntitlements}
            "promoteAttributes" = ${PromoteAttributes}
            "refreshManagerStatus" = ${RefreshManagerStatus}
            "synchronizeAttributes" = ${SynchronizeAttributes}
            "pruneIdentities" = ${PruneIdentities}
            "provision" = ${Provision}
        }


        return $PSO
    }
}

<#
.SYNOPSIS

Convert from JSON to RefreshIdentitiesRequestRefreshArgs<PSCustomObject>

.DESCRIPTION

Convert from JSON to RefreshIdentitiesRequestRefreshArgs<PSCustomObject>

.PARAMETER Json

Json object

.OUTPUTS

RefreshIdentitiesRequestRefreshArgs<PSCustomObject>
#>

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

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

        $JsonParameters = ConvertFrom-Json -InputObject $Json

        # check if Json contains properties not defined in CCRefreshIdentitiesRequestRefreshArgs
        $AllProperties = ("correlateEntitlements", "promoteAttributes", "refreshManagerStatus", "synchronizeAttributes", "pruneIdentities", "provision")
        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 "correlateEntitlements"))) { #optional property not found
            $CorrelateEntitlements = $null
        } else {
            $CorrelateEntitlements = $JsonParameters.PSobject.Properties["correlateEntitlements"].value
        }

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

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

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

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

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

        $PSO = [PSCustomObject]@{
            "correlateEntitlements" = ${CorrelateEntitlements}
            "promoteAttributes" = ${PromoteAttributes}
            "refreshManagerStatus" = ${RefreshManagerStatus}
            "synchronizeAttributes" = ${SynchronizeAttributes}
            "pruneIdentities" = ${PruneIdentities}
            "provision" = ${Provision}
        }

        return $PSO
    }

}