Saltar al contenido principal

API de Usuarios

Endpoints para gestionar usuarios, invitaciones y asignaciones de grupos.

Listar Usuarios

Devuelve todos los usuarios de la compañía.

GET/v1/users

Permiso Requerido: user:read

Parámetros de Consulta:

ParámetroTipoPor defectoDescripción
pageinteger1Número de página
per_pageinteger20Elementos por página (máx: 100)
includestring-Establecer como groups para datos expandidos de grupos

Ejemplo de Solicitud:

curl "https://api.console.solucao42.com.br/v1/users?include=groups" \
-H "Authorization: Bearer YOUR_TOKEN"

Respuesta: 200 OK

{
"total": 25,
"quantity": 20,
"records": [
{
"_id": "507f1f77bcf86cd799439011",
"email": "[email protected]",
"name": "John Doe",
"company_id": "507f1f77bcf86cd799439012",
"status": "active",
"group_ids": ["admin-group"],
"groups": [
{
"_id": "admin-group",
"name": "Administrators",
"slug": "administrators"
}
],
"created_at": "2024-01-15T10:30:00.000Z"
}
]
}

Obtener Usuario

Devuelve un único usuario por ID.

GET/v1/users/:id

Permiso Requerido: user:read

Ejemplo de Solicitud:

curl https://api.console.solucao42.com.br/v1/users/507f1f77bcf86cd799439011 \
-H "Authorization: Bearer YOUR_TOKEN"

Respuesta: 200 OK

{
"_id": "507f1f77bcf86cd799439011",
"email": "[email protected]",
"name": "John Doe",
"company_id": "507f1f77bcf86cd799439012",
"status": "active",
"teams": ["default-team"],
"group_ids": ["admin-group"],
"created_at": "2024-01-15T10:30:00.000Z"
}

Invitar Usuario

Invita a un nuevo usuario a la compañía. Recibirán un email para establecer su contraseña.

POST/v1/users/invite

Permiso Requerido: user:update

Cuerpo de Solicitud:

CampoTipoRequeridoDescripción
emailstringDirección de email del usuario
team_idsstring[]NoEquipos a asignar
group_idsstring[]NoGrupos a asignar

Ejemplo de Solicitud:

curl -X POST https://api.console.solucao42.com.br/v1/users/invite \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"group_ids": ["editors"]
}'

Respuesta: 201 Created

{
"_id": "507f1f77bcf86cd799439015",
"email": "[email protected]",
"company_id": "507f1f77bcf86cd799439012",
"status": "invited",
"teams": ["default-team"],
"group_ids": ["editors"],
"invitation_expires_at": "2024-03-08T10:30:00.000Z",
"created_at": "2024-03-01T10:30:00.000Z"
}

Errores:

EstadoCódigo de ErrorDescripción
400USER_EMAIL_DUPLICATEEl email ya existe
422VALIDATION_ERRORFormato de email inválido

Aceptar Invitación

Acepta una invitación y establece la contraseña del usuario. No requiere autenticación.

POST/v1/users/accept-invitation

Cuerpo de Solicitud:

CampoTipoRequeridoDescripción
tokenstringToken de invitación del email
passwordstringNueva contraseña (mín 12 caracteres)

Ejemplo de Solicitud:

curl -X POST https://api.console.solucao42.com.br/v1/users/accept-invitation \
-H "Content-Type: application/json" \
-d '{
"token": "invitation-token-from-email",
"password": "SecurePassword123!"
}'

Respuesta: 200 OK

{
"success": true,
"user": {
"_id": "507f1f77bcf86cd799439015",
"email": "[email protected]",
"status": "active"
}
}

Errores:

EstadoCódigo de ErrorDescripción
400INVALID_INVITATION_TOKENToken expirado o inválido
422VALIDATION_ERRORLa contraseña no cumple los requisitos

Solicitar Restablecimiento de Contraseña

Envía un email de restablecimiento de contraseña. No requiere autenticación.

POST/v1/users/reset-password/request

Cuerpo de Solicitud:

CampoTipoRequeridoDescripción
emailstringDirección de email del usuario

Ejemplo de Solicitud:

curl -X POST https://api.console.solucao42.com.br/v1/users/reset-password/request \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]"
}'

Respuesta: 200 OK

