private/FoundationaLLM-DataPipeline.ps1

function Resolve-PackageObjectIdReferences {
    param (
        [hashtable]$Object,
        [string]$PropertyName
    )

    foreach ($key in @($Object.Keys)) {
        $value = $Object[$key]
        if ($key -eq $PropertyName -and
            $value -is [hashtable] -and
            $value['name'] -and
            $value['type']) {
            $Object[$key] = Get-ObjectId -Name $value['name'] -Type $value['type']
        } elseif ($value -is [hashtable]) {
            Resolve-PackageObjectIdReferences -Object $value -PropertyName $PropertyName
        } elseif ($value -is [System.Collections.IEnumerable] -and
                 -not ($value -is [string])) {
            foreach ($item in $value) {
                if ($item -is [hashtable]) {
                    Resolve-PackageObjectIdReferences -Object $item -PropertyName $PropertyName
                }
            }
        }
    }
}

function Merge-DataPipeline {
    param (
        [hashtable]$DataPipeline
    )

    Resolve-PackageObjectIdReferences -Object $DataPipeline -PropertyName 'plugin_object_id'
    Resolve-PackageObjectIdReferences -Object $DataPipeline -PropertyName 'data_source_object_id'

    Invoke-ManagementAPI `
        -Method POST `
        -RelativeUri "providers/FoundationaLLM.DataPipeline/dataPipelines/$($DataPipeline['name'])" `
        -Body $DataPipeline
}

function Start-DataPipeline {
    param (
        [string]$DataPipelineName,
        [hashtable]$TriggerParameters
    )

    return Invoke-ManagementAPI `
        -Method POST `
        -RelativeUri "providers/FoundationaLLM.DataPipeline/dataPipelines/$($DataPipelineName)/trigger" `
        -Body $TriggerParameters
}