PokeAPI.psm1

#Region '.\Private\apiCalls\ConvertTo-PokeQueryString.ps1' -1

function ConvertTo-PokeQueryString {
<#
    .SYNOPSIS
        Converts uri filter parameters
 
    .DESCRIPTION
        The Invoke-PokeRequest cmdlet converts & formats uri filter parameters
        from a function which are later used to make the full resource uri for
        an API call
 
        This is an internal helper function the ties in directly with the
        Invoke-PokeRequest & any public functions that define parameters
 
    .PARAMETER uri_Filter
        Hashtable of values to combine a functions parameters with
        the resource_Uri parameter.
 
        This allows for the full uri query to occur
 
    .PARAMETER resource_Uri
        Defines the short resource uri (url) to use when creating the API call
 
    .EXAMPLE
        ConvertTo-PokeQueryString -uri_Filter $uri_Filter -resource_Uri '/account'
 
        Example: (From public function)
            $uri_Filter = @{}
 
            ForEach ( $Key in $PSBoundParameters.GetEnumerator() ){
                if( $excludedParameters -contains $Key.Key ){$null}
                else{ $uri_Filter += @{ $Key.Key = $Key.Value } }
            }
 
            1x key = https://pokeapi.co/api/v2/account?accountId=12345
            2x key = https://pokeapi.co/api/v2/account?accountId=12345&details=True
 
    .NOTES
        N\A
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/Internal/ConvertTo-PokeQueryString.html
 
#>


[CmdletBinding()]
param(
    [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
    [hashtable]$uri_Filter,

    [Parameter(Mandatory = $true)]
    [String]$resource_Uri
)

    begin {}

    process {

        if (-not $uri_Filter) {
            return ""
        }

        $excludedParameters =   'Debug', 'ErrorAction', 'ErrorVariable', 'InformationAction', 'InformationVariable',
                                'OutBuffer', 'OutVariable', 'PipelineVariable', 'Verbose', 'WarningAction', 'WarningVariable',
                                'allPages', 'id', 'name'

        $query_Parameters = [System.Web.HttpUtility]::ParseQueryString([String]::Empty)

        ForEach ( $Key in $uri_Filter.GetEnumerator() ){

            if( $excludedParameters -contains $Key.Key ){$null}
            elseif ( $Key.Value.GetType().IsArray ){
                Write-Verbose "[ $($Key.Key) ] is an array parameter"
                foreach ($Value in $Key.Value) {
                    #$ParameterName = $Key.Key
                    $query_Parameters.Add($Key.Key, $Value)
                }
            }
            else{
                $query_Parameters.Add($Key.Key, $Key.Value)
            }

        }

        # Build the request and load it with the query string.
        $uri_Request        = [System.UriBuilder]($Poke_Base_URI + $resource_Uri)
        $uri_Request.Query  = $query_Parameters.ToString()

        return $uri_Request

    }

    end {}

}
#EndRegion '.\Private\apiCalls\ConvertTo-PokeQueryString.ps1' 95
#Region '.\Private\apiCalls\Get-PokeMetaData.ps1' -1

function Get-PokeMetaData {
<#
    .SYNOPSIS
        Gets various Api metadata values
 
    .DESCRIPTION
        The Get-PokeMetaData cmdlet gets various Api metadata values from an
        Invoke-WebRequest to assist in various troubleshooting scenarios such
        as rate-limiting.
 
    .PARAMETER base_uri
        Define the base URI for the Poke API connection using Poke's URI or a custom URI.
 
        The default base URI is https://pokeapi.co/api/v2
 
    .EXAMPLE
        Get-PokeMetaData
 
        Gets various Api metadata values from an Invoke-WebRequest to assist
        in various troubleshooting scenarios such as rate-limiting.
 
        The default full base uri test path is:
            https://pokeapi.co/api/v2
 
    .EXAMPLE
        Get-PokeMetaData -base_uri http://myapi.gateway.example.com
 
        Gets various Api metadata values from an Invoke-WebRequest to assist
        in various troubleshooting scenarios such as rate-limiting.
 
        The full base uri test path in this example is:
            http://myapi.gateway.example.com/device
 
    .NOTES
        N\A
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/Internal/Get-PokeMetaData.html
#>


    [CmdletBinding()]
    Param (
        [parameter(Mandatory = $false, ValueFromPipeline = $true)]
        [string]$base_uri = $Poke_Base_URI
    )

    begin { $resource_uri = "/" }

    process {

        try {

            $Poke_Headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
            $Poke_Headers.Add("Content-Type", 'application/json')

            $rest_output = Invoke-WebRequest -method Get -uri ($base_uri + $resource_uri) -headers $Poke_Headers -ErrorAction Stop
        }
        catch {

            [PSCustomObject]@{
                Method = $_.Exception.Response.Method
                StatusCode = $_.Exception.Response.StatusCode.value__
                StatusDescription = $_.Exception.Response.StatusDescription
                Message = $_.Exception.Message
                URI = $($Poke_Base_URI + $resource_uri)
            }

        }
        finally {
            Remove-Variable -Name Poke_Headers -Force
        }

        Set-Variable -Name Test_rest_output -Value $rest_output -Scope Global -Force

        if ($rest_output){
            $data = @{}
            $data = $rest_output

            [PSCustomObject]@{
                ResponseUri             = $data.BaseResponse.ResponseUri.AbsoluteUri
                ResponsePort            = $data.BaseResponse.ResponseUri.Port
                StatusCode              = $data.StatusCode
                StatusDescription       = $data.StatusDescription
                raw                     = $data
            }
        }

    }

    end {}
}
#EndRegion '.\Private\apiCalls\Get-PokeMetaData.ps1' 92
#Region '.\Private\apiCalls\Invoke-PokeRequest.ps1' -1

function Invoke-PokeRequest {
<#
    .SYNOPSIS
        Makes an API request
 
    .DESCRIPTION
        The Invoke-PokeRequest cmdlet invokes an API request to Poke API.
 
        This is an internal function that is used by all public functions
 
        As of 2023-08 the Poke v1 API only supports GET requests
 
    .PARAMETER method
        Defines the type of API method to use
 
        Allowed values:
        'GET', 'PUT'
 
    .PARAMETER resource_Uri
        Defines the resource uri (url) to use when creating the API call
 
    .PARAMETER uri_Filter
        Used with the internal function [ ConvertTo-PokeQueryString ] to combine
        a functions parameters with the resource_Uri parameter.
 
        This allows for the full uri query to occur
 
        The full resource path is made with the following data
        $Poke_Base_URI + $resource_Uri + ConvertTo-PokeQueryString
 
    .PARAMETER data
        Place holder parameter to use when other methods are supported
        by the Poke v1 API
 
    .PARAMETER allPages
        Returns all items from an endpoint
 
        When using this parameter there is no need to use either the page or perPage
        parameters
 
    .EXAMPLE
        Invoke-PokeRequest -method GET -resource_Uri '/account' -uri_Filter $uri_Filter
 
        Invoke a rest method against the defined resource using any of the provided parameters
 
        Example:
            Name Value
            ---- -----
            Method GET
            Uri https://pokeapi.co/api/v2/account?accountId=12345&details=True
 
 
    .NOTES
        N\A
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/Internal/Invoke-PokeRequest.html
 
#>


    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $false)]
        [ValidateSet('GET')]
        [String]$method = 'GET',

        [Parameter(Mandatory = $true)]
        [String]$resource_Uri,

        [Parameter(Mandatory = $false)]
        [Hashtable]$uri_Filter = $null,

        [Parameter(Mandatory = $false)]
        [Switch]$allPages

    )

    begin {}

    process {

        # Load Web assembly when needed as PowerShell Core has the assembly preloaded
        if ( !("System.Web.HttpUtility" -as [Type]) ) {
            Add-Type -Assembly System.Web
        }

        $query_string = ConvertTo-PokeQueryString -uri_Filter $uri_Filter -resource_Uri $resource_Uri

        Set-Variable -Name 'PokeAPI_queryString' -Value $query_string -Scope Global -Force

        try {

            $parameters = [ordered] @{
                "Method"    = $method
                "Uri"       = $query_string.Uri
            }

            Set-Variable -Name 'PokeAPI_invokeParameters' -Value $parameters -Scope Global -Force

            if ($allPages) {

                Write-Verbose "Gathering all items from [ $( $Poke_Base_URI + $resource_Uri ) ] "

                $page_number = 1
                $all_responseData = [System.Collections.Generic.List[object]]::new()

                do {

                    $current_page = Invoke-RestMethod @parameters -ErrorAction Stop

                    $total_Count    = $current_page.count
                    $offset         = if([bool]$current_page.next){([regex]::match($current_page.next,'(offset=[0-9]+)').Groups[1].Value) -Replace '\D+'}else{$null}
                    $limit          = if([bool]$current_page.next){([regex]::match($current_page.next,'(limit=[0-9]+)').Groups[1].Value) -Replace '\D+'}else{$null}
                    $total_pages    = if([bool]$current_page.next ){[math]::ceiling($($total_Count - $offset)/$limit + $page_number)}else{$null}

                    Write-Verbose "[ $page_number ] of [ $total_pages ] pages"

                        foreach ($item in $current_page.results) {
                            $all_responseData.add($item)
                        }

                    $parameters.Remove('Uri') > $null
                    $parameters.Add('Uri',$current_page.next)

                    $page_number++

                } while ($null -ne $current_page.next)

            }
            else{
                $api_response = Invoke-RestMethod @parameters -ErrorAction Stop
            }

        }
        catch {

            $exceptionError = $_.Exception.Message
            Write-Warning 'The [ Poke_invokeParameters, Poke_queryString, & Poke_CmdletNameParameters ] variables can provide extra details'

            switch -Wildcard ($exceptionError) {
                '*404*' { Write-Error "Invoke-PokeRequest : [ $resource_Uri ] not found!" }
                '*429*' { Write-Error 'Invoke-PokeRequest : API rate limited' }
                '*504*' { Write-Error "Invoke-PokeRequest : Gateway Timeout" }
                default { Write-Error $_ }
            }

        }
        finally {}


        if($allPages) {

            Set-Variable -Name Test_all_responseData -Value $all_responseData -Scope Global -Force

            #Making output consistent
            if( [string]::IsNullOrEmpty($all_responseData) ) {
                $api_response = $null
            }
            else{
                $api_response = [PSCustomObject]@{
                    count       = $total_Count
                    next        = $null
                    previous    = $null
                    results     = $all_responseData
                }
            }

            return $api_response

        }
        else{ return $api_response }

    }

    end {}

}
#EndRegion '.\Private\apiCalls\Invoke-PokeRequest.ps1' 178
#Region '.\Private\baseUri\Add-PokeBaseURI.ps1' -1

