Public/ConfideConnectApi.ps1

<#
.SYNOPSIS
 
Connect to Confide Public API
 
.DESCRIPTION
 
Connect to Confide Public API
 
.PARAMETER Url
The public API URL varies with your data center, you can find it in Confide user guide.
 
.PARAMETER DataCenter
The data center name (e.g., 'Australia Southeast (Victoria)', 'Canada Central (Toronto)').
If Url is not provided, DataCenter will be used to lookup the corresponding URL.
 
.PARAMETER ClientId
The application (client) ID you have retrieved from AvePoint Online Service App registrations.
 
.PARAMETER ClientSecret
The corresponding client secret you used while registering the AvePoint app.
 
.PARAMETER Certificate
The corresponding .pfx certificate file of the .cer certificate you used while registering the AvePoint app.
 
.OUTPUTS
 
None
#>

function Connect-Confide {
    [CmdletBinding()]
    Param(
        
        [Parameter(Position = 0, Mandatory = $true)]
        [String]
        ${ClientId},
        [Parameter(Position = 1, Mandatory = $true, ParameterSetName = "ClientCertificate")]
        [Alias("Cert")]
        [System.Security.Cryptography.X509Certificates.X509Certificate2]
        ${Certificate},
        [Parameter(Position = 2, Mandatory = $true, ParameterSetName = "ClientSecret")]
        [String]
        $ClientSecret,
        [Parameter(Mandatory =  $false)]
        [String]
        ${Url},
        [Parameter(Mandatory = $false)]
        [String]
        ${DataCenter},
        [Parameter(Mandatory = $false)]
        [String]
        ${IdentityServiceUri}
    )
    PROCESS {
        # Determine the URL
        if ([string]::IsNullOrEmpty($Url)) {
            if ([string]::IsNullOrEmpty($DataCenter)) {
                # No Url and no DataCenter provided, use default
                $Url = 'https://graph.avepointonlineservices.com/confide'
            } else {
                # DataCenter provided, lookup the URL using the configuration
                $Url = Get-ConfideDataCenterUrl -DataCenterName $DataCenter
            }
        }

        if (!$IdentityServiceUri) {
            $IdentityServiceUri = 'https://identity.avepointonlineservices.com'           
            if ($Url.StartsWith('https://graph-public.sharepointguild.com/')) {
                $IdentityServiceUri = 'https://identity-public.sharepointguild.com'
            }
        }
        $Configuration = Get-ConfideConfiguration
        $Token = ''
        switch ($PsCmdlet.ParameterSetName) {
            "ClientCertificate" {
                $Token = Get-IdentityServiceToken -IdentityServiceUri $IdentityServiceUri -Scope confide.graph.readwrite.all -ClientId $ClientId -Cert $Certificate
            }
            "ClientSecret" {
                $Token = Get-IdentityServiceTokenByClientSecret -IdentityServiceUri $IdentityServiceUri -Scope confide.graph.readwrite.all -ClientId $ClientId -ClientSecret $ClientSecret
            }
        }
        $CustomerId = (Convert-JWTtoken $Token).realm
        if ($Configuration.containsKey("CustomerId") -and $CustomerId -ne $Configuration["CustomerId"]) {
            $continue = Read-Host "Are you sure you want to connect to another tenant? (Y/N)"
            if ($continue -eq "N") {
                return;
            }
        }
        $Configuration["BaseUrl"] = $Url
        $Configuration["AccessToken"] = $Token
        $Configuration["IdentityServiceUri"] = $IdentityServiceUri
        $Configuration["ClientId"] = $ClientId
        $Configuration["CustomerId"] = $CustomerId
        $Configuration["Certificate"] = $Certificate
        $Configuration["ClientSecret"] = $ClientSecret
        if (-not $Configuration["DefaultHeaders"].ContainsKey("Token-Source")) {
            $Configuration["DefaultHeaders"]["Token-Source"] = "PublicAPI"
        }
    }
}

<#
.SYNOPSIS
 
Disconnect from Confide Public API
 
.DESCRIPTION
 
Disconnect from Confide Public API
 
.OUTPUTS
 
None
#>

function Disconnect-Confide {
    [CmdletBinding()]
    Param()
    PROCESS {
        $Configuration = Get-ConfideConfiguration
        $Configuration["BaseUrl"] = $null
        $Configuration["AccessToken"] = $null
        $Configuration["IdentityServiceUri"] = $null
        $Configuration["ClientId"] = $null
        $Configuration["CustomerId"] = $null
        $Configuration["Certificate"] = $null
         $Configuration["ClientSecret"] = $null
    }
}