Using API to create nested aliases

Started by Quinten, October 14, 2024, 05:09:07 PM

Previous topic - Next topic
Dear Forum!

We are trying to automate the creation of aliases using github actions with hosted runners. In powershell.
So far we have managed to create a blank alias.

$key='ourkey'
$secret='oursecret'

$credPair = "$($key):$($secret)"
$encodedCredentials = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($credPair))
$BasicAuthHeader = @{ Authorization = "Basic $encodedCredentials" }

$body = @{
    alias = @{
        enabled = 1
        name = "Alias1"
        type = "host"
        description = "testing"
        content = "1.1.1.1`n2.2.2.2"
    }
} | ConvertTo-Json -Depth 100 -Compress


$apiUri="/api/firewall/alias/additem"
$baseUri="http://1.2.3.4:80"
$uri=$baseUri+$apiUri
$method="post"
$result=Invoke-RestMethod -Uri $uri -Method $method -Headers $BasicAuthHeader -Body $body -UseBasicParsing -ContentType "application/json"
$result

result uuid
------ ----
saved  39873aaf-e467-484c-a13a-8c506489ecfa

This worked.

Through the GUI aliases can be added to other aliases.

The GUI version uses the /api/firewall/alias/setItem/UUID endpoint
The UUID can be retrieved for an alias name using "/api/firewall/alias/getAliasUUID/$aliasName" endpoint.

This is the payload we captured with the web browser, when using the GUI to add an alias to another alias.
{"alias":{"enabled":"1","name":"MainAlias","type":"host","proto":"","categories":"","updatefreq":"","content":"testalias\nAlias1","interface":"","counters":"0","description":""},"network_content":"Alias1,testalais","authgroup_content":""}

When we attempted to add into alias "MainAlias" the content "Alias1" to replicate what the GUI does, we receive

result
------
failed

Does anyone know how to do this using the API?