1. Página Principal
  2. Usuarios, Asignaciones y Archivado de la API

Usuarios, Asignaciones y Archivado de la API

Usuarios, Asignaciones y Archivado de la API

Centro de Documentación de la API

← Anterior | Siguiente →

Crea y consulta usuarios, administra las asignaciones de clientes, proyectos y códigos de cuenta, y resuelve los bloqueos que impiden archivar usuarios.

8. Usuarios

GET /users

Parámetro Ubicación Valor predeterminado Notas
UserList query "" ID numéricos separados por comas
Status query USER_STATUS_ALL USER_STATUS_ACTIVE (1), USER_STATUS_ARCHIVED (0) o USER_STATUS_ALL (0,1)
StartRow query 1 La numeración comienza en 1
MaxRows query 50 Tamaño de página

Las columnas devueltas incluyen: UserID, LastName, FirstName, FullName, EmailAddress, Access, AdminUserID, EmployeeNumber, Location, Division, Department, JobTitle, UserStatus.

El campo que indica el total de registros para la paginación se escribe totalrowsfround (nombre heredado).

curl -s "$API_BASE/users?Status=USER_STATUS_ACTIVE&StartRow=1&MaxRows=25" \
  -H "Authorization: Bearer $TOKEN" \
  -H "apikey: $API_KEY"

curl -s "$API_BASE/users?UserList=101,102,103&Status=USER_STATUS_ALL" \
  -H "Authorization: Bearer $TOKEN" \
  -H "apikey: $API_KEY"
{
  "errors": [],
  "data": {
    "users": [ { "UserID": 101, "FullName": "Jane Doe", "UserStatus": "1" } ],
    "totalrowsfround": 42,
    "startrow": "1",
    "maxrows": "25"
  }
}

POST /user

Crea un usuario en la empresa del solicitante.

Parámetro Obligatorio Notas
FirstName, LastName, EmailAddress Sí
PayType Sí HOURLY / PAY_TYPE_HOURLY o SALARY / PAY_TYPE_SALARY
AccessLevel Sí ADMIN, SUPER o EMP (también se aceptan los nombres de las constantes)
TimezoneID Sí Obtenido de /server/timezones
SupervisorID Para SUPER/EMP Usuario al que reporta
JobTitle, EmployeeType No
DSTEnabled, SendNotificationEmail No Valores booleanos, predeterminados en false
EnableHourlyTracking, EnableProjectTracking, EnableExpenseReports No Indicadores de funcionalidades de la aplicación para EMP
curl -s -X POST "$API_BASE/user" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -H "apikey: $API_KEY" \
  -d '{
    "FirstName": "Jane",
    "LastName": "Doe",
    "EmailAddress": "jane@example.com",
    "PayType": "HOURLY",
    "AccessLevel": "EMP",
    "TimezoneID": 15,
    "SupervisorID": 50,
    "SendNotificationEmail": true,
    "EnableHourlyTracking": true,
    "EnableProjectTracking": true
  }'

Una respuesta exitosa incluye UserID, FirstName, LastName, FullName (y normalmente NewUserAdded). Los errores de negocio establecen valores en errorCodes, como CreateUserInvalidPermission, CreateUserLicenseError y CreateUserValidationError.

9. Asignaciones de Usuarios (Clientes, Proyectos y Códigos de Cuenta)

Reglas compartidas para todos los endpoints de asignación:

  • Se requiere acceso de administrador al perfil del usuario seleccionado.

  • PUT / POST agregan ID sin eliminar las asignaciones existentes.

  • DELETE elimina únicamente los ID proporcionados.

  • Los ID de solo lectura o no válidos provocan que toda la solicitud falle (no se aplican cambios parciales).

  • Las solicitudes DELETE sobre colecciones reciben los ID en la cadena de consulta (sin cuerpo de solicitud).

Clientes

Método Ruta Cuerpo / Consulta
PUT /user/{UserID}/customer/{CustomerID} IsDefault opcional
DELETE /user/{UserID}/customer/{CustomerID} —
POST /user/{UserID}/customers CustomerID (CSV), DefaultCustomerID opcional
DELETE /user/{UserID}/customers?CustomerID=... CSV en la cadena de consulta
# Asignación individual y establecimiento como predeterminado
curl -s -X PUT "$API_BASE/user/101/customer/10" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -H "apikey: $API_KEY" \
  -d '{"IsDefault": true}'

# Asignación masiva
curl -s -X POST "$API_BASE/user/101/customers" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -H "apikey: $API_KEY" \
  -d '{"CustomerID":"10,11,12","DefaultCustomerID":10}'

# Desasignación masiva
curl -s -X DELETE "$API_BASE/user/101/customers?CustomerID=11,12" \
  -H "Authorization: Bearer $TOKEN" \
  -H "apikey: $API_KEY"

Al eliminar el cliente predeterminado del usuario, se restablece el cliente predeterminado de la empresa.

Proyectos

Se utiliza el mismo patrón con ProjectID / DefaultProjectID / IsDefault:

