Private/Remove-MetroAIAutoGeneratedProperties.ps1
function Remove-MetroAIAutoGeneratedProperties { <# .SYNOPSIS Removes auto-generated properties from Metro AI resource objects that shouldn't be included in POST/PUT requests. .DESCRIPTION Cleans up resource objects by removing system-generated properties and auto-generated OpenAPI functions that are returned by GET requests but should not be included when creating or updating resources. .PARAMETER InputObject The resource object to clean up. .EXAMPLE $cleanedResource = Remove-MetroAIAutoGeneratedProperties -InputObject $resourceFromGet #> [CmdletBinding()] param ( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] [object]$InputObject ) process { Write-Verbose "Cleaning up auto-generated properties from resource object" # Remove system-generated properties that shouldn't be included in creation/updates $cleanedObject = $InputObject | Select-Object -ExcludeProperty id, object, created_at # Clean up OpenAPI tools by removing auto-generated functions property if ($cleanedObject.tools) { $toolsProcessed = 0 foreach ($tool in $cleanedObject.tools) { if ($tool.type -eq 'openapi' -and $tool.openapi -and $tool.openapi.functions) { $tool.openapi.PSObject.Properties.Remove('functions') $toolsProcessed++ Write-Verbose "Removed auto-generated functions property from OpenAPI tool" } } if ($toolsProcessed -gt 0) { Write-Verbose "Processed $toolsProcessed OpenAPI tools and removed auto-generated functions" } } return $cleanedObject } } |