{
"success": true,
"message": "If the email exists, a reset link has been sent"
}
Nota de Seguridad

La respuesta es siempre la misma independientemente de si el email existe. Esto previene ataques de enumeración de emails.


Activar Usuario

Activa un usuario desactivado.

POST/v1/users/:id/activate

Permiso Requerido: user:update

Ejemplo de Solicitud:

curl -X POST https://api.console.solucao42.com.br/v1/users/USER_ID/activate \
-H "Authorization: Bearer YOUR_TOKEN"

Respuesta: 200 OK

{
"_id": "507f1f77bcf86cd799439011",
"email": "[email protected]",
"status": "active"
}

Desactivar Usuario

Desactiva un usuario. No podrá iniciar sesión.

POST/v1/users/:id/deactivate

Permiso Requerido: user:update

Ejemplo de Solicitud:

curl -X POST https://api.console.solucao42.com.br/v1/users/USER_ID/deactivate \
-H "Authorization: Bearer YOUR_TOKEN"

Respuesta: 200 OK

{
"_id": "507f1f77bcf86cd799439011",
"email": "[email protected]",
"status": "inactive"
}

Errores:

EstadoCódigo de ErrorDescripción
400CANNOT_DEACTIVATE_SELFNo puedes desactivarte a ti mismo

Agregar Grupos a Usuario

Agrega grupos a un usuario (se añaden a los existentes).

POST/v1/users/:id/groups

Permiso Requerido: user:update

Cuerpo de Solicitud:

CampoTipoRequeridoDescripción
group_idsstring[]IDs de grupos a agregar (mín 1)

Ejemplo de Solicitud:

curl -X POST https://api.console.solucao42.com.br/v1/users/USER_ID/groups \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"group_ids": ["editors", "viewers"]
}'

Respuesta: 200 OK

Devuelve el objeto de usuario actualizado.


Reemplazar Grupos de Usuario

Reemplaza todos los grupos de un usuario.

PUT/v1/users/:id/groups

Permiso Requerido: user:update

Cuerpo de Solicitud:

CampoTipoRequeridoDescripción
group_idsstring[]Nuevos IDs de grupos (reemplaza todos)

Ejemplo de Solicitud:

curl -X PUT https://api.console.solucao42.com.br/v1/users/USER_ID/groups \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"group_ids": ["managers"]
}'

Eliminar Grupos de Usuario

Elimina grupos específicos de un usuario.

DELETE/v1/users/:id/groups

Permiso Requerido: user:update

Cuerpo de Solicitud:

CampoTipoRequeridoDescripción
group_idsstring[]IDs de grupos a eliminar

Ejemplo de Solicitud:

curl -X DELETE https://api.console.solucao42.com.br/v1/users/USER_ID/groups \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"group_ids": ["viewers"]
}'

Objeto Usuario

CampoTipoDescripción
_idstringIdentificador único
emailstringDirección de email (único por compañía)
namestringNombre para mostrar
company_idstringID de compañía padre
statusstringinvited, active, o inactive
group_idsstring[]IDs de grupos asignados al usuario
groupsobject[]Objetos de grupo expandidos (cuando include=groups)
created_atstringTimestamp de creación ISO 8601

Estado de Usuario

EstadoDescripción
invitedEl usuario recibió invitación, no la ha aceptado
activeEl usuario está activo y puede iniciar sesión
inactiveEl usuario está desactivado, no puede iniciar sesión

Ejemplos de Código

const API_URL = 'https://api.console.solucao42.com.br';

// Listar usuarios con grupos
async function listUsers(token) {
const response = await fetch(`${API_URL}/v1/users?include=groups`, {
headers: { 'Authorization': `Bearer ${token}` },
});
return response.json();
}

// Invitar usuario
async function inviteUser(token, email, group_ids = []) {
const response = await fetch(`${API_URL}/v1/users/invite`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ email, group_ids }),
});
return response.json();
}

// Gestionar grupos de usuario
async function setUserGroups(token, userId, group_ids) {
const response = await fetch(`${API_URL}/v1/users/${userId}/groups`, {
method: 'PUT',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ group_ids }),
});
return response.json();
}

// Desactivar usuario
async function deactivateUser(token, userId) {
const response = await fetch(`${API_URL}/v1/users/${userId}/deactivate`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${token}` },
});
return response.json();
}