Public/Jira/Filters/Find-AtlassianCloudJiraFilter.ps1

function Find-AtlassianCloudJiraFilter{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory=$false, Position=0)]
        [string]$FilterName,

        [Parameter(Mandatory=$false, Position=1)]
        [string]$AccountId,

        [Parameter(Mandatory=$false, Position=2)]
        [string]$GroupId,

        [Parameter(Mandatory=$false, Position=3)]
        [string]$ProjectId,

        [Parameter(Mandatory=$false, Position=4)]
        [string[]]$Id,

        [Parameter(Mandatory=$false, Position=5)]
        [ValidateSet('description','favourite','favouritedCount','jql','owner','serachUrl','sharePermissions','editPermissions','isWritable','subscriptions','viewUrl')]
        [string[]]$Expand,

        [Parameter(Mandatory, Position=6)]
        [ValidateNotNullOrEmpty()]
        [string]$AtlassianOrgName,

        [Parameter(Mandatory, Position=7)]
        [ValidateNotNullOrEmpty()]
        [string]$Pat,

        [Parameter()]
        [switch]$All
    )

    $endpoint = 'filter/search?'

    if ($FilterName) {
        if ($endpoint -notlike '*?') {
            $endpoint += '&'
        } 
        $endpoint += "filterName=$FilterName"
    }

    if ($AccountId) {
        if ($endpoint -notlike '*?') {
            $endpoint += '&'
        } 
        $endpoint += "accountId=$AccountId"
    }

    if ($GroupId) {
        if ($endpoint -notlike '*?') {
            $endpoint += '&'
        } 
        $endpoint += "groupId=$GroupId"
    }

    if ($ProjectId) {
        if ($endpoint -notlike '*?') {
            $endpoint += '&'
        } 
        $endpoint += "projectId=$ProjectId"
    }

    if ($Id) {
        if ($endpoint -notlike '*?') {
            $endpoint += '&'
        } 
        $endpoint += "id=$($Id -join 'id=')"
    }

    if ($Expand) {
        if ($endpoint -notlike '*?') {
            $endpoint += '&'
        } 
        $endpoint += "expand=$($Expand -join 'expand=')"
    }

    return Get-AtlassianCloudJiraEntity -AtlassianOrgName $AtlassianOrgName -Endpoint $endpoint -Pat $Pat -All:($All.IsPresent) -Verbose:($Verbose.IsPresent)
}