PublicFunctions/Get-FMPPressReleases.ps1

function Get-FMPPressReleases { 
 

    <#
        .SYNOPSIS
            Retrieves latest press releases from companies.

        .DESCRIPTION
            The Get-FMPPressReleases function fetches the most recent press releases issued by companies.
            You can filter by a specific company symbol and paginate results.

        .PARAMETER Symbol
            Specifies the stock symbol to retrieve press releases for. Optional.

        .PARAMETER Page
            Specifies the page number for pagination. Default is 0.

        .PARAMETER ApiKey
            Your Financial Modeling Prep API key. If omitted, the function attempts to retrieve it using Get-FMPCredential.

        .EXAMPLE
            Get-FMPPressReleases -Page 0

            Returns the latest press releases from all companies, starting from page 0.

        .EXAMPLE
            Get-FMPPressReleases -Symbol AAPL -Page 1

            Returns press releases from Apple Inc., starting from page 1.

        .NOTES
            This is a premium endpoint, and requires a paid subscription. This function uses the Financial Modeling Prep API's Press Releases endpoint.
            For more information, visit: https://site.financialmodelingprep.com/developer/docs/stable/press-releases
    #>


    [CmdletBinding()]
    Param (
        [Parameter(Mandatory = $false)]
        [string]$Symbol,

        [Parameter(Mandatory = $false)]
        [int]$Page = 0,

        [Parameter(Mandatory = $false)]
        [string]$ApiKey = (Get-FMPCredential)
    )

    Begin {
        if (-not $ApiKey) {
            $ApiKey = Read-Host "Please enter your Financial Modeling Prep API key"
        }
        $baseUrl = "https://financialmodelingprep.com/api/v3/press-releases"
    }

    Process {
        $queryParams = @{
            page   = $Page
            apikey = $ApiKey
        }

        if ($Symbol) { $queryParams.symbol = $Symbol }

        $queryString = ($queryParams.GetEnumerator() | ForEach-Object { "$($_.Key)=$($_.Value)" }) -join "&"
        $url = "{0}?{1}" -f $baseUrl, $queryString

        $headers = @{
            "Upgrade-Insecure-Requests" = "1"
        }

        try {
            $response = Invoke-RestMethod -Uri $url -Method Get -Headers $headers -ErrorAction Stop
            return $response
        }
        catch {
            throw "Error retrieving press releases: $_"
        }
    }
 
 };