Add group to directory

Hi Community,

I want to create a group for a specific directory.

Well the group request has no id for a group: https://docs.atlassian.com/atlassian-crowd/4.1.0/REST/#usermanagement/1/group-addGroup

How can I add a new group to a directory?

BG + Cheers

Hi Thomas,

From Crowd administration, you need first to create an app connected to direcoty of interest: https://confluence.atlassian.com/crowd/adding-an-application-18579591.html

Then, you’ll need to create basic auth credentials base64 encoded for API call, with your application’s name as $login and application’s password as $password in following powershell code:

function GetBasicAuthCredentials {
    param(
        [Parameter(Mandatory=$True)][Alias("l")][String]$login,
        [Parameter(Mandatory=$True)][Alias("pw")][String]$password
    )
    $AuthString = "{0}:{1}" -f $login, $password
    $AuthBytes  = [System.Text.Encoding]::Ascii.GetBytes($AuthString)
    return [Convert]::ToBase64String($AuthBytes)
}

Finally, here a sample of pws code to add a group to directory of interest:

# Authentication
$applicationName = "Foo"
$applicationPassword = "Bar"
$appBasicCreds = GetBasicAuthCredentials -l $applicationName -pw $applicationPassword
###

$crowdHost = "http://localhost:8095/crowd"

# Group information
$description = "Blablabla"
$groupname = "my-awesome-group"
###

# Parse data to Json for request body
$data = @{description=[String]$description; name=[String]$groupname; active=$True; type="GROUP"} | ConvertTo-Json -Depth 5

try {
    $response = Invoke-RestMethod -Method POST `
        -Uri "$crowdHost/rest/usermanagement/latest/group" `
        -Headers @{
            "Authorization"="Basic $appBasicCreds"
            "Accept"="application/json"
            "Content-Type"="application/json"
        } `
        -Body $data
    
    Write-Host "Group successfully added to directory." -ForegroundColor Green

} catch {
    Write-Warning $_.Exception.Response.StatusCode.Value__

    if ($_.Exception.Response.StatusCode.Value__ -eq 400) {
        Write-Warning "Group already exists."
    } elseif ($_.Exception.Response.StatusCode.Value__ -eq 403) {
        Write-Warning "The application is not allowed to create a new group."
    } else {
        Write-Warning $_.Exception.Response.StatusDescription
    }
}