Public/Policies/Get-FleetPolicyAutomation.ps1

function Get-FleetPolicyAutomation {
    <#
    .SYNOPSIS
        Lists automation activity for a policy.
 
    .DESCRIPTION
        Sends GET /api/v1/fleet/policies/{id}/automation_activities.
        Webhook automation activity is available in Fleet Free.
        Calendar, script, and software automations require Fleet Premium.
 
    .PARAMETER PolicyId
        Policy ID.
 
    .PARAMETER Status
        Optional status filter: success or error.
 
    .PARAMETER Query
        Host name search.
 
    .PARAMETER Page
        Page number. When omitted, every page is retrieved.
 
    .PARAMETER PerPage
        Page size.
 
    .EXAMPLE
        Get-FleetPolicyAutomation -PolicyId 12
 
    .NOTES
        Calendar, script, and software policy automations require Fleet Premium.
        https://fleetdm.com/docs/rest-api/rest-api#list-policy-automation-activities
        https://fleetdm.com/docs/configuration/yaml-files
 
    .LINK
        https://fleetdm.com/docs/rest-api/rest-api#list-policy-automation-activities
    #>

    [CmdletBinding()]
    param(
        [Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)]
        [Alias('Id')]
        [ValidateRange(1, [int]::MaxValue)]
        [int]$PolicyId,

        [ValidateSet('success', 'error')]
        [string]$Status,

        [string]$Query,

        [ValidateRange(0, [int]::MaxValue)]
        [int]$Page,

        [ValidateRange(1, 10000)]
        [int]$PerPage = 100
    )

    process {
        $queryParams = @{ per_page = $PerPage }
        if ($Status) { $queryParams['status'] = $Status }
        if ($Query) { $queryParams['query'] = $Query }
        if ($PSBoundParameters.ContainsKey('Page')) { $queryParams['page'] = $Page }

        $followPagination = -not $PSBoundParameters.ContainsKey('Page')
        $endpoint = "policies/$PolicyId/automation_activities"
        if ($followPagination) {
            $response = Invoke-FleetDMRequest -Endpoint $endpoint -QueryParameters $queryParams -FollowPagination
        }
        else {
            $response = Invoke-FleetDMRequest -Endpoint $endpoint -QueryParameters $queryParams
        }

        return (Get-FleetListResult -Response $response -Name 'activities' -TypeName 'FleetDM.PolicyAutomationActivity')
    }
}