v3/src/PSSailpoint/Model/RequestableObject.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 Id
Id of the requestable object itself
.PARAMETER Name
Human-readable display name of the requestable object
.PARAMETER Created
The time when the requestable object was created
.PARAMETER Modified
The time when the requestable object was last modified
.PARAMETER Description
Description of the requestable object.
.PARAMETER Type
No description available.
.PARAMETER RequestStatus
No description available.
.PARAMETER IdentityRequestId
If *requestStatus* is *PENDING*, indicates the id of the associated account activity.
.PARAMETER OwnerRef
No description available.
.PARAMETER RequestCommentsRequired
Whether the requester must provide comments when requesting the object.
.OUTPUTS

RequestableObject<PSCustomObject>
#>


function Initialize-RequestableObject {
    [CmdletBinding()]
    Param (
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Id},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Name},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[System.DateTime]]
        ${Created},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[System.DateTime]]
        ${Modified},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${Description},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [ValidateSet("ACCESS_PROFILE", "ROLE", "ENTITLEMENT")]
        [PSCustomObject]
        ${Type},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${RequestStatus},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [String]
        ${IdentityRequestId},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [PSCustomObject]
        ${OwnerRef},
        [Parameter(ValueFromPipelineByPropertyName = $true)]
        [System.Nullable[Boolean]]
        ${RequestCommentsRequired}
    )

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


        $PSO = [PSCustomObject]@{
            "id" = ${Id}
            "name" = ${Name}
            "created" = ${Created}
            "modified" = ${Modified}
            "description" = ${Description}
            "type" = ${Type}
            "requestStatus" = ${RequestStatus}
            "identityRequestId" = ${IdentityRequestId}
            "ownerRef" = ${OwnerRef}
            "requestCommentsRequired" = ${RequestCommentsRequired}
        }

        return $PSO
    }
}

<#
.SYNOPSIS

Convert from JSON to RequestableObject<PSCustomObject>

.DESCRIPTION

Convert from JSON to RequestableObject<PSCustomObject>

.PARAMETER Json

Json object

.OUTPUTS

RequestableObject<PSCustomObject>
#>

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

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

        $JsonParameters = ConvertFrom-Json -InputObject $Json

        # check if Json contains properties not defined in RequestableObject
        $AllProperties = ("id", "name", "created", "modified", "description", "type", "requestStatus", "identityRequestId", "ownerRef", "requestCommentsRequired")
        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 "name"))) { #optional property not found
            $Name = $null
        } else {
            $Name = $JsonParameters.PSobject.Properties["name"].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 "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 "requestStatus"))) { #optional property not found
            $RequestStatus = $null
        } else {
            $RequestStatus = $JsonParameters.PSobject.Properties["requestStatus"].value
        }

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

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

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

        $PSO = [PSCustomObject]@{
            "id" = ${Id}
            "name" = ${Name}
            "created" = ${Created}
            "modified" = ${Modified}
            "description" = ${Description}
            "type" = ${Type}
            "requestStatus" = ${RequestStatus}
            "identityRequestId" = ${IdentityRequestId}
            "ownerRef" = ${OwnerRef}
            "requestCommentsRequired" = ${RequestCommentsRequired}
        }

        return $PSO
    }

}