Public/Set-SnipeitStatus.ps1

<#
.SYNOPSIS
Sets Snipe-it Status Labels

.PARAMETER id
A id of specific Status Label


.PARAMETER color
Hex code showing what color the status label should be on the pie chart in the dashboard

.PARAMETER show_in_nav
1 or 0 - determine whether the status label should show in the left-side nav of the web GUI

.PARAMETER default_label
1 or 0 - determine whether it should be bubbled up to the top of the list of available statuses

.PARAMETER url
URL of Snipeit system, can be set using Set-SnipeitInfo command

.PARAMETER apiKey
Users API Key for Snipeit, can be set using Set-SnipeitInfo command

.EXAMPLE
Get-SnipeitStatus -search "Ready to Deploy"

.EXAMPLE
Set-SnipeitStatus -id 3 -name 'Waiting for arrival' -type pending

#>


function Set-SnipeitStatus()
{
    [CmdletBinding(
        SupportsShouldProcess = $true,
        ConfirmImpact = "Medium"
    )]
    Param(
        [parameter(Mandatory=$true,ValueFromPipelineByPropertyName)]
        [int[]]$id,

        [string]$name,

        [parameter(Mandatory=$true)]
        [ValidateSet('deployable','undeployable','pending','archived')]
        [string]$type,

        [string]$notes,

        [string]$color,

        [bool]$show_in_nav,

        [bool]$default_label,

        [parameter(mandatory = $true)]
        [string]$url,

        [parameter(mandatory = $true)]
        [string]$apiKey
    )

    begin {
        $Values = . Get-ParameterValue -Parameters $MyInvocation.MyCommand.Parameters -BoundParameters $PSBoundParameters
        $Body = $Values | ConvertTo-Json
    }

    process {
        foreach($status_id in $id) {
            $Parameters = @{
                Uri           = "$url/api/v1/statuslabels/$status_id"
                Method        = 'Put'
                Body          = $Body
                Token         = $apiKey
            }

            If ($PSCmdlet.ShouldProcess("ShouldProcess?")) {
                $result = Invoke-SnipeitMethod @Parameters
            }
            $result
        }
    }
}