Public/Get-MerakiOrganizationCameraOnboardingStatuses.ps1

function Get-MerakiOrganizationCameraOnboardingStatuses {
    <#
    .SYNOPSIS
    Retrieves onboarding statuses for cameras in a Meraki organization.
 
    .DESCRIPTION
    This function retrieves onboarding statuses for cameras in a Meraki organization using the Meraki Dashboard API. It requires an authentication token for the API, the ID of the organization for which the statuses should be retrieved, and optionally an array of serial numbers or network IDs to filter the results.
 
    .PARAMETER AuthToken
    The authentication token for the Meraki Dashboard API.
 
    .PARAMETER OrgID
    The ID of the organization for which the onboarding statuses should be retrieved. If not specified, the function will use the ID of the first organization returned by the Get-MerakiOrganizations function.
 
    .PARAMETER serials
    An array of camera serial numbers to filter the results. If not specified, all cameras in the organization will be included in the results.
 
    .PARAMETER networkIds
    An array of network IDs to filter the results. If not specified, cameras in all networks in the organization will be included in the results.
 
    .EXAMPLE
    PS C:\> Get-MerakiOrganizationCameraOnboardingStatuses -AuthToken $AuthToken -OrgID $OrganizationID
 
    Retrieves onboarding statuses for all cameras in the specified organization.
 
    .NOTES
    This function requires the Get-MerakiOrganizations function.
 
    .LINK
    https://developer.cisco.com/meraki/api-v1/#!get-organization-camera-onboarding-statuses
    #>

    [CmdletBinding()]
    param (
        [parameter(Mandatory=$true)]
        [string]$AuthToken,
        [parameter(Mandatory=$false)]
        [string]$OrganizationID = (Get-OrgID -AuthToken $AuthToken),
        [parameter(Mandatory=$false)]
        [array]$serials = $null,
        [parameter(Mandatory=$false)]
        [array]$networkIds = $null
    )
    If($OrganizationID -eq "Multiple organizations found. Please specify an organization ID.") {
        Return "Multiple organizations found. Please specify an organization ID."
    } else {
        try {
            $header = @{
                "X-Cisco-Meraki-API-Key" = $AuthToken
            }
            $queryParams = @{}
            if ($serials) {
                $queryParams['serials[]'] = $serials
            }
            if ($networkIds) {
                $queryParams['networkIds[]'] = $networkIds
            }

            $queryString = New-MerakiQueryString -queryParams $queryParams

            $URL = "https://api.meraki.com/api/v1/organizations/$OrganizationID/camera/onboarding/statuses?$queryString"

            $URI = [uri]::EscapeUriString($URL)

            $response = Invoke-RestMethod -Method Get -Uri $URI -Header $header -UserAgent "MerakiPowerShellModule/1.0.2 DocNougat"
            return $response
        }
        catch {
            Write-Host $_
            Throw $_
        }
    }
}