---
title: "Security"
order: 9
---

The Security API provides several `pgutil` commands (available as `pgutil security`) and HTTP endpoints to create, add, delete, and perform other operations on Users, Groups, Tasks and Permissions. All HTTP requests are made through the following base URL:

:::(info)
 `/api/security/...`
:::

## pgutil Commands

All HTTP endpoints of the Security API are available as `pgutil` commands. 

To find the list of commands available in `pgutil`, simply run `pgutil security --help`. See [Getting started with pgutil](/docs/proget/api/pgutil) to learn more.

## Available HTTP Endpoints

The Security API is comprised of endpoints for Users, Groups, Tasks and Permissions:

### 🙍‍♂️ User Management { #user-endpoints }

For managing Users in ProGet.

* [Create User](/docs/proget/api/security/users/create) - Creates a new User account
* [Edit User](/docs/proget/api/security/users/edit) - Modifies an existing User account
* [Delete User](/docs/proget/api/security/users/delete) - Deletes a User account
* [Show User](/docs/proget/api/security/users/show) - Displays information about a User account*
* [List Users](/docs/proget/api/security/users/list) - Lists User accounts

*\* Only available as a pgutil command.*

### 🏢 Groups Management { #group-endpoints }

For managing user Groups and Group membership in ProGet.

* [Create Group](/docs/proget/api/security/groups/create) - Creates a new Group
* [Delete Group](/docs/proget/api/security/groups/delete) - Deletes a Group
* [List Groups](/docs/proget/api/security/groups/list) - Lists Groups
* [Add Group Member](/docs/proget/api/security/groups/add-member) - Adds a user to a Group*
* [Remove Group Member](/docs/proget/api/security/groups/remove-member) - Removes a user from a Group*
* [List Group Members](/docs/proget/api/security/groups/list-members) - Lists members of a Group*

*\* Only available as a pgutil command.*

### ⚒ Tasks Management { #tasks-endpoints }

For managing and editing Tasks in ProGet, as well as creating, editing and deleting custom Tasks. 

* [Create Task](/docs/proget/api/security/tasks/create) - Creates a ProGet security Task
* [Delete Task](/docs/proget/api/security/tasks/delete) - Deletes a security Task from ProGet
* [List Tasks](/docs/proget/api/security/tasks/list) - Lists security Tasks in ProGet
* [List Task Attributes](/docs/proget/api/security/tasks/list-attributes) - List available security Task attributes

### 🔑 Permissions Management { #permissions-endpoints }

For managing the Permissions of Users and Groups in ProGet. 

* [Add Permission](/docs/proget/api/security/permissions/add) - Adds a Permission
* [Remove Permission](/docs/proget/api/security/permissions/remove) - Removes a Permission
* [List Permissions](/docs/proget/api/security/permissions/list) - Lists configured Permissions

## Authenticating to Security API { #authentication }

The following is a summary of access types and their corresponding requirements for various API keys types and endpoints within this API.

| Access Type | Requirements |
| --- | --- |
| System API Keys | Required for all endpoints

To specify an API Key, use the request header (`X-ApiKey`), querystring (`key`), or `api:«api-key»` as the username. See [API Key Usage](/docs/proget/api/apikeys#using-api-keys) to learn more.

:::(Info) (🚀 Quick Example: Authenticating with curl)
For example, to authenticate with the API key `abc12345` to **List Users**, you could specify the API key as follows:
````
curl -X GET --header "X-ApiKey: abc12345" "https://proget.corp.local/api/security/users/list/"
````
:::