public/api/Grant-MBSAPILicense.ps1

function Grant-MBSAPILicense {
    <#
    .SYNOPSIS
    Grants a license to a specified user
     
    .DESCRIPTION
    Calls the POST api/Licenses/Grant API to grant a specified user a license from the appropriate license pool (determined by MBS user settings)
     
    .PARAMETER LicenseID
    ID of the license to grant. Use Get-MBSAPILicenses to determine.
     
    .PARAMETER UserID
    ID of the user to which the license needs to be granted. Use Get-MBSAPIUser to determine.
     
    .PARAMETER ProfileName
    Profile name used with MSP360 PowerShell for MBS API (set via Set-MBSApiCredential)
     
    .EXAMPLE
    Grant-MBSAPILicense -ProfileName ao -LicenseID 8fc593d1-bb74-4a52-a644-0a574967df83 -UserID e472840f-e01f-40e0-95fc-b28882a28cfe
 
    .INPUTS
    System.Management.Automation.PSCustomObject
 
    .OUTPUTS
    String
 
    .NOTES
        Author: Andrey Oshukov
     
    .LINK
     
    #>

    
    param(
        [Parameter(Mandatory=$true, HelpMessage="License ID", ValueFromPipelineByPropertyName)]
        [string]$LicenseID,
        [Parameter(Mandatory=$true, HelpMessage="User ID", ValueFromPipelineByPropertyName)]
        [string]$UserID,
        [Parameter(Mandatory=$false, HelpMessage="The profile name")]
        [string]$ProfileName
    )
    begin {
        
    } 
    process { 
        $GrantLicensePost = @{
            LicenseID=$LicenseID
            UserID=$UserID
        }
        Write-Verbose -Message ("$($PSCmdlet.MyInvocation.MyCommand.Name): URL: " + ((Get-MBSApiUrl).Licenses +'/Grant'))
        Write-Verbose -Message ("$($PSCmdlet.MyInvocation.MyCommand.Name): POST Request: " + ($GrantLicensePost | ConvertTo-Json))
        return Invoke-RestMethod -Uri ((Get-MBSApiUrl).Licenses +'/Grant') -Method Post -Headers (Get-MBSAPIHeader -ProfileName $ProfileName) -body ($GrantLicensePost | ConvertTo-Json) -ContentType 'application/json'
    } 
    end {
        
    }
}