public/Connect-RHSM.ps1

<#
    .SYNOPSIS
    Connects to the Red Hat Subscription Management (RHSM) API.

    .DESCRIPTION
    Exchanges a Red Hat offline token for a short-lived bearer access token and stores the session in module scope.
    The access token is refreshed automatically when it is about to expire.

    .PARAMETER OfflineToken
    Specifies the Red Hat offline token as a SecureString. Generate one at https://access.redhat.com/management/api.

    .PARAMETER BaseUri
    Specifies the API base URI. Defaults to https://api.access.redhat.com/management/v1.

    .EXAMPLE
    $token = Read-Host -AsSecureString -Prompt 'Red Hat offline token'
    Connect-RHSM -OfflineToken $token

    .OUTPUTS
    [PSCustomObject].

    .LINK
    https://access.redhat.com/management/api/rhsm
#>


function Connect-RHSM {
    [CmdletBinding()]
    [OutputType([PSCustomObject])]
    param (
        [Parameter(Mandatory = $true)]
        [SecureString]$OfflineToken,

        [Parameter(Mandatory = $false)]
        [ValidateNotNullOrEmpty()]
        [String]$BaseUri = 'https://api.access.redhat.com/management/v1'
    )

    process {
        $token = Get-RHSMAccessToken -OfflineToken $OfflineToken

        $script:RHSMSession = [PSCustomObject]@{
            BaseUri      = $BaseUri
            OfflineToken = $OfflineToken
            AccessToken  = $token.AccessToken
            ExpiresAt    = $token.ExpiresAt
        }

        [PSCustomObject]@{
            BaseUri   = $BaseUri
            ExpiresAt = $token.ExpiresAt
        }
    }
}