PublicFunctions/Get-FMPCOTReportList.ps1

function Get-FMPCOTReportList { 
 

    <#
        .SYNOPSIS
            Retrieves a comprehensive list of available Commitment of Traders (COT) reports using the Financial Modeling Prep API.

        .DESCRIPTION
            The Get-FMPCOTReportList function fetches an overview of the various COT reports available by commodity or futures contract.
            The returned data includes details such as the report symbol and name for each market segment.
            If no API key is provided, the function attempts to retrieve it using the Get-FMPCredential function and will prompt
            the user if necessary.

        .PARAMETER ApiKey
            Specifies your Financial Modeling Prep API key. If omitted, the function will attempt to retrieve it using Get-FMPCredential
            and prompt the user if necessary.

        .EXAMPLE
            Get-FMPCOTReportList

            This example retrieves the list of available Commitment of Traders reports using your Financial Modeling Prep API key.

        .NOTES
            This is a premium endpoint, and requires a paid subscription. This function utilizes the Financial Modeling Prep API's COT Report List endpoint.
            For more information, visit: https://financialmodelingprep.com
    #>


    [CmdletBinding()]

    Param (
        [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/stable/commitment-of-traders-list"
    }

    Process {
        $url = "{0}?apikey={1}" -f $baseUrl, $ApiKey

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

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