Authentication
Login
curl -X POST https://your-instance.com/api/accounts/auth/login/ \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
"password": "your_password"
}'
Authenticates a user and returns access tokens.
Logout
curl -X POST https://your-instance.com/api/accounts/auth/logout/ \
-H "Authorization: Bearer YOUR_TOKEN"
Logs out the current user and invalidates tokens.
Token Refresh
curl -X POST https://your-instance.com/api/accounts/token/refresh/ \
-H "Content-Type: application/json" \
-d '{
"refresh": "YOUR_REFRESH_TOKEN"
}'
Refreshes an expired access token using a valid refresh token.
Refresh token obtained from login
Obtain Token Pair
curl -X POST https://your-instance.com/api/accounts/token/ \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
"password": "your_password"
}'
Obtains a new JWT token pair for authentication.
Users
List Users
curl -X GET https://your-instance.com/api/accounts/users/ \
-H "Authorization: Bearer YOUR_TOKEN"
Returns all users in the system (admin only).
Whether user has staff privileges
Whether user account is active
Array of group IDs user belongs to
Account creation timestamp
Get User
curl -X GET https://your-instance.com/api/accounts/users/123/ \
-H "Authorization: Bearer YOUR_TOKEN"
Create User
curl -X POST https://your-instance.com/api/accounts/users/ \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"username": "newuser",
"email": "newuser@example.com",
"password": "secure_password",
"is_staff": false
}'
Username (must be unique)
Whether account is active
Array of group IDs to assign
Update User
curl -X PUT https://your-instance.com/api/accounts/users/123/ \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "updated@example.com",
"is_active": false
}'
Delete User
curl -X DELETE https://your-instance.com/api/accounts/users/123/ \
-H "Authorization: Bearer YOUR_TOKEN"
Groups
List Groups
curl -X GET https://your-instance.com/api/accounts/groups/ \
-H "Authorization: Bearer YOUR_TOKEN"
Returns all permission groups.
Get Group
curl -X GET https://your-instance.com/api/accounts/groups/5/ \
-H "Authorization: Bearer YOUR_TOKEN"
Create Group
curl -X POST https://your-instance.com/api/accounts/groups/ \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Moderators",
"permissions": [1, 2, 3]
}'
Array of permission IDs to assign
Update Group
curl -X PUT https://your-instance.com/api/accounts/groups/5/ \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Senior Moderators",
"permissions": [1, 2, 3, 4, 5]
}'
Delete Group
curl -X DELETE https://your-instance.com/api/accounts/groups/5/ \
-H "Authorization: Bearer YOUR_TOKEN"
API Keys
List API Keys
curl -X GET https://your-instance.com/api/accounts/api-keys/ \
-H "Authorization: Bearer YOUR_TOKEN"
Returns all API keys for the authenticated user.
API key value (only shown on creation)
Get API Key
curl -X GET https://your-instance.com/api/accounts/api-keys/123/ \
-H "Authorization: Bearer YOUR_TOKEN"
Create API Key
curl -X POST https://your-instance.com/api/accounts/api-keys/ \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "My Integration Key"
}'
Name/label for the API key
Generated API key (only shown once)
Update API Key
curl -X PUT https://your-instance.com/api/accounts/api-keys/123/ \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Integration Key",
"is_active": false
}'
Delete API Key
curl -X DELETE https://your-instance.com/api/accounts/api-keys/123/ \
-H "Authorization: Bearer YOUR_TOKEN"
Permanently deletes an API key. This action cannot be undone.
Permissions
List Permissions
curl -X GET https://your-instance.com/api/accounts/permissions/ \
-H "Authorization: Bearer YOUR_TOKEN"
Returns all available permissions in the system.
Superuser Initialization
Initialize Superuser
curl -X POST https://your-instance.com/api/accounts/initialize-superuser/ \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
"password": "secure_password",
"email": "admin@example.com"
}'
Initializes the first superuser account. This endpoint is only available when no users exist in the system.