Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ansible/awx/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Users are individual accounts in AWX. They can be members of organizations and teams, and can be granted various roles and permissions.

Endpoints

MethodEndpointDescription
GET/api/v2/users/List users
POST/api/v2/users/Create user
GET/api/v2/users/{id}/Retrieve user
PATCH/api/v2/users/{id}/Update user
DELETE/api/v2/users/{id}/Delete user
GET/api/v2/me/Get current user

List Users

curl -X GET \
  https://awx.example.com/api/v2/users/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Create User

curl -X POST \
  https://awx.example.com/api/v2/users/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "jdoe",
    "first_name": "John",
    "last_name": "Doe",
    "email": "jdoe@example.com",
    "password": "SecurePassword123!",
    "is_superuser": false,
    "is_system_auditor": false
  }'
username
string
required
Unique username for the user
password
string
required
User password (required for new users)
first_name
string
User’s first name
last_name
string
User’s last name
email
string
User’s email address
is_superuser
boolean
default:"false"
Grant superuser privileges
is_system_auditor
boolean
default:"false"
Grant system auditor role (read-only access to everything)

Password Requirements

Passwords are validated based on AWX settings:
  • LOCAL_PASSWORD_MIN_LENGTH - Minimum password length
  • LOCAL_PASSWORD_MIN_DIGITS - Minimum number of digits
  • LOCAL_PASSWORD_MIN_UPPER - Minimum uppercase characters
  • LOCAL_PASSWORD_MIN_SPECIAL - Minimum special characters
Additional Django password validators may apply.

Retrieve User

curl -X GET \
  https://awx.example.com/api/v2/users/5/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Response Schema

id
integer
User ID
username
string
Username
first_name
string
First name
last_name
string
Last name
email
string
Email address
is_superuser
boolean
Whether user has superuser privileges
is_system_auditor
boolean
Whether user has system auditor role
password
string
Always returns "encryptedencrypted" for security
last_login
string
Last login timestamp (read-only)
created
string
Account creation timestamp
modified
string
Last modification timestamp
Links to related resources:
  • teams - Teams the user belongs to
  • organizations - Organizations the user is a member of
  • admin_of_organizations - Organizations where user is admin
  • projects - Projects user has access to
  • credentials - User’s credentials
  • roles - Roles assigned to the user
  • activity_stream - User’s activity log
  • access_list - Access list

Update User

curl -X PATCH \
  https://awx.example.com/api/v2/users/5/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "newemail@example.com",
    "first_name": "Jane"
  }'

Change Password

curl -X PATCH \
  https://awx.example.com/api/v2/users/5/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "password": "NewSecurePassword456!"
  }'
Users can change their own password. Superusers can change any user’s password.

Delete User

curl -X DELETE \
  https://awx.example.com/api/v2/users/5/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Current User

Get information about the authenticated user:
curl -X GET \
  https://awx.example.com/api/v2/me/ \
  -H "Authorization: Bearer YOUR_TOKEN"

User Teams

curl -X GET \
  https://awx.example.com/api/v2/users/5/teams/ \
  -H "Authorization: Bearer YOUR_TOKEN"

User Organizations

curl -X GET \
  https://awx.example.com/api/v2/users/5/organizations/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Admin of Organizations

curl -X GET \
  https://awx.example.com/api/v2/users/5/admin_of_organizations/ \
  -H "Authorization: Bearer YOUR_TOKEN"

User Projects

curl -X GET \
  https://awx.example.com/api/v2/users/5/projects/ \
  -H "Authorization: Bearer YOUR_TOKEN"

User Credentials

curl -X GET \
  https://awx.example.com/api/v2/users/5/credentials/ \
  -H "Authorization: Bearer YOUR_TOKEN"

User Roles

curl -X GET \
  https://awx.example.com/api/v2/users/5/roles/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Activity Stream

curl -X GET \
  https://awx.example.com/api/v2/users/5/activity_stream/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Access List

curl -X GET \
  https://awx.example.com/api/v2/users/5/access_list/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Personal Access Tokens

Create Personal Token

curl -X POST \
  https://awx.example.com/api/v2/users/5/personal_tokens/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "description": "API access token",
    "scope": "write"
  }'
description
string
required
Token description
scope
string
default:"write"
Token scope: read or write
application
integer
OAuth application ID (null for personal tokens)

List Personal Tokens

curl -X GET \
  https://awx.example.com/api/v2/users/5/personal_tokens/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Revoke Personal Token

curl -X DELETE \
  https://awx.example.com/api/v2/users/5/personal_tokens/123/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Filtering

# By username
?username=admin

# By email
?email__icontains=example.com

# Superusers only
?is_superuser=true

# System auditors
?is_system_auditor=true

# Search
?search=john

Ordering

# By username
?order_by=username

# By last login
?order_by=-last_login

# By creation date
?order_by=-created

User Types

Normal Users

Standard users with permissions based on assigned roles.

Superusers

Users with is_superuser=true have full access to all resources and can:
  • Create/modify/delete any resource
  • Grant any permission
  • Access admin interface

System Auditors

Users with is_system_auditor=true have read-only access to all resources.

Complete Example

import requests
import json

base_url = "https://awx.example.com/api/v2"
token = "YOUR_TOKEN"
headers = {
    "Authorization": f"Bearer {token}",
    "Content-Type": "application/json"
}

# Create user
user_data = {
    "username": "automation_user",
    "first_name": "Automation",
    "last_name": "User",
    "email": "automation@example.com",
    "password": "SecurePassword123!",
    "is_superuser": False
}

response = requests.post(
    f"{base_url}/users/",
    headers=headers,
    data=json.dumps(user_data)
)

if response.status_code == 201:
    user = response.json()
    user_id = user['id']
    print(f"Created user {user_id}")
    
    # Create access token for user
    token_data = {
        "description": "API Access",
        "scope": "write"
    }
    
    token_response = requests.post(
        f"{base_url}/users/{user_id}/personal_tokens/",
        headers=headers,
        data=json.dumps(token_data)
    )
    
    if token_response.status_code == 201:
        token_info = token_response.json()
        print(f"Token: {token_info['token']}")
else:
    print(f"Error: {response.status_code}")
    print(response.json())