function Add-PokeBaseURI {
<#
    .SYNOPSIS
        Sets the base URI for the Poke API connection.
 
    .DESCRIPTION
        The Add-PokeBaseURI cmdlet sets the base URI which is later used
        to construct the full URI for all API calls.
 
    .PARAMETER base_uri
        Define the base URI for the Poke API connection using Poke's URI or a custom URI.
 
    .EXAMPLE
        Add-PokeBaseURI
 
        The base URI will use https://pokeapi.co/api/v2/ which is Poke's default URI.
 
    .EXAMPLE
        Add-PokeBaseURI -base_uri http://myapi.gateway.example.com
 
        A custom API gateway of http://myapi.gateway.example.com will be used for all API calls to Poke's API.
 
    .NOTES
        N\A
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/Internal/Add-PokeBaseURI.html
#>


    [cmdletbinding()]
    Param (
        [Parameter(Mandatory = $false , ValueFromPipeline = $true)]
        [string]$base_uri = 'https://pokeapi.co/api/v2'
    )

    begin {}

    process {

        # Trim superfluous forward slash from address (if applicable)
        if ($base_uri[$base_uri.Length-1] -eq "/") {
            $base_uri = $base_uri.Substring(0,$base_uri.Length-1)
        }

        Set-Variable -Name "Poke_Base_URI" -Value $base_uri -Option ReadOnly -Scope global -Force

    }

    end {}

}

New-Alias -Name Set-PokeBaseURI -Value Add-PokeBaseURI
#EndRegion '.\Private\baseUri\Add-PokeBaseURI.ps1' 54
#Region '.\Private\baseUri\Get-PokeBaseURI.ps1' -1

function Get-PokeBaseURI {
<#
    .SYNOPSIS
        Shows the Poke base URI global variable.
 
    .DESCRIPTION
        The Get-PokeBaseURI cmdlet shows the Poke base URI global variable value.
 
    .EXAMPLE
        Get-PokeBaseURI
 
        Shows the Poke base URI global variable value.
 
    .NOTES
        N\A
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/Internal/Get-PokeBaseURI.html
#>


    [cmdletbinding()]
    Param ()

    begin {}

    process {

        switch ([bool]$Poke_Base_URI) {
            $true   { $Poke_Base_URI }
            $false  { Write-Warning "The Poke base URI is not set. Run Add-PokeBaseURI to set the base URI." }
        }

    }

    end {}

}
#EndRegion '.\Private\baseUri\Get-PokeBaseURI.ps1' 38
#Region '.\Private\baseUri\Remove-PokeBaseURI.ps1' -1

function Remove-PokeBaseURI {
<#
    .SYNOPSIS
        Removes the Poke base URI global variable.
 
    .DESCRIPTION
        The Remove-PokeBaseURI cmdlet removes the Poke base URI global variable.
 
    .EXAMPLE
        Remove-PokeBaseURI
 
        Removes the Poke base URI global variable.
 
    .NOTES
        N\A
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/Internal/Remove-PokeBaseURI.html
#>


    [cmdletbinding(SupportsShouldProcess)]
    Param ()

    begin {}

    process {

        switch ([bool]$Poke_Base_URI) {
            $true   { Remove-Variable -Name "Poke_Base_URI" -Scope global -Force }
            $false  { Write-Warning "The Poke base URI variable is not set. Nothing to remove" }
        }

    }

    end {}

}
#EndRegion '.\Private\baseUri\Remove-PokeBaseURI.ps1' 38
#Region '.\Private\moduleSettings\Export-PokeModuleSettings.ps1' -1

function Export-PokeModuleSettings {
<#
    .SYNOPSIS
        Exports the Poke BaseURI, API, & JSON configuration information to file.
 
    .DESCRIPTION
        The Export-PokeModuleSettings cmdlet exports the Poke BaseURI information to file.
 
    .PARAMETER PokeConfPath
        Define the location to store the Poke configuration file.
 
        By default the configuration file is stored in the following location:
            $env:USERPROFILE\PokeAPI
 
    .PARAMETER PokeConfFile
        Define the name of the Poke configuration file.
 
        By default the configuration file is named:
            config.psd1
 
    .EXAMPLE
        Export-PokeModuleSettings
 
        Validates that the BaseURI is set then exports their values
        to the current user's Poke configuration file located at:
            $env:USERPROFILE\PokeAPI\config.psd1
 
    .EXAMPLE
        Export-PokeModuleSettings -PokeConfPath C:\PokeAPI -PokeConfFile MyConfig.psd1
 
        Validates that the BaseURI is set then exports their values
        to the current user's Poke configuration file located at:
            C:\PokeAPI\MyConfig.psd1
 
    .NOTES
        N\A
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/Internal/Export-PokeModuleSettings.html
#>


    [CmdletBinding(DefaultParameterSetName = 'set')]
    Param (
        [Parameter(ParameterSetName = 'set')]
        [string]$PokeConfPath = $(Join-Path -Path $home -ChildPath $(if ($IsWindows -or $PSEdition -eq 'Desktop'){"PokeAPI"}else{".PokeAPI"}) ),

        [Parameter(ParameterSetName = 'set')]
        [string]$PokeConfFile = 'config.psd1'
    )

    begin {}

    process {

        $PokeConfig = Join-Path -Path $PokeConfPath -ChildPath $PokeConfFile

        # Confirm variables exist and are not null before exporting
        if ($Poke_Base_URI) {

            if ($IsWindows -or $PSEdition -eq 'Desktop') {
                New-Item -Path $PokeConfPath -ItemType Directory -Force | ForEach-Object { $_.Attributes = $_.Attributes -bor "Hidden" }
            }
            else{
                New-Item -Path $PokeConfPath -ItemType Directory -Force
            }
@"
    @{
        Poke_Base_URI = '$Poke_Base_URI'
    }
"@
 | Out-File -FilePath $PokeConfig -Force
        }
        else {
            Write-Error "Failed to export Poke Module settings to [ $PokeConfig ]"
            Write-Error $_
            exit 1
        }

    }

    end {}

}
#EndRegion '.\Private\moduleSettings\Export-PokeModuleSettings.ps1' 83
#Region '.\Private\moduleSettings\Get-PokeModuleSettings.ps1' -1

function Get-PokeModuleSettings {
<#
    .SYNOPSIS
        Gets the saved Poke configuration settings
 
    .DESCRIPTION
        The Get-PokeModuleSettings cmdlet gets the saved Poke configuration settings
        from the local system.
 
        By default the configuration file is stored in the following location:
            $env:USERPROFILE\PokeAPI
 
    .PARAMETER PokeConfPath
        Define the location to store the Poke configuration file.
 
        By default the configuration file is stored in the following location:
            $env:USERPROFILE\PokeAPI
 
    .PARAMETER PokeConfFile
        Define the name of the Poke configuration file.
 
        By default the configuration file is named:
            config.psd1
 
    .PARAMETER openConfFile
        Opens the Poke configuration file
 
    .EXAMPLE
        Get-PokeModuleSettings
 
        Gets the contents of the configuration file that was created with the
        Export-PokeModuleSettings
 
        The default location of the Poke configuration file is:
            $env:USERPROFILE\PokeAPI\config.psd1
 
    .EXAMPLE
        Get-PokeModuleSettings -PokeConfPath C:\PokeAPI -PokeConfFile MyConfig.psd1 -openConfFile
 
        Opens the configuration file from the defined location in the default editor
 
        The location of the Poke configuration file in this example is:
            C:\PokeAPI\MyConfig.psd1
 
    .NOTES
        N\A
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/Internal/Get-PokeModuleSettings.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index')]
    Param (
        [Parameter(Mandatory = $false, ParameterSetName = 'index')]
        [string]$PokeConfPath = $(Join-Path -Path $home -ChildPath $(if ($IsWindows -or $PSEdition -eq 'Desktop'){"PokeAPI"}else{".PokeAPI"}) ),

        [Parameter(Mandatory = $false, ParameterSetName = 'index')]
        [String]$PokeConfFile = 'config.psd1',

        [Parameter(Mandatory = $false, ParameterSetName = 'show')]
        [Switch]$openConfFile
    )

    begin {
        $PokeConfig = Join-Path -Path $PokeConfPath -ChildPath $PokeConfFile
    }

    process {

        if ( Test-Path -Path $PokeConfig ){

            if($openConfFile){
                Invoke-Item -Path $PokeConfig
            }
            else{
                Import-LocalizedData -BaseDirectory $PokeConfPath -FileName $PokeConfFile
            }

        }
        else{
            Write-Verbose "No configuration file found at [ $PokeConfig ]"
        }

    }

    end {}

}
#EndRegion '.\Private\moduleSettings\Get-PokeModuleSettings.ps1' 89
#Region '.\Private\moduleSettings\Import-PokeModuleSettings.ps1' -1

