Public/Remove-OAIUserFile.ps1
Function Remove-OAIUserFile { <# .SYNOPSIS Deletes a user-owned file from the OpenAI Compliance API. .DESCRIPTION Deletes a user-owned file from the ChatGPT Enterprise workspace. For audio and video files, a conversation ID may be required. .PARAMETER UserId The ID of the user who owns the file. .PARAMETER FileId The ID of the file to delete. .PARAMETER ConversationId The ID of the conversation (required for audio and video files). .INPUTS System.String .OUTPUTS System.Object .EXAMPLE Remove-OAIUserFile -UserId "user-123" -FileId "file-456" .EXAMPLE Remove-OAIUserFile -UserId "user-123" -FileId "file-456" -ConversationId "conv-789" #> [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact="High")] [OutputType([System.Object])] param( [Parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)] [string]$UserId, [Parameter(Mandatory=$true, Position=1, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)] [string]$FileId, [Parameter(Mandatory=$false, Position=2, ValueFromPipelineByPropertyName=$true)] [string]$ConversationId ) Begin { Write-Debug "Validating OpenAI Compliance client initialization" If (!$script:client) { Write-Error "OpenAI Compliance client not initialized. Please run Initialize-OAICompliance first." -ErrorAction Stop } Write-Debug "Creating OAI User manager" $user_manager = [OAIUser]::new($script:client) } Process { ForEach ($user in $userId) { ForEach ($file in $fileId) { Write-Debug "Deleting user file for UserId: $user, FileId: $file" Try { If ($PSCmdlet.ShouldProcess("Delete user file $file for user $user", "Remove-OAIUserFile", "Delete user file")) { Try { If ($conversationId) { $response = $user_manager.DeleteUserFile($user, $file, $conversationId) } Else { $response = $user_manager.DeleteUserFile($user, $file, $null) } Write-Debug "File deleted successfully" $response } Catch { Write-Error "Error deleting user file: $($_.Exception.Message)" -ErrorAction Stop } } Else { Write-Debug "Skipping user file deletion due to ShouldProcess" } } Catch { Write-Error "Error deleting user file: $($_.Exception.Message)" -ErrorAction Stop } } } } End { Write-Debug "Successfully processed user file deletion" } } |