User Management¶
Examples for managing users, tokens, and authentication.
List All Users¶
users = client.users.list()
for user in users:
print(f"{user['name']:20s} {user['email']:30s} {user['role']}")
# Filter service users
service_users = [u for u in users if u.get('is_service_user')]
print(f"\nService users: {len(service_users)}")
Get Current User¶
me = client.users.get_current()
print(f"Name: {me['name']}")
print(f"Email: {me['email']}")
print(f"Role: {me['role']}")
print(f"Status: {me['status']}")
Create Users¶
from netbird.models import UserCreate
# Create a regular user
user = client.users.create(UserCreate(
email="alice@company.com",
name="Alice Smith",
role="user",
auto_groups=["default-group"]
))
print(f"Created: {user['name']} ({user['id']})")
# Create an admin user
admin = client.users.create(UserCreate(
email="admin@company.com",
name="Admin User",
role="admin",
))
# Create a service user for automation
bot = client.users.create(UserCreate(
email="bot@company.com",
name="CI/CD Bot",
is_service_user=True,
role="admin",
))
Update User Role¶
from netbird.models import UserUpdate
updated = client.users.update("user-id", UserUpdate(
role="admin"
))
print(f"Updated {updated['name']} role to {updated['role']}")
Approve or Reject Users¶
# List all users and find pending ones
users = client.users.list()
pending = [u for u in users if u.get('status') == 'invited']
for user in pending:
print(f"Pending: {user['name']} ({user['email']})")
# Approve the user
client.users.approve(user['id'])
print(f" Approved!")
# Or reject a user
# client.users.reject("user-id")
User Invites¶
from netbird.models import UserInviteCreate
# List pending invites
invites = client.users.list_invites()
for invite in invites:
print(f"Invite: {invite['id']} - {invite.get('email', 'N/A')}")
# Create a new invite
invite = client.users.create_invite(UserInviteCreate(
email="newuser@company.com",
name="New User",
role="user",
))
print(f"Invite created: {invite['id']}")
# Regenerate invite link
new_invite = client.users.regenerate_invite("invite-id")
# Delete an invite
client.users.delete_invite("invite-id")
Token Management¶
from netbird.models import TokenCreate
# List tokens for a user
tokens = client.tokens.list(user_id="user-id")
for token in tokens:
print(f"{token['name']}: expires {token['expiration_date']}")
# Create a new token
new_token = client.tokens.create(
user_id="user-id",
data=TokenCreate(name="api-access", expires_in=30) # 30 days
)
print(f"Token: {new_token['plain_token']}")
# Save this token - it won't be shown again!
# Delete a token
client.tokens.delete(user_id="user-id", token_id="token-id")
Bulk User Operations¶
from netbird.models import UserCreate
# Bulk create users from a list
team_members = [
("Alice", "alice@company.com"),
("Bob", "bob@company.com"),
("Charlie", "charlie@company.com"),
]
created_users = []
for name, email in team_members:
user = client.users.create(UserCreate(
email=email,
name=name,
role="user",
auto_groups=["engineering"]
))
created_users.append(user)
print(f"Created: {user['name']}")
print(f"\nCreated {len(created_users)} users")
Block/Unblock Users¶
from netbird.models import UserUpdate
# Block a user
client.users.update("user-id", UserUpdate(is_blocked=True))
print("User blocked")
# Unblock a user
client.users.update("user-id", UserUpdate(is_blocked=False))
print("User unblocked")
Delete Users¶
# Delete a specific user
client.users.delete("user-id")
print("User deleted")
# Delete all service users (be careful!)
users = client.users.list()
for user in users:
if user.get('is_service_user') and user['name'] == 'old-bot':
client.users.delete(user['id'])
print(f"Deleted service user: {user['name']}")