List Permissions
List Permissions is available as both a pgutil command and an HTTP Request, and will return list describing all configured Permissions.
This example lists all existing permissions:
pgutil security permissions list
Command Specification (CLI)
The security permissions list command is used to list all existing Permissions.
Listing all Permissions requires no additional options:
pgutil security permissions list
Example output:
1: allow View & Download Packages globally for user Anonymous
2: allow Administer globally for group Administrators
3: allow Administer globally for user Anonymous
...
HTTP Request Specification
To list all Permissions, simply GET to the following URL with an appropriate API Key:
GET /api/security/permissions/list
HTTP Response Specification
An array of SecurityPermission (see SecurityPermission.cs) objects will be returned on a successful 200 response. A 403 response indicates a missing, unknown, or unauthorized API Key.
Sample Usage Scripts
The following scripts will export a complete list of granted and denied permissions as a .csv file. The .csv will be formatted with the headers shown in this example:
id,user,group,task,feedGroup,deny
2,,Administrators,Administer,,False
3,Anonymous,,Administer,,True
1,Anonymous,,View & Download Packages,,True
15,,Lead Developers,Publish Packages,,False
13,,Lead Developers,View & Download Packages,nugets,False
14,,Lead Developers,Promote Packages,nuget-feed,False
11,Liam Carter,,View & Download Packages,nugets,False
10,Liam Carter,,Manage Feed,nuget-feeds,False
12,Noah Davis,,View & Download Packages,nuget-feed,False
Export Permissions List (PowerShell)
This PowerShell script will export a .csv file located at C:\Users\YourUser\Documents\permissions_export.csv from a ProGet instance located at proget.corp.local with an API key abc12345:
$hostname = "proget.corp.local"
$apiKey = "abc12345"
$outputCsv = "C:\Users\YourUser\Documents\permissions_export.csv"
try {
$permissions = Invoke-RestMethod -Uri "https://$hostname/api/security/permissions/list" -Method Get -Headers @{ "X-ApiKey" = $apiKey }
} catch {
Write-Error "Failed to retrieve permissions: $_"
exit
}
$csvData = $permissions | ForEach-Object {
[PSCustomObject]@{
id = $_.id
user = if ($_.PSObject.Properties['user']) { $_.user } else { "" }
group = if ($_.PSObject.Properties['group']) { $_.group } else { "" }
task = if ($_.PSObject.Properties['task']) { $_.task } else { "" }
feedGroup = if ($_.PSObject.Properties['feedGroup']) { $_.feedGroup } else { "" }
deny = if ($_.PSObject.Properties['deny']) { $_.deny } else { $false }
}
}
try {
$csvData | Export-Csv -Path $outputCsv -NoTypeInformation -Encoding UTF8
Write-Host "Permissions exported successfully to $outputCsv"
} catch {
Write-Error "Failed to export CSV: $_"
}
Example Output:
Permissions exported successfully to C:\Users\YourUser\Documents\permissions_export.csv
Export Permissions List (Python)
This Python script will export a .csv file located at C:\Users\YourUser\Documents\users_export.csv from a ProGet instance located at proget.corp.local with an API key abc12345:
import csv
import requests
hostname = "proget.corp.local"
api_key = "abc12345"
output_csv = r"C:\Users\YourUser\Documents\users_export.csv"
api_url = f"https://{hostname}/api/security/permissions/list"
headers = {"X-ApiKey": api_key}
try:
response = requests.get(api_url, headers=headers)
response.raise_for_status()
permissions = response.json()
except requests.exceptions.RequestException as e:
print(f"Failed to retrieve permissions: {e}")
exit()
with open(output_csv, mode='w', newline='', encoding='utf-8') as csvfile:
fieldnames = ["id", "user", "group", "task", "feedGroup", "deny"]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for perm in permissions:
writer.writerow({
"id": perm.get("id", ""),
"user": perm.get("user", ""),
"group": perm.get("group", ""),
"task": perm.get("task", ""),
"feedGroup": perm.get("feedGroup", ""),
"deny": perm.get("deny", "")
})
print(f"Permissions exported successfully to {output_csv}")
Example Output:
Permissions exported successfully to C:\Users\YourUser\Documents\permissions_export.csv