Public/ServiceSettings/Reset-JIMServiceSetting.ps1

function Reset-JIMServiceSetting {
    <#
    .SYNOPSIS
        Reverts a service setting to its default value in JIM.
 
    .DESCRIPTION
        Clears any override on a service setting, restoring it to the default value.
        Read-only settings cannot be reverted through this cmdlet.
 
        An audit activity is created for each revert operation.
 
    .PARAMETER Key
        The unique setting key using dot notation (e.g., "ChangeTracking.CsoChanges.Enabled").
 
    .PARAMETER PassThru
        If specified, returns the reverted service setting object.
 
    .OUTPUTS
        If -PassThru is specified, returns the reverted service setting object.
 
    .EXAMPLE
        Reset-JIMServiceSetting -Key "ChangeTracking.CsoChanges.Enabled"
 
        Reverts the CSO change tracking setting to its default value.
 
    .EXAMPLE
        Get-JIMServiceSetting | Where-Object { $_.isOverridden } | ForEach-Object {
            Reset-JIMServiceSetting -Key $_.key
        }
 
        Reverts all overridden settings to their defaults.
 
    .LINK
        Get-JIMServiceSetting
        Set-JIMServiceSetting
    #>

    [CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'Medium')]
    [OutputType([PSCustomObject])]
    param(
        [Parameter(Mandatory, Position = 0)]
        [string]$Key,

        [switch]$PassThru
    )

    process {
        if ($PSCmdlet.ShouldProcess($Key, "Revert service setting to default")) {
            Write-Verbose "Reverting service setting to default: $Key"

            try {
                $response = Invoke-JIMApi -Endpoint "/api/v1/service-settings/$Key" -Method 'DELETE'

                Write-Verbose "Reverted service setting: $Key"

                if ($PassThru) {
                    $response
                }
            }
            catch {
                Write-Error "Failed to revert service setting '$Key': $_"
            }
        }
    }
}