Get-GitLabProjectMilestone.ps1

function Get-GitLabProjectMilestone
{
  <#
      .SYNOPSIS
      Gets Milestone for project.
      .DESCRIPTION
      Gets Milestone for Project. Gets all Milestone for Project by default.
      can be filtered by state using -State.
 
      Returns single Milestone when -MilestoneID is specified.
      .EXAMPLE
      Get-GitLabProjectMilestone -ProjectID 20
      ---------------------------------------------------------------
      gets all milestones created under project 20
  #>

  [CmdletBinding(DefaultParameterSetName = 'AllMilestones')]
  [Alias()]
  [OutputType()]
  Param
  (
    [Parameter(HelpMessage = 'ProjectID',
    Mandatory = $true)]
    [Alias('ID')]
    [int]$ProjectID,

    [Parameter(ParameterSetName = 'AllMilestones', mandatory = $false)]
    [validateset('active','closed')]
    [string]$State,

    [Parameter(HelpMessage = 'MilestoneID',
    ParameterSetName = 'SingleMilestone',mandatory = $true)]
    [int]$MilestoneID,

    [Parameter(HelpMessage = 'Specify Existing GitlabConnector',
        Mandatory = $false,
    DontShow = $true)]
    [psobject]$GitlabConnect = (Get-GitlabConnect)
  )
  
  $httpmethod = 'get'
  $apiurl = "projects/$ProjectID/milestones"
  $parameters = @{}
  if($State)
  {
    $parameters.state = $State
  }

  if($MilestoneID)
  {
    $apiurl += "/$MilestoneID"
  }

  $GitlabConnect.callapi($apiurl,$httpmethod,$parameters)
}