Public/Channels/New-MMChannel.ps1

# Создание нового канала в MatterMost

function New-MMChannel {
    <#
    .SYNOPSIS
        Creates a new channel in a MatterMost team.
    .EXAMPLE
        New-MMChannel -TeamId 'team123' -Name 'mychannel' -DisplayName 'My Channel'
    .EXAMPLE
        New-MMChannel -TeamName 'myteam' -Name 'mychannel' -DisplayName 'My Channel'
    .EXAMPLE
        New-MMChannel -TeamId 'team123' -Name 'private' -DisplayName 'Private Channel' -Type Private
    #>

    [OutputType('MMChannel')]
    [CmdletBinding(DefaultParameterSetName = 'ById')]
    param(
        [Parameter(ParameterSetName = 'ById')]
        [string]$TeamId,

        [Parameter(Mandatory, ParameterSetName = 'ByName')]
        [string]$TeamName,

        [Parameter(Mandatory)]
        [string]$Name,

        [Parameter(Mandatory)]
        [string]$DisplayName,

        [ValidateSet('Public', 'Private')]
        [string]$Type = 'Public',

        [string]$Purpose,
        [string]$Header
    )

    $resolvedTeamId = if ($PSCmdlet.ParameterSetName -eq 'ByName') {
        (Get-MMTeam -Name $TeamName).id
    } elseif ($TeamId) {
        $TeamId
    } else {
        Get-MMDefaultTeamId
    }

    $body = @{
        team_id      = $resolvedTeamId
        name         = $Name
        display_name = $DisplayName
        type         = if ($Type -eq 'Public') { 'O' } else { 'P' }
    }

    if ($Purpose) { $body['purpose'] = $Purpose }
    if ($Header)  { $body['header']  = $Header }

    Invoke-MMRequest -Endpoint 'channels' -Method POST -Body $body | ConvertTo-MMChannel
}