plugins/CleverReach/Public/CleverReach/Get-ReceiversWithTag.ps1

# Source is the first part of the Tag, so apteco.a1qhvh3_20230607201732 split in "apteco" as source and "a1qhvh3_20230607201732" as tag

function Get-ReceiversWithTag {

    [CmdletBinding()]
    param (
        #[Parameter(Mandatory=$false)][Hashtable] $InputHashtable
         [Parameter(Mandatory=$true)][String] $Source
        ,[Parameter(Mandatory=$true)][String] $Tag
        ,[Parameter(Mandatory=$false)][String] $Detail = 0
    )

    begin {

    }
    process {

        # TODO possibly use array rather than single tag

        # Prepare inactives query as security net
        $filterBody = [PSCustomObject]@{
            "groups" = [Array]@()
            "operator" = "AND"
            "rules" = [Array]@(,
                [PSCustomObject]@{
                    "field" = "tags"
                    "logic" = "contains"
                    "condition" = "$( $Source ).$( $Tag )"
                }
            )
            "orderby" = "activated desc"
            "detail" = 0
        }

        $receiversWithTag = [Array]@( Invoke-CR -Object "receivers" -Path "filter.json" -Method POST -Verbose -Paging -Body $filterBody ) # .PsObject.Copy() use a copy so the reference is not changed because it will used a second time

        $receiversWithTag

    }

    end {

    }

}