function Import-PokeModuleSettings {
<#
    .SYNOPSIS
        Imports the Poke BaseURI information to the current session.
 
    .DESCRIPTION
        The Import-PokeModuleSettings cmdlet imports the Poke BaseURI stored in the
        Poke configuration file to the users current session.
 
        By default the configuration file is stored in the following location:
            $env:USERPROFILE\PokeAPI
 
    .PARAMETER PokeConfPath
        Define the location to store the Poke configuration file.
 
        By default the configuration file is stored in the following location:
            $env:USERPROFILE\PokeAPI
 
    .PARAMETER PokeConfFile
        Define the name of the Poke configuration file.
 
        By default the configuration file is named:
            config.psd1
 
    .EXAMPLE
        Import-PokeModuleSettings
 
        Validates that the configuration file created with the Export-PokeModuleSettings cmdlet exists
        then imports the stored data into the current users session.
 
        The default location of the Poke configuration file is:
            $env:USERPROFILE\PokeAPI\config.psd1
 
    .EXAMPLE
        Import-PokeModuleSettings -PokeConfPath C:\PokeAPI -PokeConfFile MyConfig.psd1
 
        Validates that the configuration file created with the Export-PokeModuleSettings cmdlet exists
        then imports the stored data into the current users session.
 
        The location of the Poke configuration file in this example is:
            C:\PokeAPI\MyConfig.psd1
 
    .NOTES
        N\A
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/Internal/Import-PokeModuleSettings.html
#>


    [CmdletBinding(DefaultParameterSetName = 'set')]
    Param (
        [Parameter(ParameterSetName = 'set')]
        [string]$PokeConfPath = $(Join-Path -Path $home -ChildPath $(if ($IsWindows -or $PSEdition -eq 'Desktop'){"PokeAPI"}else{".PokeAPI"}) ),

        [Parameter(ParameterSetName = 'set')]
        [string]$PokeConfFile = 'config.psd1'
    )

    begin {
        $PokeConfig = Join-Path -Path $PokeConfPath -ChildPath $PokeConfFile
    }

    process {

        if ( Test-Path $PokeConfig ) {
            $tmp_config = Import-LocalizedData -BaseDirectory $PokeConfPath -FileName $PokeConfFile

            # Send to function to strip potentially superfluous slash (/)
            Add-PokeBaseURI $tmp_config.Poke_Base_URI

            Write-Verbose "PokeAPI Module configuration loaded successfully from [ $PokeConfig ]"

            # Clean things up
            Remove-Variable "tmp_config"
        }
        else {
            Write-Verbose "No configuration file found at [ $PokeConfig ] run Add-PokeAPIKey to get started."

            Add-PokeBaseURI

            Set-Variable -Name "Poke_Base_URI" -Value $(Get-PokeBaseURI) -Option ReadOnly -Scope global -Force
        }

    }

    end {}

}
#EndRegion '.\Private\moduleSettings\Import-PokeModuleSettings.ps1' 89
#Region '.\Private\moduleSettings\Initialize-PokeModuleSettings.ps1' -1

#Used to auto load either baseline settings or saved configurations when the module is imported
Import-PokeModuleSettings -Verbose:$false
#EndRegion '.\Private\moduleSettings\Initialize-PokeModuleSettings.ps1' 3
#Region '.\Private\moduleSettings\Remove-PokeModuleSettings.ps1' -1

function Remove-PokeModuleSettings {
<#
    .SYNOPSIS
        Removes the stored Poke configuration folder.
 
    .DESCRIPTION
        The Remove-PokeModuleSettings cmdlet removes the Poke folder and its files.
        This cmdlet also has the option to remove sensitive Poke variables as well.
 
        By default configuration files are stored in the following location and will be removed:
            $env:USERPROFILE\PokeAPI
 
    .PARAMETER PokeConfPath
        Define the location of the Poke configuration folder.
 
        By default the configuration folder is located at:
            $env:USERPROFILE\PokeAPI
 
    .PARAMETER andVariables
        Define if sensitive Poke variables should be removed as well.
 
        By default the variables are not removed.
 
    .EXAMPLE
        Remove-PokeModuleSettings
 
        Checks to see if the default configuration folder exists and removes it if it does.
 
        The default location of the Poke configuration folder is:
            $env:USERPROFILE\PokeAPI
 
    .EXAMPLE
        Remove-PokeModuleSettings -PokeConfPath C:\PokeAPI -andVariables
 
        Checks to see if the defined configuration folder exists and removes it if it does.
        If sensitive Poke variables exist then they are removed as well.
 
        The location of the Poke configuration folder in this example is:
            C:\PokeAPI
 
    .NOTES
        N\A
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/Internal/Remove-PokeModuleSettings.html
#>


    [CmdletBinding(SupportsShouldProcess, DefaultParameterSetName = 'set')]
    Param (
        [Parameter(ParameterSetName = 'set')]
        [string]$PokeConfPath = $(Join-Path -Path $home -ChildPath $(if ($IsWindows -or $PSEdition -eq 'Desktop'){"PokeAPI"}else{".PokeAPI"}) ),

        [Parameter(ParameterSetName = 'set')]
        [switch]$andVariables
    )

    begin {}

    process {

        if (Test-Path $PokeConfPath) {

            Remove-Item -Path $PokeConfPath -Recurse -Force -WhatIf:$WhatIfPreference

            If ($andVariables) {
                Remove-PokeBaseURI
            }

            if (!(Test-Path $PokeConfPath)) {
                Write-Output "The PokeAPI configuration folder has been removed successfully from [ $PokeConfPath ]"
            }
            else {
                Write-Error "The PokeAPI configuration folder could not be removed from [ $PokeConfPath ]"
            }

        }
        else {
            Write-Warning "No configuration folder found at [ $PokeConfPath ]"
        }

    }

    end {}

}
#EndRegion '.\Private\moduleSettings\Remove-PokeModuleSettings.ps1' 86
#Region '.\Public\berry\Get-PokeBerry.ps1' -1

