C
Cotizera Docs

Colaboradores

API de Colaboradores

Endpoints para gestionar los miembros de tu equipo. Los propietarios pueden invitar colaboradores por correo electrónico, activarlos o desactivarlos, y reenviar invitaciones.


Listar Colaboradores

GET /api/collaborators

Permiso: collaborators:manage (solo Owner)

Lista todos los colaboradores del tenant actual.

Parámetros de consulta:

Parameter Type Required Description
search string No Busca por nombre o correo electrónico (sin distinguir mayúsculas)

Respuesta 200 OK:

{
  "data": [
    {
      "id": "clxyz...",
      "email": "ana@empresa.mx",
      "name": "Ana Rodríguez",
      "isActive": true,
      "confirmedAt": "2026-03-15T10:00:00.000Z",
      "inviteExpiresAt": null,
      "createdAt": "2026-03-10T08:00:00.000Z"
    }
  ]
}

Un colaborador con confirmedAt: null fue invitado pero aún no ha aceptado la invitación.


Invitar Colaborador

POST /api/collaborators

Permiso: collaborators:manage | Se aplican los límites del plan (el plan FREE tiene un máximo de colaboradores)

Envía una invitación por correo electrónico a un nuevo colaborador. Crea un registro de usuario con rol COLLABORATOR y una contraseña temporal. El invitado debe aceptar la invitación para establecer su contraseña y activar su cuenta.

Cuerpo de la solicitud:

{
  "email": "nuevo@empresa.mx",
  "name": "Jorge Hernández"
}
Field Type Required Description
email string Yes Correo electrónico válido (no debe existir en el tenant ni globalmente)
name string Yes Nombre del colaborador (mínimo 2 caracteres)

Respuesta 201 Created:

{
  "id": "clxyz...",
  "email": "nuevo@empresa.mx",
  "name": "Jorge Hernández",
  "isActive": true,
  "confirmedAt": null,
  "inviteExpiresAt": "2026-04-03T10:00:00.000Z",
  "createdAt": "2026-03-31T10:00:00.000Z",
  "inviteUrl": "https://cotizera.com/invite/abc-123-def"
}

Errores:

Status Error When
403 "Límite de colaboradores alcanzado. Actualiza a Pro para invitar más." Se alcanzó el límite de colaboradores del plan FREE
409 "Ya existe un colaborador con ese correo en este negocio" El correo ya existe en el tenant
409 "Este correo ya está registrado en la plataforma" El correo ya existe a nivel global

Efectos secundarios:

  • Envía un correo de invitación a través de Resend
  • El token de invitación expira en 72 horas
  • Registra una entrada de auditoría con la acción invite

Activar / Desactivar Colaborador

PUT /api/collaborators/:id

Permiso: collaborators:manage

Cambia el estado activo de un colaborador.

Cuerpo de la solicitud:

{
  "isActive": false
}
Field Type Required Description
isActive boolean Yes true para activar, false para desactivar

Respuesta 200 OK: Devuelve el objeto del colaborador actualizado.

Errores:

Status Error When
404 "Colaborador no encontrado" El colaborador no se encontró en el tenant

Reenviar Invitación

PATCH /api/collaborators/:id

Permiso: collaborators:manage

Regenera el token de invitación (extiende la expiración 72 horas más) y reenvía el correo de invitación. Solo funciona para colaboradores que aún no han aceptado.

Cuerpo de la solicitud: No se requiere.

Respuesta 200 OK:

{
  "inviteUrl": "https://cotizera.com/invite/new-token-xyz"
}

Errores:

Status Error When
400 "Este colaborador ya aceptó la invitación" El colaborador ya confirmó
404 "Colaborador no encontrado" No se encontró en el tenant

Validar Token de Invitación

GET /api/collaborators/accept

No requiere autenticación — endpoint público.

Valida un token de invitación y devuelve la información del invitado. Lo usa la página de aceptación de invitaciones.

Parámetros de consulta:

Parameter Type Required Description
token string Yes El token de invitación de la URL

Respuesta 200 OK:

{
  "name": "Jorge Hernández",
  "email": "nuevo@empresa.mx",
  "companyName": "Acme Solutions S.A. de C.V."
}

Errores:

Status Error When
400 "Token requerido" Falta el parámetro token
400 "Esta invitación ya fue aceptada" Ya fue confirmada
404 "Invitación inválida o ya utilizada" No se encontró el token
410 "La invitación ha expirado" El token expiró (72 horas)

Aceptar Invitación

POST /api/collaborators/accept

No requiere autenticación — endpoint público.

Acepta una invitación proporcionando el token y estableciendo una contraseña.

Cuerpo de la solicitud:

{
  "token": "abc-123-def",
  "password": "MiContraseña123"
}
Field Type Required Description
token string Yes Token de invitación
password string Yes Nueva contraseña (mínimo 6 caracteres)

Respuesta 200 OK:

{
  "success": true
}

Errores:

Status Error When
400 "Esta invitación ya fue aceptada" Ya fue confirmada
404 "Invitación inválida o ya utilizada" No se encontró el token
410 "La invitación ha expirado. Solicita una nueva al administrador." Token expirado
© 2026 Cotizera. All rights reserved.