Public/installation-tokens.ps1

function Edit-FalconInstallToken {
    [CmdletBinding(DefaultParameterSetName = '/installation-tokens/entities/tokens/v1:patch')]
    param(
        [Parameter(ParameterSetName = '/installation-tokens/entities/tokens/v1:patch', Mandatory = $true,
            Position = 1)]
        [ValidatePattern('^\w{32}$')]
        [array] $Ids,

        [Parameter(ParameterSetName = '/installation-tokens/entities/tokens/v1:patch', Position = 2)]
        [string] $Label,

        [Parameter(ParameterSetName = '/installation-tokens/entities/tokens/v1:patch', Position = 3)]
        [ValidatePattern('^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z|null)$')]
        [string] $ExpiresTimestamp,

        [Parameter(ParameterSetName = '/installation-tokens/entities/tokens/v1:patch', Position = 4)]
        [boolean] $Revoked
    )
    begin {
        $Fields = @{ ExpiresTimestamp = 'expires_timestamp' }
    }
    process {
        $Param = @{
            Command  = $MyInvocation.MyCommand.Name
            Endpoint = $PSCmdlet.ParameterSetName
            Inputs   = Update-FieldName -Fields $Fields -Inputs $PSBoundParameters
            Format   = @{
                Query = @('ids')
                Body  = @{ root = @('label', 'revoked', 'expires_timestamp') }
            }
        }
        Invoke-Falcon @Param
    }
}
function Get-FalconInstallToken {
    [CmdletBinding(DefaultParameterSetName = '/installation-tokens/queries/tokens/v1:get')]
    param(
        [Parameter(ParameterSetName = '/installation-tokens/entities/tokens/v1:get', Mandatory = $true,
            Position = 1)]
        [ValidatePattern('^\w{32}$')]
        [array] $Ids,
        
        [Parameter(ParameterSetName = '/installation-tokens/queries/tokens/v1:get', Position = 2)]
        [ValidateScript({ Test-FqlStatement $_ })]
        [string] $Filter,

        [Parameter(ParameterSetName = '/installation-tokens/queries/tokens/v1:get', Position = 3)]
        [string] $Sort,

        [Parameter(ParameterSetName = '/installation-tokens/queries/tokens/v1:get', Position = 4)]
        [ValidateRange(1,1000)]
        [int] $Limit,

        [Parameter(ParameterSetName = '/installation-tokens/queries/tokens/v1:get', Position = 5)]
        [int] $Offset,

        [Parameter(ParameterSetName = '/installation-tokens/queries/tokens/v1:get')]
        [switch] $Detailed,

        [Parameter(ParameterSetName = '/installation-tokens/queries/tokens/v1:get')]
        [switch] $All,

        [Parameter(ParameterSetName = '/installation-tokens/queries/tokens/v1:get')]
        [switch] $Total
    )
    process {
        $Param = @{
            Command  = $MyInvocation.MyCommand.Name
            Endpoint = $PSCmdlet.ParameterSetName
            Inputs   = $PSBoundParameters
            Format   = @{ Query = @('sort', 'ids', 'offset', 'limit', 'filter') }
        }
        Invoke-Falcon @Param
    }
}
function Get-FalconInstallTokenEvent {
    [CmdletBinding(DefaultParameterSetName = '/installation-tokens/queries/audit-events/v1:get')]
    param(
        [Parameter(ParameterSetName = '/installation-tokens/entities/audit-events/v1:get', Mandatory = $true,
            Position = 1)]
        [ValidatePattern('^\w{32}$')]
        [array] $Ids,

        [Parameter(ParameterSetName = '/installation-tokens/queries/audit-events/v1:get', Position = 1)]
        [ValidateScript({ Test-FqlStatement $_ })]
        [string] $Filter,

        [Parameter(ParameterSetName = '/installation-tokens/queries/audit-events/v1:get', Position = 2)]
        [string] $Sort,

        [Parameter(ParameterSetName = '/installation-tokens/queries/audit-events/v1:get', Position = 3)]
        [int] $Limit,
        
        [Parameter(ParameterSetName = '/installation-tokens/queries/audit-events/v1:get', Position = 4)]
        [int] $Offset,

        [Parameter(ParameterSetName = '/installation-tokens/queries/audit-events/v1:get')]
        [switch] $Detailed,

        [Parameter(ParameterSetName = '/installation-tokens/queries/audit-events/v1:get')]
        [switch] $All,

        [Parameter(ParameterSetName = '/installation-tokens/queries/audit-events/v1:get')]
        [switch] $Total
    )
    process {
        $Param = @{
            Command  = $MyInvocation.MyCommand.Name
            Endpoint = $PSCmdlet.ParameterSetName
            Inputs   = $PSBoundParameters
            Format   = @{ Query = @('sort', 'ids', 'offset', 'limit', 'filter') }
        }
        Invoke-Falcon @Param
    }
}
function Get-FalconInstallTokenSetting {
    [CmdletBinding(DefaultParameterSetName = '/installation-tokens/entities/customer-settings/v1:get')]
    param()
    process {
        Invoke-Falcon -Endpoint $PSCmdlet.ParameterSetName
    }
}
function New-FalconInstallToken {
    [CmdletBinding(DefaultParameterSetName = '/installation-tokens/entities/tokens/v1:post')]
    param(
        [Parameter(ParameterSetName = '/installation-tokens/entities/tokens/v1:post', Mandatory = $true,
            Position = 1)]
        [string] $Label,

        [Parameter(ParameterSetName = '/installation-tokens/entities/tokens/v1:post', Mandatory = $true,
            Position = 2)]
        [ValidatePattern('^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z|null)$')]
        [string] $ExpiresTimestamp
    )
    begin {
        $Fields = @{ ExpiresTimestamp = 'expires_timestamp' }
    }
    process {
        $Param = @{
            Command  = $MyInvocation.MyCommand.Name
            Endpoint = $PSCmdlet.ParameterSetName
            Inputs   = Update-FieldName -Fields $Fields -Inputs $PSBoundParameters
            Format   = @{ Body = @{ root = @('label', 'expires_timestamp') }}
        }
        Invoke-Falcon @Param
    }
}
function Remove-FalconInstallToken {
    [CmdletBinding(DefaultParameterSetName = '/installation-tokens/entities/tokens/v1:delete')]
    param(
        [Parameter(ParameterSetName = '/installation-tokens/entities/tokens/v1:delete', Mandatory = $true,
            Position = 1)]
        [ValidatePattern('^\w{32}$')]
        [array] $Ids
    )
    process {
        $Param = @{
            Command  = $MyInvocation.MyCommand.Name
            Endpoint = $PSCmdlet.ParameterSetName
            Inputs   = $PSBoundParameters
            Format   = @{ Query = @('ids') }
        }
        Invoke-Falcon @Param
    }
}