functions/secret-templates/Search-TssSecretTemplateField.ps1

function Search-TssSecretTemplateField {
    <#
    .SYNOPSIS
    Search secret template fields
 
    .DESCRIPTION
    Returns secret template fields, filtered by template or secret.
    Use -Basic for the reduced field list (ID, name, slug name, sort order, active) that basic users can read.
 
    .PARAMETER TssSession
    TssSession object created by New-TssSession for authentication
 
    .PARAMETER IncludeInactive
    Include inactive fields
 
    .PARAMETER SecretId
    Return only fields of the template used by this secret ID
 
    .PARAMETER SecretTemplateId
    Return only fields of this secret template ID
 
    .PARAMETER Basic
    Use the basic field search, which returns ID, name, slug name, sort order and active only
 
    .EXAMPLE
    $session = New-TssSession -SecretServer https://alpha -Credential $ssCred
    Search-TssSecretTemplateField -TssSession $session -SecretTemplateId 6001
 
    Get the active fields of template 6001
 
    .EXAMPLE
    $session = New-TssSession -SecretServer https://alpha -Credential $ssCred
    Search-TssSecretTemplateField -TssSession $session -SecretTemplateId 6001 -IncludeInactive -Basic
 
    Get the basic details of every field of template 6001, inactive fields included
 
    .LINK
    https://thycotic-ps.github.io/thycotic.secretserver/commands/secret-templates/Search-TssSecretTemplateField
 
    .LINK
    https://github.com/thycotic-ps/thycotic.secretserver/blob/main/src/functions/secret-templates/Search-TssSecretTemplateField.ps1
 
    .NOTES
    Requires TssSession object returned by New-TssSession
    #>

    [CmdletBinding(DefaultParameterSetName = 'Default')]
    [OutputType('Thycotic.PowerShell.SecretTemplates.FieldSummary[]')]
    param (
        [Parameter(Mandatory, ValueFromPipeline, Position = 0)]
        [Thycotic.PowerShell.Authentication.Session]
        $TssSession,

        [Parameter(ParameterSetName = 'Default')]
        [Parameter(ParameterSetName = 'Basic')]
        [switch]
        $IncludeInactive,

        [Parameter(ParameterSetName = 'Default')]
        [int]
        $SecretId,

        [Parameter(ParameterSetName = 'Default')]
        [Parameter(ParameterSetName = 'Basic')]
        [Alias('TemplateId')]
        [int]
        $SecretTemplateId,

        [Parameter(Mandatory, ParameterSetName = 'Basic')]
        [switch]
        $Basic
    )
    begin {
        $tssParams = $PSBoundParameters
        $invokeParams = . $GetInvokeApiParams $TssSession
    }
    process {
        Get-TssInvocation $PSCmdlet.MyInvocation
        if ($tssParams.ContainsKey('TssSession') -and $TssSession.IsValidSession()) {
            Compare-TssVersion $TssSession '10.9.000000' $PSCmdlet.MyInvocation
            switch ($PSCmdlet.ParameterSetName) {
                'Basic' {
                    $uri = $TssSession.ApiUrl, 'secret-templates', 'fields', 'search-basic' -join '/'
                    $queryParams = @()
                    $queryParams += "take=$($TssSession.Take)"
                    switch ($tssParams.Keys) {
                        'IncludeInactive' {
                            $queryParams += "filter.includeInactive=$([boolean]$IncludeInactive)"
                        }
                        'SecretTemplateId' {
                            $queryParams += "filter.secretTemplateId=$($SecretTemplateId)"
                        }
                    }
                    if ($queryParams) {
                        $uri = $uri, ($queryParams -join '&') -join '?'
                    }
                }
                default {
                    $uri = $TssSession.ApiUrl, 'secret-templates', 'fields', 'search' -join '/'
                    $queryParams = @()
                    $queryParams += "take=$($TssSession.Take)"
                    switch ($tssParams.Keys) {
                        'IncludeInactive' {
                            $queryParams += "filter.includeInactive=$([boolean]$IncludeInactive)"
                        }
                        'SecretId' {
                            $queryParams += "filter.secretId=$($SecretId)"
                        }
                        'SecretTemplateId' {
                            $queryParams += "filter.secretTemplateId=$($SecretTemplateId)"
                        }
                    }
                    if ($queryParams) {
                        $uri = $uri, ($queryParams -join '&') -join '?'
                    }
                }
            }
            $invokeParams.Uri = $uri
            $invokeParams.Method = 'GET'
            Write-Verbose "Performing the operation $($invokeParams.Method) $uri"
            try {
                $apiResponse = Invoke-TssApi @invokeParams
                $restResponse = . $ProcessResponse $apiResponse
            } catch {
                Write-Warning 'Issue with Search-TssSecretTemplateField request'
                $err = $_
                . $ErrorHandling $err
            }
            if ($restResponse.records) {
                [Thycotic.PowerShell.SecretTemplates.FieldSummary[]](. $FilterTssResponse $restResponse.records ([Thycotic.PowerShell.SecretTemplates.FieldSummary]))
            }
        } else {
            Write-Warning 'No valid session found'
        }
    }
}