Endpoints de Cuentas
El módulo de cuentas expone una API REST bajo el prefijo /accounts/api/
para la gestión de usuarios y claves SSH. Todos los endpoints requieren
autenticación. Las operaciones de listado, creación y eliminación de usuarios
están restringidas a administradores (superusuarios).
Usuarios — /accounts/api/users/
Gestión completa de usuarios del sistema. Los administradores pueden listar,
crear, actualizar y eliminar usuarios. Los usuarios regulares solo pueden
consultar y editar su propio perfil a través del endpoint /me/.
Método |
Endpoint |
Descripción |
|---|---|---|
|
|
Listar usuarios (solo admin) |
|
|
Crear nuevo usuario (solo admin) |
|
|
Detalle de un usuario |
|
|
Actualizar usuario completo |
|
|
Actualizar campos parciales |
|
|
Eliminar usuario (solo admin) |
|
|
Obtener perfil del usuario actual |
|
|
Actualizar perfil del usuario actual |
Permisos
Acción |
Permiso requerido |
|---|---|
|
Solo superusuarios |
|
Superusuarios o el propio usuario |
|
Cualquier usuario autenticado |
Ejemplo — Listar usuarios (admin):
curl -X GET https://panel.example.com/accounts/api/users/ \
-H "Authorization: Bearer $TOKEN"
Respuesta (lista):
{
"count": 15,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"username": "admin",
"email": "admin@example.com",
"first_name": "Admin",
"last_name": "NoxPanel",
"role": "admin",
"is_active": true,
"is_verified": true,
"is_superuser": true,
"can_access_vps": true,
"can_access_hosting": true,
"can_access_billing": true,
"can_access_ticketing": true,
"company": "NoxPanel Inc.",
"phone": "+34600000000",
"created_at": "2026-01-01T00:00:00Z"
}
]
}
Ejemplo — Obtener perfil propio:
curl -X GET https://panel.example.com/accounts/api/users/me/ \
-H "Authorization: Bearer $TOKEN"
Respuesta (perfil):
{
"id": 5,
"username": "cliente1",
"email": "cliente@example.com",
"first_name": "Juan",
"last_name": "Perez",
"company": "Mi Empresa S.L.",
"phone": "+34611222333",
"role": "client",
"is_verified": true,
"can_access_vps": true,
"can_access_hosting": true,
"can_access_billing": true,
"can_access_ticketing": true,
"created_at": "2026-01-15T10:00:00Z"
}
Note
Los campos username, role, is_verified, can_access_vps,
can_access_hosting, can_access_billing y can_access_ticketing
son de solo lectura en el endpoint /me/. Solo un administrador puede
modificar estos campos a través del endpoint /users/{id}/.
Ejemplo — Actualizar perfil propio:
curl -X PATCH https://panel.example.com/accounts/api/users/me/ \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"first_name": "Juan Carlos",
"phone": "+34699888777"
}'
Ejemplo — Detalle de usuario (admin):
curl -X GET https://panel.example.com/accounts/api/users/5/ \
-H "Authorization: Bearer $TOKEN"
Respuesta (detalle admin):
{
"id": 5,
"username": "cliente1",
"email": "cliente@example.com",
"first_name": "Juan",
"last_name": "Perez",
"role": "client",
"is_active": true,
"is_verified": true,
"is_superuser": false,
"is_staff": false,
"can_access_vps": true,
"can_access_hosting": true,
"can_access_billing": true,
"can_access_ticketing": true,
"company": "Mi Empresa S.L.",
"phone": "+34611222333",
"proxmox_username": "",
"can_manage_vms": false,
"vm_quota": 5,
"created_at": "2026-01-15T10:00:00Z",
"updated_at": "2026-02-01T14:30:00Z"
}
Claves SSH — /accounts/api/ssh-keys/
Gestión de claves SSH del usuario autenticado. Cada usuario solo ve y gestiona sus propias claves. Las claves se pueden utilizar para acceso a servidores y shells del hosting.
Método |
Endpoint |
Descripción |
|---|---|---|
|
|
Listar claves SSH del usuario |
|
|
Añadir nueva clave SSH |
|
|
Detalle de una clave |
|
|
Actualizar clave completa |
|
|
Actualizar campos parciales |
|
|
Eliminar clave SSH |
Ejemplo — Listar claves SSH:
curl -X GET https://panel.example.com/accounts/api/ssh-keys/ \
-H "Authorization: Bearer $TOKEN"
Respuesta:
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"name": "Portátil trabajo",
"public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG... usuario@portatil",
"fingerprint": "SHA256:xR3bN7kQ2mP...",
"key_type": "ssh-ed25519",
"is_active": true,
"last_used_at": "2026-02-08T15:30:00Z",
"created_at": "2026-01-20T09:00:00Z"
},
{
"id": 2,
"name": "Servidor CI/CD",
"public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAB... deploy@ci",
"fingerprint": "SHA256:aB4cD5eF6gH...",
"key_type": "ssh-rsa",
"is_active": true,
"last_used_at": null,
"created_at": "2026-02-01T12:00:00Z"
}
]
}
Ejemplo — Añadir clave SSH:
curl -X POST https://panel.example.com/accounts/api/ssh-keys/ \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Mi nueva clave",
"public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINew... user@host"
}'
Respuesta (201 Created):
{
"id": 3,
"name": "Mi nueva clave",
"public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINew... user@host",
"fingerprint": "SHA256:nEw7kEy8fIn...",
"key_type": "ssh-ed25519",
"is_active": true,
"last_used_at": null,
"created_at": "2026-02-09T10:00:00Z"
}
Note
Los campos fingerprint, key_type, last_used_at y created_at
son de solo lectura y se generan automáticamente a partir de la clave pública
proporcionada.
Ejemplo — Eliminar clave SSH:
curl -X DELETE https://panel.example.com/accounts/api/ssh-keys/3/ \
-H "Authorization: Bearer $TOKEN"
Devuelve 204 No Content si la eliminación es exitosa.