Public/Connect-AptecoOrbit.ps1

function Connect-AptecoOrbit {
    [CmdletBinding()]

    <#
    .SYNOPSIS
        Establishes a session against an Apteco Orbit API instance.
 
    .DESCRIPTION
        Apteco PS Modules - Apteco Orbit API session handling
 
        Call this once before using Invoke-AptecoOrbit, Get-AptecoOrbitPagedData or
        Get-AptecoOrbitCampaigns. The session/access token is cached to disk (encrypted at rest
        via EncryptCredential by default) and reused until it expires, so repeated script runs
        do not need to log in every time.
 
    .PARAMETER BaseUrl
        Base url of the Orbit API, e.g. https://partner.apteco.io/OrbitAPI/
 
    .PARAMETER DataView
        The DataView to authenticate against
 
    .PARAMETER Credential
        Username/password to authenticate with
 
    .PARAMETER LoginType
        "SIMPLE" (default) or "SALTED", matching what the target Orbit instance expects.
 
    .PARAMETER SessionFile
        Where to cache the session. Defaults to a file in the temp folder.
 
    .PARAMETER Ttl
        Session time to live in minutes. Default 60.
 
    .PARAMETER EncryptToken
        Whether to encrypt the cached session token at rest via EncryptCredential. Default $true.
 
    .PARAMETER Force
        Ignore a cached session on disk and log in again.
 
    .EXAMPLE
        Connect-AptecoOrbit -BaseUrl "https://partner.apteco.io/OrbitAPI/" -DataView "Demo" -Credential (Get-Credential)
 
    .EXAMPLE
        Connect-AptecoOrbit -DataView "Demo" -Credential (Get-Credential) -Force
 
    .INPUTS
        None
 
    .OUTPUTS
        $null
 
    .NOTES
        Author: florian.von.bracht@apteco.de
 
    #>


    param(
         [Parameter(Mandatory=$false)][String]$BaseUrl = $Script:settings.base
        ,[Parameter(Mandatory=$true)][String]$DataView
        ,[Parameter(Mandatory=$true)]
         [System.Management.Automation.PSCredential]
         [System.Management.Automation.Credential()]$Credential
        ,[Parameter(Mandatory=$false)][ValidateSet("SIMPLE","SALTED")][String]$LoginType = $Script:settings.loginType
        ,[Parameter(Mandatory=$false)][String]$SessionFile = $Script:settings.sessionFile
        ,[Parameter(Mandatory=$false)][Int]$Ttl = $Script:settings.ttl
        ,[Parameter(Mandatory=$false)][Bool]$EncryptToken = $Script:settings.encryptToken
        ,[Parameter(Mandatory=$false)][Switch]$Force = $false
    )

    Set-OrbitTlsProtocol

    $Script:settings.base = $BaseUrl.TrimEnd("/") + "/"
    $Script:settings.dataView = $DataView
    $Script:settings.loginType = $LoginType
    $Script:settings.sessionFile = $SessionFile
    $Script:settings.ttl = $Ttl
    $Script:settings.encryptToken = $EncryptToken
    $Script:credential = $Credential
    $Script:endpoints = $null

    [void]( Get-OrbitEndpoints )
    Get-OrbitSession -Force:$Force

}