Public/New-IAMCoreSyncJob.ps1

function New-IAMCoreSyncJob {
    [CmdletBinding(SupportsShouldProcess = $true)]
    param (
        [Parameter(Mandatory = $false)]
        [ValidateSet("FullSyncTenant", "ConnectorImport")]
        [string] $JobType = "FullSyncTenant",
        
        [Parameter(Mandatory = $false, ParameterSetName = "Connector")]
        [ValidatePattern("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$", ErrorMessage = "ConnectorId must be a valid GUID.")] # Is a guid connector object id
        [string] $ConnectorId
    )

    if ($JobType -eq "ConnectorImport" -and -not $ConnectorId) {
        throw "ConnectorId is required when JobType is 'ConnectorImport'."
    }

    if ($PSCmdlet.ShouldProcess("Creating IAM Core sync job")) {
        $body = @{
            jobType = $JobType
        }

        if ($JobType -eq "ConnectorImport") {
            $body.connectorId = $ConnectorId
        }

        $body = $body | convertto-json -Depth 10
        $Result = Invoke-RestMethod -Uri "$Script:APIRoot/sync/jobs/" -Headers (Get-IAMCoreHeader) -Method Post -Body $body -ContentType "application/json" -SkipHttpErrorCheck -StatusCodeVariable "statuscode"

        if ($Result.IsSuccess) {
            return $Result.Data
        }
        else {
            throw "Failed to create IAM Core sync job (Status code $statuscode): $($Result)"
        }
    }
}