Public/ExampleData/Remove-JIMExampleDataTemplate.ps1
|
# Copyright (c) Tetron Limited. All rights reserved. # Licensed under the Tetron Commercial License. See LICENSE file in the project root. function Remove-JIMExampleDataTemplate { <# .SYNOPSIS Removes a Data Generation Template from JIM. .DESCRIPTION Deletes a Data Generation Template, including its whole per-Object-Type attribute configuration. Built-in Data Generation Templates cannot be removed. This action cannot be undone; objects the template has already generated are unaffected. .PARAMETER Id The unique identifier of the Data Generation Template to remove. .PARAMETER Name The name of the Data Generation Template to remove. .PARAMETER ChangeReason Optional reason for the change, recorded on the audit Activity and shown in the Data Generation Template's configuration change history. .PARAMETER Force Bypasses confirmation prompts. .OUTPUTS None. .EXAMPLE Remove-JIMExampleDataTemplate -Id 7 Removes the specified Data Generation Template (with confirmation). .EXAMPLE Remove-JIMExampleDataTemplate -Name "Demo Users" -Force Removes the named Data Generation Template without confirmation. .EXAMPLE Remove-JIMExampleDataTemplate -Id 7 -Force -ChangeReason "Retiring demo template (CHG0202)" Removes the Data Generation Template and records the reason on its configuration change history. .LINK Get-JIMExampleDataTemplate New-JIMExampleDataTemplate Set-JIMExampleDataTemplate #> [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High', DefaultParameterSetName = 'ById')] param( [Parameter(Mandatory, ParameterSetName = 'ById', ValueFromPipelineByPropertyName)] [int]$Id, [Parameter(Mandatory, ParameterSetName = 'ByName')] [ValidateNotNullOrEmpty()] [string]$Name, [ValidateNotNullOrEmpty()] [string]$ChangeReason, [switch]$Force ) process { # Check connection first if (-not $script:JIMConnection) { Write-Error "You are not connected to JIM. Run Connect-JIM -Url <your JIM URL> to authenticate, then try again." return } # Resolve name to ID if using ByName parameter set $templateName = $Id if ($PSCmdlet.ParameterSetName -eq 'ByName') { try { $resolvedTemplate = Resolve-JIMExampleDataTemplate -Name $Name $Id = $resolvedTemplate.id $templateName = $resolvedTemplate.name } catch { Write-Error $_ return } } else { # Get template name for confirmation message try { $template = Invoke-JIMApi -Endpoint "/api/v1/example-data/templates/$Id" $templateName = $template.name } catch { # Continue with ID if we can't get the name } } if ($Force -or $PSCmdlet.ShouldProcess($templateName, "Remove Data Generation Template")) { Write-Verbose "Removing Data Generation Template: $Id ($templateName)" try { $endpoint = "/api/v1/example-data/templates/$Id" if ($ChangeReason) { $endpoint += "?changeReason=$([uri]::EscapeDataString($ChangeReason))" } Invoke-JIMApi -Endpoint $endpoint -Method 'DELETE' Write-Verbose "Removed Data Generation Template: $Id" } catch { Write-Error "Failed to remove Data Generation Template: $_" } } } } |