function Get-PokeBerry {
<#
    .SYNOPSIS
        Gets berries from PokeAPI
 
    .DESCRIPTION
        The Get-PokeBerry cmdlet gets berries from PokeAPI
 
        Berries are small fruits that can provide HP and status condition restoration,
        stat enhancement, and even damage negation when eaten by Pokemon
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeBerry
 
        Gets the first 20 berries sorted by id
 
    .EXAMPLE
        Get-PokeBerry -id 1
 
        Gets the berry with the defined id
 
    .EXAMPLE
        Get-PokeBerry -name ditto
 
        Gets the berry with the defined name
 
    .EXAMPLE
        Get-PokeBerry -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/berry/Get-PokeBerry.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/berry" }
            'index_ById'   { $resource_uri = "/berry/$id" }
            'index_ByName' { $resource_uri = ("/berry/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_BerryParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\berry\Get-PokeBerry.ps1' 107
#Region '.\Public\berry\Get-PokeBerryFirmness.ps1' -1

function Get-PokeBerryFirmness {
<#
    .SYNOPSIS
        Gets the firmness of berries from PokeAPI
 
    .DESCRIPTION
        The Get-PokeBerryFirmness cmdlet gets the firmness of
        berries from PokeAPI
 
        Berries can be soft or hard
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeBerryFirmness
 
        Gets the first 20 berry firmness sorted by id
 
    .EXAMPLE
        Get-PokeBerryFirmness -id 1
 
        Gets the berry firmness with the defined id
 
    .EXAMPLE
        Get-PokeBerryFirmness -name ditto
 
        Gets the berry firmness with the defined name
 
    .EXAMPLE
        Get-PokeBerryFirmness -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/berry/Get-PokeBerryFirmness.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/berry-firmness" }
            'index_ById'   { $resource_uri = "/berry-firmness/$id" }
            'index_ByName' { $resource_uri = ("/berry-firmness/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_BerryFirmnessParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\berry\Get-PokeBerryFirmness.ps1' 107
#Region '.\Public\berry\Get-PokeBerryFlavor.ps1' -1

function Get-PokeBerryFlavor {
<#
    .SYNOPSIS
        Gets berry flavor from PokeAPI
 
    .DESCRIPTION
        The Get-PokeBerryFlavor cmdlet gets berry flavor from PokeAPI
 
        Flavors determine whether a Pokemon will benefit or suffer
        from eating a berry based on their nature
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeBerryFlavor
 
        Gets the first 20 berry flavors sorted by id
 
    .EXAMPLE
        Get-PokeBerryFlavor -id 1
 
        Gets the berry flavor with the defined id
 
    .EXAMPLE
        Get-PokeBerryFlavor -name ditto
 
        Gets the berry flavor with the defined name
 
    .EXAMPLE
        Get-PokeBerryFlavor -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/berry/Get-PokeBerryFlavor.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/berry-flavor" }
            'index_ById'   { $resource_uri = "/berry-flavor/$id" }
            'index_ByName' { $resource_uri = ("/berry-flavor/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_BerryFlavorParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\berry\Get-PokeBerryFlavor.ps1' 107
#Region '.\Public\contest\Get-PokeContestEffect.ps1' -1

function Get-PokeContestEffect {
<#
    .SYNOPSIS
        Gets contest effects from PokeAPI
 
    .DESCRIPTION
        The Get-PokeContestEffect cmdlet gets contest effects from PokeAPI
 
        Contest effects refer to the effects of moves when used in contests
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeContestEffect
 
        Gets the first 20 contest effects sorted by id
 
    .EXAMPLE
        Get-PokeContestEffect -id 1
 
        Gets the contest effect with the defined id
 
    .EXAMPLE
        Get-PokeContestEffect -name ditto
 
        Gets the contest effect with the defined name
 
    .EXAMPLE
        Get-PokeContestEffect -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/contest/Get-PokeContestEffect.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/contest-effect" }
            'index_ById'   { $resource_uri = "/contest-effect/$id" }
            'index_ByName' { $resource_uri = ("/contest-effect/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_ContestEffectParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\contest\Get-PokeContestEffect.ps1' 106
#Region '.\Public\contest\Get-PokeContestSuperEffect.ps1' -1

function Get-PokeContestSuperEffect {
<#
    .SYNOPSIS
        Gets super contest effects from PokeAPI
 
    .DESCRIPTION
        The Get-PokeContestSuperEffect cmdlet gets super contest effects
        from PokeAPI
 
        Super contest effects refer to the effects of moves when
        used in super contests
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeContestSuperEffect
 
        Gets the first 20 super contest effects sorted by id
 
    .EXAMPLE
        Get-PokeContestSuperEffect -id 1
 
        Gets the super contest effect with the defined id
 
    .EXAMPLE
        Get-PokeContestSuperEffect -name ditto
 
        Gets the super contest effect with the defined name
 
    .EXAMPLE
        Get-PokeContestSuperEffect -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/contest/Get-PokeContestSuperEffect.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/super-contest-effect" }
            'index_ById'   { $resource_uri = "/super-contest-effect/$id" }
            'index_ByName' { $resource_uri = ("/super-contest-effect/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_ContestSuperEffectParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\contest\Get-PokeContestSuperEffect.ps1' 108
#Region '.\Public\contest\Get-PokeContestType.ps1' -1

function Get-PokeContestType {
<#
    .SYNOPSIS
        Gets contest types from PokeAPI
 
    .DESCRIPTION
        The Get-PokeContestType cmdlet gets contest types from PokeAPI
 
        Contest types are categories judges used to weigh a
        Pokemon's condition in Pokemon contests.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeContestType
 
        Gets the first 20 contest types sorted by id
 
    .EXAMPLE
        Get-PokeContestType -id 1
 
        Gets the contest type with the defined id
 
    .EXAMPLE
        Get-PokeContestType -name ditto
 
        Gets the contest type with the defined name
 
    .EXAMPLE
        Get-PokeContestType -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/contest/Get-PokeContestType.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/contest-type" }
            'index_ById'   { $resource_uri = "/contest-type/$id" }
            'index_ByName' { $resource_uri = ("/contest-type/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_ContestTypeParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\contest\Get-PokeContestType.ps1' 107
#Region '.\Public\encounter\Get-PokeEncounterCondition.ps1' -1

function Get-PokeEncounterCondition {
<#
    .SYNOPSIS
        Gets encounter conditions from PokeAPI
 
    .DESCRIPTION
        The Get-PokeEncounterCondition cmdlet gets encounter conditions from PokeAPI
 
        Conditions which affect what pokemon might appear in the
        wild, e.g., day or night.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeEncounterCondition
 
        Gets the first 20 encounter conditions sorted by id
 
    .EXAMPLE
        Get-PokeEncounterCondition -id 1
 
        Gets the encounter condition with the defined id
 
    .EXAMPLE
        Get-PokeEncounterCondition -name ditto
 
        Gets the encounter condition with the defined name
 
    .EXAMPLE
        Get-PokeEncounterCondition -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/encounter/Get-PokeEncounterCondition.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/encounter-condition" }
            'index_ById'   { $resource_uri = "/encounter-condition/$id" }
            'index_ByName' { $resource_uri = ("/encounter-condition/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_EncounterConditionParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\encounter\Get-PokeEncounterCondition.ps1' 107
#Region '.\Public\encounter\Get-PokeEncounterConditionValue.ps1' -1

function Get-PokeEncounterConditionValue {
<#
    .SYNOPSIS
        Gets encounter condition values from PokeAPI
 
    .DESCRIPTION
        The Get-PokeEncounterConditionValue cmdlet gets encounter condition values
        from PokeAPI
 
        Encounter condition values are the various states that an encounter
        condition can have, i.e., time of day can be either day or night.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeEncounterConditionValue
 
        Gets the first 20 encounter condition values sorted by id
 
    .EXAMPLE
        Get-PokeEncounterConditionValue -id 1
 
        Gets the encounter condition value with the defined id
 
    .EXAMPLE
        Get-PokeEncounterConditionValue -name ditto
 
        Gets the encounter condition value with the defined name
 
    .EXAMPLE
        Get-PokeEncounterConditionValue -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/encounter/Get-PokeEncounterConditionValue.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/encounter-condition-value" }
            'index_ById'   { $resource_uri = "/encounter-condition-value/$id" }
            'index_ByName' { $resource_uri = ("/encounter-condition-value/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_EncounterConditionValueParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\encounter\Get-PokeEncounterConditionValue.ps1' 108
#Region '.\Public\encounter\Get-PokeEncounterMethod.ps1' -1

function Get-PokeEncounterMethod {
<#
    .SYNOPSIS
        Gets encounter methods from PokeAPI
 
    .DESCRIPTION
        The Get-PokeEncounterMethod cmdlet gets encounter methods from PokeAPI
 
        Methods by which the player might can encounter Pokemon in the wild,
        e.g., walking in tall grass
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeEncounterMethod
 
        Gets the first 20 encounter methods sorted by id
 
    .EXAMPLE
        Get-PokeEncounterMethod -id 1
 
        Gets the encounter method with the defined id
 
    .EXAMPLE
        Get-PokeEncounterMethod -name ditto
 
        Gets the encounter method with the defined name
 
    .EXAMPLE
        Get-PokeEncounterMethod -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/encounter/Get-PokeEncounterMethod.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/encounter-method" }
            'index_ById'   { $resource_uri = "/encounter-method/$id" }
            'index_ByName' { $resource_uri = ("/encounter-method/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_EncounterMethodParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\encounter\Get-PokeEncounterMethod.ps1' 107
#Region '.\Public\evolution\Get-PokeEvolutionChain.ps1' -1

function Get-PokeEvolutionChain {
<#
    .SYNOPSIS
        Gets evolution chains from PokeAPI
 
    .DESCRIPTION
        The Get-PokeEvolutionChain cmdlet gets evolution chains from PokeAPI
 
        Evolution chains are essentially family trees. They start with the lowest stage
        within a family and detail evolution conditions for each as well as Pokemon
        they can evolve into up through the hierarchy.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeEvolutionChain
 
        Gets the first 20 evolution chains sorted by id
 
    .EXAMPLE
        Get-PokeEvolutionChain -id 1
 
        Gets the evolution chain with the defined id
 
    .EXAMPLE
        Get-PokeEvolutionChain -name ditto
 
        Gets the evolution chain with the defined name
 
    .EXAMPLE
        Get-PokeEvolutionChain -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/evolution/Get-PokeEvolutionChain.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/evolution-chain" }
            'index_ById'   { $resource_uri = "/evolution-chain/$id" }
            'index_ByName' { $resource_uri = ("/evolution-chain/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_EvolutionChainParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\evolution\Get-PokeEvolutionChain.ps1' 108
#Region '.\Public\evolution\Get-PokeEvolutionTrigger.ps1' -1

function Get-PokeEvolutionTrigger {
<#
    .SYNOPSIS
        Gets evolution triggers from PokeAPI
 
    .DESCRIPTION
        The Get-PokeEvolutionTrigger cmdlet gets evolution triggers from PokeAPI
 
        Evolution triggers are the events and conditions that cause a Pokemon to evolve
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeEvolutionTrigger
 
        Gets the first 20 evolution triggers sorted by id
 
    .EXAMPLE
        Get-PokeEvolutionTrigger -id 1
 
        Gets the evolution trigger with the defined id
 
    .EXAMPLE
        Get-PokeEvolutionTrigger -name ditto
 
        Gets the evolution trigger with the defined name
 
    .EXAMPLE
        Get-PokeEvolutionTrigger -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/evolution/Get-PokeEvolutionTrigger.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/evolution-trigger" }
            'index_ById'   { $resource_uri = "/evolution-trigger/$id" }
            'index_ByName' { $resource_uri = ("/evolution-trigger/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_EvolutionTriggerParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\evolution\Get-PokeEvolutionTrigger.ps1' 106
#Region '.\Public\game\Get-PokeGameGeneration.ps1' -1

function Get-PokeGameGeneration {
<#
    .SYNOPSIS
        Gets game generations from PokeAPI
 
    .DESCRIPTION
        The Get-PokeGameGeneration cmdlet gets game generations from PokeAPI
 
        A generation is a grouping of the Pokemon games that separates them based
        on the Pokemon they include.
 
        In each generation, a new set of Pokemon, Moves, Abilities and Types that
        did not exist in the previous generation are released.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeGameGeneration
 
        Gets the first 20 game generations sorted by id
 
    .EXAMPLE
        Get-PokeGameGeneration -id 1
 
        Gets the game generation with the defined id
 
    .EXAMPLE
        Get-PokeGameGeneration -name ditto
 
        Gets the game generation with the defined name
 
    .EXAMPLE
        Get-PokeGameGeneration -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/game/Get-PokeGameGeneration.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/generation" }
            'index_ById'   { $resource_uri = "/generation/$id" }
            'index_ByName' { $resource_uri = ("/generation/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_GameGenerationParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\game\Get-PokeGameGeneration.ps1' 110
#Region '.\Public\game\Get-PokeGamePokedex.ps1' -1

function Get-PokeGamePokedex {
<#
    .SYNOPSIS
        Gets game pokedexes from PokeAPI
 
    .DESCRIPTION
        The Get-PokeGamePokedex cmdlet gets game pokedexes from PokeAPI
 
        A Pokedex is a handheld electronic encyclopedia device; one which is capable of
        recording and retaining information of the various Pokemon in a given region with the
        exception of the national dex and some smaller dexes related to portions of a region
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeGamePokedex
 
        Gets the first 20 game pokedexes sorted by id
 
    .EXAMPLE
        Get-PokeGamePokedex -id 1
 
        Gets the game pokedex with the defined id
 
    .EXAMPLE
        Get-PokeGamePokedex -name ditto
 
        Gets the game pokedex with the defined name
 
    .EXAMPLE
        Get-PokeGamePokedex -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/game/Get-PokeGamePokedex.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/pokedex" }
            'index_ById'   { $resource_uri = "/pokedex/$id" }
            'index_ByName' { $resource_uri = ("/pokedex/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_GamePokedexParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\game\Get-PokeGamePokedex.ps1' 108
#Region '.\Public\game\Get-PokeGameVersion.ps1' -1

function Get-PokeGameVersion {
<#
    .SYNOPSIS
        Gets game versions from PokeAPI
 
    .DESCRIPTION
        The Get-PokeGameVersion cmdlet gets game versions from PokeAPI
 
        Versions of the games, e.g., Red, Blue or Yellow
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeGameVersion
 
        Gets the first 20 game versions sorted by id
 
    .EXAMPLE
        Get-PokeGameVersion -id 1
 
        Gets the game version with the defined id
 
    .EXAMPLE
        Get-PokeGameVersion -name ditto
 
        Gets the game version with the defined name
 
    .EXAMPLE
        Get-PokeGameVersion -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/game/Get-PokeGameVersion.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/version" }
            'index_ById'   { $resource_uri = "/version/$id" }
            'index_ByName' { $resource_uri = ("/version/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_GameVersionParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\game\Get-PokeGameVersion.ps1' 106
#Region '.\Public\game\Get-PokeGameVersionGroup.ps1' -1

function Get-PokeGameVersionGroup {
<#
    .SYNOPSIS
        Gets game version groups from PokeAPI
 
    .DESCRIPTION
        The Get-PokeGameVersionGroup cmdlet gets game version groups
        from PokeAPI
 
        Version groups categorize highly similar versions of the games
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeGameVersionGroup
 
        Gets the first 20 game version groups sorted by id
 
    .EXAMPLE
        Get-PokeGameVersionGroup -id 1
 
        Gets the game version group with the defined id
 
    .EXAMPLE
        Get-PokeGameVersionGroup -name ditto
 
        Gets the game version group with the defined name
 
    .EXAMPLE
        Get-PokeGameVersionGroup -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/game/Get-PokeGameVersionGroup.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/version-group" }
            'index_ById'   { $resource_uri = "/version-group/$id" }
            'index_ByName' { $resource_uri = ("/version-group/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_GameVersionGroupParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\game\Get-PokeGameVersionGroup.ps1' 107
#Region '.\Public\item\Get-PokeItem.ps1' -1

function Get-PokeItem {
<#
    .SYNOPSIS
        Gets items from PokeAPI
 
    .DESCRIPTION
        The Get-PokeItem cmdlet gets items from PokeAPI
 
        An item is an object in the games which the player can pick up,
        keep in their bag, and use in some manner
 
        They have various uses, including healing, powering up, helping catch
        Pokemon, or to access a new area
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeItem
 
        Gets the first 20 items sorted by id
 
    .EXAMPLE
        Get-PokeItem -id 1
 
        Gets the item with the defined id
 
    .EXAMPLE
        Get-PokeItem -name ditto
 
        Gets the item with the defined name
 
    .EXAMPLE
        Get-PokeItem -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/item/Get-PokeItem.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/item" }
            'index_ById'   { $resource_uri = "/item/$id" }
            'index_ByName' { $resource_uri = ("/item/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_ItemParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\item\Get-PokeItem.ps1' 110
#Region '.\Public\item\Get-PokeItemAttribute.ps1' -1

function Get-PokeItemAttribute {
<#
    .SYNOPSIS
        Gets item attributes from PokeAPI
 
    .DESCRIPTION
        The Get-PokeItemAttribute cmdlet gets item attributes from PokeAPI
 
        Item attributes define particular aspects of items,
        e.g. "usable in battle" or "consumable"
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeItemAttribute
 
        Gets the first 20 item attributes sorted by id
 
    .EXAMPLE
        Get-PokeItemAttribute -id 1
 
        Gets the item attribute with the defined id
 
    .EXAMPLE
        Get-PokeItemAttribute -name ditto
 
        Gets the item attribute with the defined name
 
    .EXAMPLE
        Get-PokeItemAttribute -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/item/Get-PokeItemAttribute.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/item-attribute" }
            'index_ById'   { $resource_uri = "/item-attribute/$id" }
            'index_ByName' { $resource_uri = ("/item-attribute/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_ItemAttributeParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\item\Get-PokeItemAttribute.ps1' 107
#Region '.\Public\item\Get-PokeItemCategory.ps1' -1

function Get-PokeItemCategory {
<#
    .SYNOPSIS
        Gets item categories from PokeAPI
 
    .DESCRIPTION
        The Get-PokeItemCategory cmdlet gets item categories from PokeAPI
 
        Item categories determine where items will be placed in the players bag
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeItemCategory
 
        Gets the first 20 item categories sorted by id
 
    .EXAMPLE
        Get-PokeItemCategory -id 1
 
        Gets the item category with the defined id
 
    .EXAMPLE
        Get-PokeItemCategory -name ditto
 
        Gets the item category with the defined name
 
    .EXAMPLE
        Get-PokeItemCategory -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/item/Get-PokeItemCategory.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/item-category" }
            'index_ById'   { $resource_uri = "/item-category/$id" }
            'index_ByName' { $resource_uri = ("/item-category/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_ItemCategoryParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\item\Get-PokeItemCategory.ps1' 106
#Region '.\Public\item\Get-PokeItemFlingEffect.ps1' -1

function Get-PokeItemFlingEffect {
<#
    .SYNOPSIS
        Gets item fling effects from PokeAPI
 
    .DESCRIPTION
        The Get-PokeItemFlingEffect cmdlet gets item fling effects from PokeAPI
 
        The various effects of the move "Fling" when used with different items
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeItemFlingEffect
 
        Gets the first 20 item fling effects sorted by id
 
    .EXAMPLE
        Get-PokeItemFlingEffect -id 1
 
        Gets the item fling effect with the defined id
 
    .EXAMPLE
        Get-PokeItemFlingEffect -name ditto
 
        Gets the item fling effect with the defined name
 
    .EXAMPLE
        Get-PokeItemFlingEffect -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/item/Get-PokeItemFlingEffect.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/item-fling-effect" }
            'index_ById'   { $resource_uri = "/item-fling-effect/$id" }
            'index_ByName' { $resource_uri = ("/item-fling-effect/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_ItemFlingEffectParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\item\Get-PokeItemFlingEffect.ps1' 106
#Region '.\Public\item\Get-PokeItemPocket.ps1' -1

function Get-PokeItemPocket {
<#
    .SYNOPSIS
        Gets item pockets from PokeAPI
 
    .DESCRIPTION
        The Get-PokeItemPocket cmdlet gets item pockets from PokeAPI
 
        Pockets within the players bag used for storing items by category
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeItemPocket
 
        Gets the first 20 item pockets sorted by id
 
    .EXAMPLE
        Get-PokeItemPocket -id 1
 
        Gets the item pocket with the defined id
 
    .EXAMPLE
        Get-PokeItemPocket -name ditto
 
        Gets the item pocket with the defined name
 
    .EXAMPLE
        Get-PokeItemPocket -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/item/Get-PokeItemPocket.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/item-pocket" }
            'index_ById'   { $resource_uri = "/item-pocket/$id" }
            'index_ByName' { $resource_uri = ("/item-pocket/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_ItemPocketParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\item\Get-PokeItemPocket.ps1' 106
#Region '.\Public\location\Get-PokeLocation.ps1' -1

function Get-PokeLocation {
<#
    .SYNOPSIS
        Gets locations from PokeAPI
 
    .DESCRIPTION
        The Get-PokeLocation cmdlet gets locations from PokeAPI
 
        Locations that can be visited within the games
 
        Locations make up sizable portions of regions, like cities or routes
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeLocation
 
        Gets the first 20 locations sorted by id
 
    .EXAMPLE
        Get-PokeLocation -id 1
 
        Gets the location with the defined id
 
    .EXAMPLE
        Get-PokeLocation -name ditto
 
        Gets the location with the defined name
 
    .EXAMPLE
        Get-PokeLocation -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/location/Get-PokeLocation.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/location" }
            'index_ById'   { $resource_uri = "/location/$id" }
            'index_ByName' { $resource_uri = ("/location/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_LocationParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\location\Get-PokeLocation.ps1' 108
#Region '.\Public\location\Get-PokeLocationArea.ps1' -1

function Get-PokeLocationArea {
<#
    .SYNOPSIS
        Gets location areas from PokeAPI
 
    .DESCRIPTION
        The Get-PokeLocationArea cmdlet gets location areas from PokeAPI
 
        Location areas are sections of areas, such as floors in a building or cave
 
        Each area has its own set of possible Pokemon encounters
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeLocationArea
 
        Gets the first 20 location areas sorted by id
 
    .EXAMPLE
        Get-PokeLocationArea -id 1
 
        Gets the location area with the defined id
 
    .EXAMPLE
        Get-PokeLocationArea -name ditto
 
        Gets the location area with the defined name
 
    .EXAMPLE
        Get-PokeLocationArea -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/location/Get-PokeLocationArea.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/location-area" }
            'index_ById'   { $resource_uri = "/location-area/$id" }
            'index_ByName' { $resource_uri = ("/location-area/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_LocationAreaParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\location\Get-PokeLocationArea.ps1' 108
#Region '.\Public\location\Get-PokeLocationPalParkArea.ps1' -1

function Get-PokeLocationPalParkArea {
<#
    .SYNOPSIS
        Gets pal park areas from PokeAPI
 
    .DESCRIPTION
        The Get-PokeLocationPalParkArea cmdlet gets pal park areas from PokeAPI
 
        Areas used for grouping Pokemon encounters in Pal Park
 
        They're like habitats that are specific to Pal Park
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeLocationPalParkArea
 
        Gets the first 20 pal park areas sorted by id
 
    .EXAMPLE
        Get-PokeLocationPalParkArea -id 1
 
        Gets the pal park area with the defined id
 
    .EXAMPLE
        Get-PokeLocationPalParkArea -name ditto
 
        Gets the pal park area with the defined name
 
    .EXAMPLE
        Get-PokeLocationPalParkArea -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/location/Get-PokeLocationPalParkArea.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/pal-park-area" }
            'index_ById'   { $resource_uri = "/pal-park-area/$id" }
            'index_ByName' { $resource_uri = ("/pal-park-area/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_LocationPalParkAreaParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\location\Get-PokeLocationPalParkArea.ps1' 108
#Region '.\Public\location\Get-PokeLocationRegion.ps1' -1

function Get-PokeLocationRegion {
<#
    .SYNOPSIS
        Gets regions from PokeAPI
 
    .DESCRIPTION
        The Get-PokeLocationRegion cmdlet gets regions from PokeAPI
 
        A region is an organized area of the Pokemon world
 
        Most often, the main difference between regions is the species of
        Pokemon that can be encountered within them.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeLocationRegion
 
        Gets the first 20 regions sorted by id
 
    .EXAMPLE
        Get-PokeLocationRegion -id 1
 
        Gets the region with the defined id
 
    .EXAMPLE
        Get-PokeLocationRegion -name ditto
 
        Gets the region with the defined name
 
    .EXAMPLE
        Get-PokeLocationRegion -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/location/Get-PokeLocationRegion.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/region" }
            'index_ById'   { $resource_uri = "/region/$id" }
            'index_ByName' { $resource_uri = ("/region/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_LocationRegionParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\location\Get-PokeLocationRegion.ps1' 109
#Region '.\Public\machine\Get-PokeMachine.ps1' -1

function Get-PokeMachine {
<#
    .SYNOPSIS
        Gets machines from PokeAPI
 
    .DESCRIPTION
        The Get-PokeMachine cmdlet gets machines from PokeAPI
 
        Machines are the representation of items that teach moves to Pokemon
 
        They vary from version to version, so it is not certain that one specific
        TM or HM corresponds to a single Machine
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeMachine
 
        Gets the first 20 machines sorted by id
 
    .EXAMPLE
        Get-PokeMachine -id 1
 
        Gets the machine with the defined id
 
    .EXAMPLE
        Get-PokeMachine -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/machine/Get-PokeMachine.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/machine" }
            'index_ById'   { $resource_uri = "/machine/$id" }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_MachineParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\machine\Get-PokeMachine.ps1' 96
#Region '.\Public\move\Get-PokeMove.ps1' -1

function Get-PokeMove {
<#
    .SYNOPSIS
        Gets moves from PokeAPI
 
    .DESCRIPTION
        The Get-PokeMove cmdlet gets moves from PokeAPI
 
        Moves are the skills of Pokemon in battle. In battle, a Pokemon uses one move each turn.
 
        Some moves (including those learned by Hidden Machine) can be used outside of battle as well,
        usually for the purpose of removing obstacles or exploring new areas.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeMove
 
        Gets the first 20 moves sorted by id
 
    .EXAMPLE
        Get-PokeMove -id 1
 
        Gets the move with the defined id
 
    .EXAMPLE
        Get-PokeMove -name ditto
 
        Gets the move with the defined name
 
    .EXAMPLE
        Get-PokeMove -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/move/Get-PokeMove.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/move" }
            'index_ById'   { $resource_uri = "/move/$id" }
            'index_ByName' { $resource_uri = ("/move/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_MoveParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\move\Get-PokeMove.ps1' 109
#Region '.\Public\move\Get-PokeMoveAilment.ps1' -1

function Get-PokeMoveAilment {
<#
    .SYNOPSIS
        Gets move ailments from PokeAPI
 
    .DESCRIPTION
        The Get-PokeMoveAilment cmdlet gets move ailments from PokeAPI
 
        Move Ailments are status conditions caused by moves used during battle
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeMoveAilment
 
        Gets the first 20 move ailments sorted by id
 
    .EXAMPLE
        Get-PokeMoveAilment -id 1
 
        Gets the move ailment with the defined id
 
    .EXAMPLE
        Get-PokeMoveAilment -name ditto
 
        Gets the move ailment with the defined name
 
    .EXAMPLE
        Get-PokeMoveAilment -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/move/Get-PokeMoveAilment.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/move-ailment" }
            'index_ById'   { $resource_uri = "/move-ailment/$id" }
            'index_ByName' { $resource_uri = ("/move-ailment/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_MoveAilmentParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\move\Get-PokeMoveAilment.ps1' 106
#Region '.\Public\move\Get-PokeMoveBattleStyle.ps1' -1

function Get-PokeMoveBattleStyle {
<#
    .SYNOPSIS
        Gets move battle styles from PokeAPI
 
    .DESCRIPTION
        The Get-PokeMoveBattleStyle cmdlet gets move battle styles from PokeAPI
 
        Styles of moves when used in the Battle Palace
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeMoveBattleStyle
 
        Gets the first 20 move battle styles sorted by id
 
    .EXAMPLE
        Get-PokeMoveBattleStyle -id 1
 
        Gets the move battle style with the defined id
 
    .EXAMPLE
        Get-PokeMoveBattleStyle -name ditto
 
        Gets the move battle style with the defined name
 
    .EXAMPLE
        Get-PokeMoveBattleStyle -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/move/Get-PokeMoveBattleStyle.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/move-battle-style" }
            'index_ById'   { $resource_uri = "/move-battle-style/$id" }
            'index_ByName' { $resource_uri = ("/move-battle-style/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_MoveBattleStyleParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\move\Get-PokeMoveBattleStyle.ps1' 106
#Region '.\Public\move\Get-PokeMoveCategory.ps1' -1

function Get-PokeMoveCategory {
<#
    .SYNOPSIS
        Gets move categories from PokeAPI
 
    .DESCRIPTION
        The Get-PokeMoveCategory cmdlet gets move categories from PokeAPI
 
        Very general categories that loosely group move effects
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeMoveCategory
 
        Gets the first 20 move categories sorted by id
 
    .EXAMPLE
        Get-PokeMoveCategory -id 1
 
        Gets the move category with the defined id
 
    .EXAMPLE
        Get-PokeMoveCategory -name ditto
 
        Gets the move category with the defined name
 
    .EXAMPLE
        Get-PokeMoveCategory -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/move/Get-PokeMoveCategory.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/move-category" }
            'index_ById'   { $resource_uri = "/move-category/$id" }
            'index_ByName' { $resource_uri = ("/move-category/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_MoveCategoryParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\move\Get-PokeMoveCategory.ps1' 106
#Region '.\Public\move\Get-PokeMoveDamageClass.ps1' -1

function Get-PokeMoveDamageClass {
<#
    .SYNOPSIS
        Gets move damage classes from PokeAPI
 
    .DESCRIPTION
        The Get-PokeMoveDamageClass cmdlet gets move damage classes from PokeAPI
 
        Damage classes moves can have, e.g. physical, special, or non-damaging
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeMoveDamageClass
 
        Gets the first 20 move damage classes sorted by id
 
    .EXAMPLE
        Get-PokeMoveDamageClass -id 1
 
        Gets the move damage class with the defined id
 
    .EXAMPLE
        Get-PokeMoveDamageClass -name ditto
 
        Gets the move damage class with the defined name
 
    .EXAMPLE
        Get-PokeMoveDamageClass -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/move/Get-PokeMoveDamageClass.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/move-damage-class" }
            'index_ById'   { $resource_uri = "/move-damage-class/$id" }
            'index_ByName' { $resource_uri = ("/move-damage-class/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_MoveDamageClassParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\move\Get-PokeMoveDamageClass.ps1' 106
#Region '.\Public\move\Get-PokeMoveLearnMethod.ps1' -1

function Get-PokeMoveLearnMethod {
<#
    .SYNOPSIS
        Gets move learn methods from PokeAPI
 
    .DESCRIPTION
        The Get-PokeMoveLearnMethod cmdlet gets move learn methods from PokeAPI
 
        Methods by which Pokemon can learn moves
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeMoveLearnMethod
 
        Gets the first 20 move learn methods sorted by id
 
    .EXAMPLE
        Get-PokeMoveLearnMethod -id 1
 
        Gets the move learn method with the defined id
 
    .EXAMPLE
        Get-PokeMoveLearnMethod -name ditto
 
        Gets the move learn method with the defined name
 
    .EXAMPLE
        Get-PokeMoveLearnMethod -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/move/Get-PokeMoveLearnMethod.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/move-learn-method" }
            'index_ById'   { $resource_uri = "/move-learn-method/$id" }
            'index_ByName' { $resource_uri = ("/move-learn-method/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_MoveLearnMethodParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\move\Get-PokeMoveLearnMethod.ps1' 106
#Region '.\Public\move\Get-PokeMoveTarget.ps1' -1

function Get-PokeMoveTarget {
<#
    .SYNOPSIS
        Gets move targets from PokeAPI
 
    .DESCRIPTION
        The Get-PokeMoveTarget cmdlet gets move targets from PokeAPI
 
        Targets moves can be directed at during battle
 
        Targets can be Pokemon, environments or even other moves.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeMoveTarget
 
        Gets the first 20 move targets sorted by id
 
    .EXAMPLE
        Get-PokeMoveTarget -id 1
 
        Gets the move target with the defined id
 
    .EXAMPLE
        Get-PokeMoveTarget -name ditto
 
        Gets the move target with the defined name
 
    .EXAMPLE
        Get-PokeMoveTarget -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/move/Get-PokeMoveTarget.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/move-target" }
            'index_ById'   { $resource_uri = "/move-target/$id" }
            'index_ByName' { $resource_uri = ("/move-target/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_MoveTargetParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\move\Get-PokeMoveTarget.ps1' 108
#Region '.\Public\pokemon\Get-PokePokemon.ps1' -1

function Get-PokePokemon {
<#
    .SYNOPSIS
        Gets Pokemon from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemon cmdlet gets Pokemon from PokeAPI
 
        Pokemon are the creatures that inhabit the world of the Pokemon games.
        They can be caught using Pokeballs and trained by battling with other Pokemon.
        Each Pokemon belongs to a specific species but may take on a variant which makes
        it differ from other Pokemon of the same species, such as base stats,
        available abilities and typings.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemon
 
        Gets the first 20 pokemon sorted by id
 
    .EXAMPLE
        Get-PokePokemon -id 1
 
        Gets the pokemon with the defined id
 
    .EXAMPLE
        Get-PokePokemon -name ditto
 
        Gets the pokemon with the defined name
 
    .EXAMPLE
        Get-PokePokemon -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemon.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/pokemon" }
            'index_ById'   { $resource_uri = "/pokemon/$id" }
            'index_ByName' { $resource_uri = ("/pokemon/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemon.ps1' 110
#Region '.\Public\pokemon\Get-PokePokemonAbility.ps1' -1

function Get-PokePokemonAbility {
<#
    .SYNOPSIS
        Gets Pokemon abilities from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonAbility cmdlet gets Pokemon abilities from PokeAPI
 
        Abilities provide passive effects for Pokemon in battle or in the overworld.
        Pokemon have multiple possible abilities but can have only one ability at a time
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemonAbility
 
        Gets the first 20 Pokemon abilities sorted by id
 
    .EXAMPLE
        Get-PokePokemonAbility -id 1
 
        Gets the Pokemon ability with the defined id
 
    .EXAMPLE
        Get-PokePokemonAbility -name ditto
 
        Gets the Pokemon ability with the defined name
 
    .EXAMPLE
        Get-PokePokemonAbility -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonAbility.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/ability" }
            'index_ById'   { $resource_uri = "/ability/$id" }
            'index_ByName' { $resource_uri = ("/ability/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonAbilityParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonAbility.ps1' 107
#Region '.\Public\pokemon\Get-PokePokemonCharacteristic.ps1' -1

function Get-PokePokemonCharacteristic {
<#
    .SYNOPSIS
        Gets Pokemon characteristics from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonCharacteristic cmdlet gets
        Pokemon characteristics from PokeAPI
 
        Characteristics indicate which stat contains a Pokemon's highest IV.
        A Pokemon's Characteristic is determined by the remainder
        of its highest IV divided by 5 (gene_modulo).
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemonCharacteristic
 
        Gets the first 20 Pokemon characteristics sorted by id
 
    .EXAMPLE
        Get-PokePokemonCharacteristic -id 1
 
        Gets the Pokemon characteristic with the defined id
 
    .EXAMPLE
        Get-PokePokemonCharacteristic -name ditto
 
        Gets the Pokemon characteristic with the defined name
 
    .EXAMPLE
        Get-PokePokemonCharacteristic -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonCharacteristic.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/characteristic" }
            'index_ById'   { $resource_uri = "/characteristic/$id" }
            'index_ByName' { $resource_uri = ("/characteristic/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonCharacteristicParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonCharacteristic.ps1' 109
#Region '.\Public\pokemon\Get-PokePokemonColor.ps1' -1

function Get-PokePokemonColor {
<#
    .SYNOPSIS
        Gets pokemon colors from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonColor cmdlet gets pokemon colors from PokeAPI
 
        Colors used for sorting Pokemon in a Pokedex. The color listed in the Pokedex
        is usually the color most apparent or covering each Pokemon's body.
        No orange category exists; Pokemon that are primarily orange are listed as red or brown.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemonColor
 
        Gets the first 20 pokemon colors sorted by id
 
    .EXAMPLE
        Get-PokePokemonColor -id 1
 
        Gets the pokemon color with the defined id
 
    .EXAMPLE
        Get-PokePokemonColor -name ditto
 
        Gets the pokemon color with the defined name
 
    .EXAMPLE
        Get-PokePokemonColor -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonColor.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/pokemon-color" }
            'index_ById'   { $resource_uri = "/pokemon-color/$id" }
            'index_ByName' { $resource_uri = ("/pokemon-color/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonColorParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonColor.ps1' 108
#Region '.\Public\pokemon\Get-PokePokemonEggGroup.ps1' -1

function Get-PokePokemonEggGroup {
<#
    .SYNOPSIS
        Gets egg groups from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonEggGroup cmdlet gets egg groups from PokeAPI
 
        Egg Groups are categories which determine which Pokemon are
        able to interbreed. Pokemon may belong to either one or two Egg Groups
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemonEggGroup
 
        Gets the first 20 egg groups sorted by id
 
    .EXAMPLE
        Get-PokePokemonEggGroup -id 1
 
        Gets the egg group with the defined id
 
    .EXAMPLE
        Get-PokePokemonEggGroup -name ditto
 
        Gets the egg group with the defined name
 
    .EXAMPLE
        Get-PokePokemonEggGroup -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonEggGroup.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/egg-group" }
            'index_ById'   { $resource_uri = "/egg-group/$id" }
            'index_ByName' { $resource_uri = ("/egg-group/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonEggGroupParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonEggGroup.ps1' 107
#Region '.\Public\pokemon\Get-PokePokemonEncounter.ps1' -1

function Get-PokePokemonEncounter {
<#
    .SYNOPSIS
        Gets pokemon location areas from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonEncounter cmdlet gets pokemon location areas from PokeAPI
 
        Pokemon Location Areas are ares where Pokemon can be found
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .EXAMPLE
        Get-PokePokemonEncounter -id 1
 
        Gets the pokemon location area with the defined id
 
    .EXAMPLE
        Get-PokePokemonEncounter -name ditto
 
        Gets the pokemon location area with the defined name
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonEncounter.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ById')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ById'   { $resource_uri = "/pokemon/$id/encounters" }
            'index_ByName' { $resource_uri = ("/pokemon/$name/encounters").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonEncountersParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonEncounter.ps1' 65
#Region '.\Public\pokemon\Get-PokePokemonForm.ps1' -1

function Get-PokePokemonForm {
<#
    .SYNOPSIS
        Gets pokemon forms from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonForm cmdlet gets pokemon forms from PokeAPI
 
        Some Pokemon may appear in one of multiple, visually different forms.
        These differences are purely cosmetic. For variations within a Pokemon species,
        which do differ in more than just visuals, the
        'Pokemon' entity is used to represent such a variety.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemonForm
 
        Gets the first 20 pokemon forms sorted by id
 
    .EXAMPLE
        Get-PokePokemonForm -id 1
 
        Gets the pokemon form with the defined id
 
    .EXAMPLE
        Get-PokePokemonForm -name ditto
 
        Gets the pokemon form with the defined name
 
    .EXAMPLE
        Get-PokePokemonForm -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonForm.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/pokemon-form" }
            'index_ById'   { $resource_uri = "/pokemon-form/$id" }
            'index_ByName' { $resource_uri = ("/pokemon-form/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonFormParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonForm.ps1' 109
#Region '.\Public\pokemon\Get-PokePokemonGender.ps1' -1

function Get-PokePokemonGender {
<#
    .SYNOPSIS
        Gets genders from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonGender cmdlet gets genders from PokeAPI
 
        Genders were introduced in Generation II for the purposes of
        breeding Pokemon but can also result in visual differences or
        even different evolutionary lines
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemonGender
 
        Gets the first 20 genders sorted by id
 
    .EXAMPLE
        Get-PokePokemonGender -id 1
 
        Gets the gender with the defined id
 
    .EXAMPLE
        Get-PokePokemonGender -name ditto
 
        Gets the gender with the defined name
 
    .EXAMPLE
        Get-PokePokemonGender -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonGender.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/gender" }
            'index_ById'   { $resource_uri = "/gender/$id" }
            'index_ByName' { $resource_uri = ("/gender/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonGenderParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonGender.ps1' 108
#Region '.\Public\pokemon\Get-PokePokemonGrowthRate.ps1' -1

function Get-PokePokemonGrowthRate {
<#
    .SYNOPSIS
        Gets growth rates from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonGrowthRate cmdlet gets growth rates from PokeAPI
 
        Growth rates are the speed with which Pokemon gain levels through experience
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemonGrowthRate
 
        Gets the first 20 growth rates sorted by id
 
    .EXAMPLE
        Get-PokePokemonGrowthRate -id 1
 
        Gets the growth rate with the defined id
 
    .EXAMPLE
        Get-PokePokemonGrowthRate -name ditto
 
        Gets the growth rate with the defined name
 
    .EXAMPLE
        Get-PokePokemonGrowthRate -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonGrowthRate.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/growth-rate" }
            'index_ById'   { $resource_uri = "/growth-rate/$id" }
            'index_ByName' { $resource_uri = ("/growth-rate/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonGrowthRateParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonGrowthRate.ps1' 106
#Region '.\Public\pokemon\Get-PokePokemonHabitat.ps1' -1

function Get-PokePokemonHabitat {
<#
    .SYNOPSIS
        Gets pokemon habitats from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonHabitat cmdlet gets pokemon habitats from PokeAPI
 
        Habitats are generally different terrain Pokemon can be found
        in but can also be areas designated for rare or legendary Pokemon.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemonHabitat
 
        Gets the first 20 pokemon habitats sorted by id
 
    .EXAMPLE
        Get-PokePokemonHabitat -id 1
 
        Gets the pokemon habitat with the defined id
 
    .EXAMPLE
        Get-PokePokemonHabitat -name ditto
 
        Gets the pokemon habitat with the defined name
 
    .EXAMPLE
        Get-PokePokemonHabitat -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonHabitat.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/pokemon-habitat" }
            'index_ById'   { $resource_uri = "/pokemon-habitat/$id" }
            'index_ByName' { $resource_uri = ("/pokemon-habitat/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonHabitatParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonHabitat.ps1' 107
#Region '.\Public\pokemon\Get-PokePokemonNature.ps1' -1

function Get-PokePokemonNature {
<#
    .SYNOPSIS
        Gets natures from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonNature cmdlet gets natures from PokeAPI
 
        Natures influence how a Pokemon's stats grow
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemonNature
 
        Gets the first 20 natures sorted by id
 
    .EXAMPLE
        Get-PokePokemonNature -id 1
 
        Gets the nature with the defined id
 
    .EXAMPLE
        Get-PokePokemonNature -name ditto
 
        Gets the nature with the defined name
 
    .EXAMPLE
        Get-PokePokemonNature -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonNature.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/nature" }
            'index_ById'   { $resource_uri = "/nature/$id" }
            'index_ByName' { $resource_uri = ("/nature/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonNatureParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonNature.ps1' 106
#Region '.\Public\pokemon\Get-PokePokemonPokeathlonStat.ps1' -1

function Get-PokePokemonPokeathlonStat {
<#
    .SYNOPSIS
        Gets pokeathlon stats from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonPokeathlonStat cmdlet gets pokeathlon stats from PokeAPI
 
        Pokeathlon Stats are different attributes of a Pokemon's performance in Pokeathlons.
        In Pokeathlons, competitions happen on different courses; one for each
        of the different Pokeathlon stats
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemonPokeathlonStat
 
        Gets the first 20 pokeathlon stats sorted by id
 
    .EXAMPLE
        Get-PokePokemonPokeathlonStat -id 1
 
        Gets the pokeathlon stat with the defined id
 
    .EXAMPLE
        Get-PokePokemonPokeathlonStat -name ditto
 
        Gets the pokeathlon stat with the defined name
 
    .EXAMPLE
        Get-PokePokemonPokeathlonStat -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonPokeathlonStat.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/pokeathlon-stat" }
            'index_ById'   { $resource_uri = "/pokeathlon-stat/$id" }
            'index_ByName' { $resource_uri = ("/pokeathlon-stat/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonPokeathlonStatParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonPokeathlonStat.ps1' 108
#Region '.\Public\pokemon\Get-PokePokemonShape.ps1' -1

function Get-PokePokemonShape {
<#
    .SYNOPSIS
        Gets pokemon shapes from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonShape cmdlet gets pokemon shapes from PokeAPI
 
        Shapes used for sorting Pokemon in a Pokedex
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemonShape
 
        Gets the first 20 pokemon shapes sorted by id
 
    .EXAMPLE
        Get-PokePokemonShape -id 1
 
        Gets the pokemon shape with the defined id
 
    .EXAMPLE
        Get-PokePokemonShape -name ditto
 
        Gets the pokemon shape with the defined name
 
    .EXAMPLE
        Get-PokePokemonShape -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonShape.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/pokemon-shape" }
            'index_ById'   { $resource_uri = "/pokemon-shape/$id" }
            'index_ByName' { $resource_uri = ("/pokemon-shape/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonShapeParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonShape.ps1' 106
#Region '.\Public\pokemon\Get-PokePokemonSpecies.ps1' -1

function Get-PokePokemonSpecies {
<#
    .SYNOPSIS
        Gets pokemon species from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonSpecies cmdlet gets pokemon species from PokeAPI
 
        A Pokemon Species forms the basis for at least one Pokemon. Attributes of a
        Pokemon species are shared across all varieties of Pokemon within the species.
 
        A good example is Wormadam; Wormadam is the species which can be found in three
        different varieties, Wormadam-Trash, Wormadam-Sandy and Wormadam-Plant.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemonSpecies
 
        Gets the first 20 pokemon species sorted by id
 
    .EXAMPLE
        Get-PokePokemonSpecies -id 1
 
        Gets the pokemon species with the defined id
 
    .EXAMPLE
        Get-PokePokemonSpecies -name ditto
 
        Gets the pokemon species with the defined name
 
    .EXAMPLE
        Get-PokePokemonSpecies -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonSpecies.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/pokemon-species" }
            'index_ById'   { $resource_uri = "/pokemon-species/$id" }
            'index_ByName' { $resource_uri = ("/pokemon-species/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonSpeciesParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonSpecies.ps1' 110
#Region '.\Public\pokemon\Get-PokePokemonStat.ps1' -1

function Get-PokePokemonStat {
<#
    .SYNOPSIS
        Gets pokemon stats from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonStat cmdlet gets pokemon stats from PokeAPI
 
        Stats determine certain aspects of battles. Each Pokemon has a
        value for each stat which grows as they gain levels and can be
        altered momentarily by effects in battles.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemonStat
 
        Gets the first 20 pokemon stats sorted by id
 
    .EXAMPLE
        Get-PokePokemonStat -id 1
 
        Gets the pokemon stat with the defined id
 
    .EXAMPLE
        Get-PokePokemonStat -name ditto
 
        Gets the pokemon stat with the defined name
 
    .EXAMPLE
        Get-PokePokemonStat -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonStat.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/stat" }
            'index_ById'   { $resource_uri = "/stat/$id" }
            'index_ByName' { $resource_uri = ("/stat/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonStatParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonStat.ps1' 108
#Region '.\Public\pokemon\Get-PokePokemonType.ps1' -1

function Get-PokePokemonType {
<#
    .SYNOPSIS
        Gets pokemon move type properties from PokeAPI
 
    .DESCRIPTION
        The Get-PokePokemonType cmdlet gets pokemon move type properties from PokeAPI
 
        Types are properties for Pokemon and their moves. Each type has
        three properties: which types of Pokemon it is super effective against,
        which types of Pokemon it is not very effective against, and which
        types of Pokemon it is completely ineffective against.
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokePokemonType
 
        Gets the first 20 pokemon move type properties sorted by id
 
    .EXAMPLE
        Get-PokePokemonType -id 1
 
        Gets the pokemon move type property with the defined id
 
    .EXAMPLE
        Get-PokePokemonType -name ditto
 
        Gets the pokemon move type property with the defined name
 
    .EXAMPLE
        Get-PokePokemonType -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/pokemon/Get-PokePokemonType.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/type" }
            'index_ById'   { $resource_uri = "/type/$id" }
            'index_ByName' { $resource_uri = ("/type/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_PokemonTypeParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\pokemon\Get-PokePokemonType.ps1' 109
#Region '.\Public\utility\Get-PokeEndpoint.ps1' -1

function Get-PokeEndpoint {
<#
    .SYNOPSIS
        Gets endpoints from PokeAPI
 
    .DESCRIPTION
        The Get-PokeEndpoint cmdlet gets endpoints from PokeAPI
 
 
    .EXAMPLE
        Get-PokeEndpoint
 
        Gets the endpoints from PokeAPI
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/utility/Get-PokeEndpoint.html
#>


    [CmdletBinding()]
    Param ()

    begin {
        $PokeAPI_Endpoints = [System.Collections.Generic.List[object]]::new()
    }

    process {

        $invoke_Request = Invoke-RestMethod -Uri "$Poke_Base_URI/"

        foreach ($property in  $invoke_Request.PSObject.Properties) {

            $data = [PSCustomObject]@{
                name    = $property.name
                url     = $property.value
            }

            $PokeAPI_Endpoints.add($data)

        }

        $PokeAPI_Endpoints

    }

    end {}

}
#EndRegion '.\Public\utility\Get-PokeEndpoint.ps1' 51
#Region '.\Public\utility\Get-PokeLanguage.ps1' -1

function Get-PokeLanguage {
<#
    .SYNOPSIS
        Gets languages from PokeAPI
 
    .DESCRIPTION
        The Get-PokeLanguage cmdlet gets languages from PokeAPI
 
        Languages for translations of API resource information
 
    .PARAMETER id
        Defines id of the resource
 
    .PARAMETER name
        Defines name of the resource
 
    .PARAMETER offset
        Defines the page number to return
 
        By default only 20 resources are returned
 
    .PARAMETER limit
        Defines the amount of resources to return with each page
 
        By default only 20 resources are returned
 
    .PARAMETER allPages
        Returns all resources from an endpoint
 
        As of 2024-02, there is no cap on how many resources can be
        returned using the limit parameter. There is currently no real
        use for this parameter and it was included simply to account if
        pagination is introduced.
 
    .EXAMPLE
        Get-PokeLanguage
 
        Gets the first 20 languages sorted by id
 
    .EXAMPLE
        Get-PokeLanguage -id 1
 
        Gets the language with the defined id
 
    .EXAMPLE
        Get-PokeLanguage -name ditto
 
        Gets the language with the defined name
 
    .EXAMPLE
        Get-PokeLanguage -offset 151 -limit 100
 
        Gets the first 100 resources starting at resources with
        an id over 151
 
    .NOTES
        n/a
 
    .LINK
        https://celerium.github.io/PokeAPI-PowerShellWrapper/site/utility/Get-PokeLanguage.html
#>


    [CmdletBinding(DefaultParameterSetName = 'index_ByAll')]
    Param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ById')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$id,

        [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true, ParameterSetName = 'index_ByName')]
        [ValidateNotNullOrEmpty()]
        [string]$name,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$offset,

        [Parameter(Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [ValidateRange(1, [Int]::MaxValue)]
        [Int]$limit,

        [Parameter( Mandatory = $false, ParameterSetName = 'index_ByAll')]
        [Switch]$allPages
    )

    begin {}

    process {

        switch ( $PSCmdlet.ParameterSetName ) {
            'index_ByAll'  { $resource_uri = "/language" }
            'index_ById'   { $resource_uri = "/language/$id" }
            'index_ByName' { $resource_uri = ("/language/$name").ToLower() }
        }

        Write-Verbose "Running the [ $($PSCmdlet.ParameterSetName) ] parameterSet"

        Set-Variable -Name 'PokeAPI_LanguageParameters' -Value $PSBoundParameters -Scope Global -Force

        Invoke-PokeRequest -method GET -resource_Uri $resource_Uri -uri_Filter $PSBoundParameters -allPages:$allPages

    }

    end {}

}
#EndRegion '.\Public\utility\Get-PokeLanguage.ps1' 106