curl -s -X PUT "$API_BASE/user/101/project/200" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -H "apikey: $API_KEY" \
  -d '{"IsDefault": true}'

curl -s -X POST "$API_BASE/user/101/projects" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -H "apikey: $API_KEY" \
  -d '{"ProjectID":"200,201,202","DefaultProjectID":200}'

curl -s -X DELETE "$API_BASE/user/101/projects?ProjectID=201,202" \
  -H "Authorization: Bearer $TOKEN" \
  -H "apikey: $API_KEY"
{
  "errors": [],
  "data": {
    "UserID": 101,
    "ItemIDList": "200,201,202",
    "DefaultItemID": "200"
  }
}

Códigos de Cuenta

Los valores predeterminados son independientes para el seguimiento de horas trabajadas, proyectos y gastos. Los ID predeterminados deben estar incluidos en la lista de asignación y estar habilitados para el tipo de seguimiento correspondiente.

Método Ruta Parámetros relevantes
PUT /user/{UserID}/accountcode/{AccountCodeID} IsDefaultHourly, IsDefaultProject, IsDefaultExpense
DELETE /user/{UserID}/accountcode/{AccountCodeID} —
POST /user/{UserID}/accountcodes AccountCodeID, DefaultHourlyAccountCodeID, DefaultProjectAccountCodeID, DefaultExpenseAccountCodeID
DELETE /user/{UserID}/accountcodes?AccountCodeID=... CSV en la cadena de consulta
curl -s -X PUT "$API_BASE/user/101/accountcode/30" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -H "apikey: $API_KEY" \
  -d '{"IsDefaultHourly": true, "IsDefaultExpense": true}'

curl -s -X POST "$API_BASE/user/101/accountcodes" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -H "apikey: $API_KEY" \
  -d '{
    "AccountCodeID": "30,31,32",
    "DefaultHourlyAccountCodeID": 30,
    "DefaultProjectAccountCodeID": 31,
    "DefaultExpenseAccountCodeID": 32
  }'

curl -s -X DELETE "$API_BASE/user/101/accountcodes?AccountCodeID=31,32" \
  -H "Authorization: Bearer $TOKEN" \
  -H "apikey: $API_KEY"

10. Archivar Usuarios

PATCH /user/{UserID}/archive

Archiva al usuario. El parámetro opcional DateOfTermination utiliza la fecha y hora UTC actuales de forma predeterminada cuando se omite.

curl -s -X PATCH "$API_BASE/user/101/archive" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -H "apikey: $API_KEY" \
  -d '{"DateOfTermination": "2026-08-05"}'
errorCodes Significado
ArchiveUserInvalidPermission Falta de permisos o acceso al perfil
ArchiveUserInvalidUserID El usuario no pertenece a la empresa
ArchiveUserPrimaryContactError No se puede archivar al contacto principal
ArchiveUserSelfError No puedes archivarte a ti mismo
ArchiveUserOnclockError El usuario tiene un turno de trabajo activo
ArchiveUserOpenTimerError Temporizadores abiertos
ArchiveUserUnpaidHours Horas trabajadas o tiempo de proyecto sin pagar
ArchiveUserOpenExpenses Gastos pendientes

PATCH /user/{UserID}/archive/resolve

Resuelve únicamente los bloqueos que pueden solucionarse; no archiva al usuario. Todas las políticas tienen SKIP como valor predeterminado (un cuerpo de solicitud vacío no realiza ninguna acción).

Parámetro Valores Valor predeterminado
OnClockAction SKIP, FORCE_CLOCK_OUT SKIP
OpenTimerAction SKIP, STOP_ALL SKIP
PendingAlertAction SKIP, ALLOW, DENY, ALLOW_AND_APPROVE SKIP
UnpaidHourlyAction SKIP, ARCHIVE, CLOSE, DELETE SKIP
UnpaidProjectAction SKIP, ARCHIVE, DELETE SKIP
OpenExpenseAction SKIP, RECONCILE, DELETE SKIP

Orden de resolución: reloj → temporizadores → alertas pendientes → horas trabajadas sin pagar → tiempo de proyecto sin pagar → gastos.

Las acciones destructivas requieren los permisos correspondientes de nómina, facturación o gastos. Los bloqueos que impiden continuar (falta de permisos, contacto principal o intento de archivarse a sí mismo) no se resuelven automáticamente.

curl -s -X PATCH "$API_BASE/user/101/archive/resolve" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -H "apikey: $API_KEY" \
  -d '{
    "OnClockAction": "FORCE_CLOCK_OUT",
    "OpenTimerAction": "STOP_ALL",
    "PendingAlertAction": "ALLOW_AND_APPROVE",
    "UnpaidHourlyAction": "ARCHIVE",
    "UnpaidProjectAction": "ARCHIVE",
    "OpenExpenseAction": "RECONCILE"
  }'

Consulta data.actions para revisar los resultados de cada bloqueo y luego llama a /archive.

Centro de Documentación de la API

← Anterior | Siguiente →

Updated on septiembre 21, 2026
Was this article helpful?