Saltearse al contenido

Companies

Tag: companies
Descripción: Operaciones para gestión de empresas en el sistema


  • Descripción: Registra una nueva empresa en el sistema
  • Operation ID: CompaniesController_create
  • Autenticación requerida: 🔒 Sí (ROLE_ADMIN)
{
"name": "Tech Solutions Inc.",
"legalName": "Tech Solutions Incorporated",
"taxId": "TECH123456789",
"address": "123 Business Ave, New York",
"phone": "+1 555 123 4567",
"email": "contact@techsolutions.com",
"website": "https://techsolutions.com",
"isActive": true
}
CódigoDescripción
201Empresa creada exitosamente
400Datos de entrada inválidos
401No autorizado
409Empresa ya existe

2. Listar todas las empresas (GET /companies)

Sección titulada «2. Listar todas las empresas (GET /companies)»
  • Descripción: Obtiene todas las empresas registradas con paginación
  • Operation ID: CompaniesController_findAll
  • Autenticación requerida: 🔒 Sí (ROLE_ADMIN o ROLE_COMPANY_VIEWER)
ParámetroTipoRequeridoDescripción
pageinteger❌ NoNúmero de página (default: 1)
limitinteger❌ NoLímite por página (default: 20)
activeOnlyboolean❌ NoFiltrar solo empresas activas
searchstring❌ NoBuscar por nombre o taxId
CódigoDescripción
200Lista de empresas obtenida
401No autorizado

3. Obtener empresa por ID (GET /companies/:id)

Sección titulada «3. Obtener empresa por ID (GET /companies/:id)»
  • Descripción: Obtiene los detalles completos de una empresa específica
  • Operation ID: CompaniesController_findOne
  • Autenticación requerida: 🔒 Sí (ROLE_ADMIN o ROLE_COMPANY_VIEWER)
ParámetroTipoDescripción
idintegerID de la empresa
CódigoDescripción
200Empresa obtenida exitosamente
401No autorizado
404Empresa no encontrada

4. Actualizar empresa (PATCH /companies/:id)

Sección titulada «4. Actualizar empresa (PATCH /companies/:id)»
  • Descripción: Actualiza los datos de una empresa existente
  • Operation ID: CompaniesController_update
  • Autenticación requerida: 🔒 Sí (ROLE_ADMIN)
ParámetroTipoDescripción
idintegerID de la empresa
{
"phone": "+1 555 987 6543",
"email": "info@techsolutions.com",
"isActive": false
}
CódigoDescripción
200Empresa actualizada exitosamente
400Datos de entrada inválidos
401No autorizado
404Empresa no encontrada

  • Descripción: Desactiva una empresa (soft delete)
  • Operation ID: CompaniesController_remove
  • Autenticación requerida: 🔒 Sí (ROLE_ADMIN)
ParámetroTipoDescripción
idintegerID de la empresa
CódigoDescripción
204Empresa desactivada exitosamente
401No autorizado
404Empresa no encontrada
409Empresa no puede ser desactivada (tiene sucursales activas)

6. Obtener sucursales de empresa (GET /companies/:id/branches)

Sección titulada «6. Obtener sucursales de empresa (GET /companies/:id/branches)»
  • Descripción: Lista todas las sucursales asociadas a una empresa
  • Operation ID: CompaniesController_findCompanyBranches
  • Autenticación requerida: 🔒 Sí (ROLE_ADMIN o ROLE_COMPANY_VIEWER)
ParámetroTipoDescripción
idintegerID de la empresa
CódigoDescripción
200Sucursales obtenidas exitosamente
401No autorizado
404Empresa no encontrada

MétodoEndpointDescripciónPermiso Requerido
POST/companiesCrear nueva empresaROLE_ADMIN
GET/companiesListar todas las empresasROLE_ADMIN/COMPANY_VIEWER
GET/companies/:idObtener empresa por IDROLE_ADMIN/COMPANY_VIEWER
PATCH/companies/:idActualizar empresaROLE_ADMIN
DELETE/companies/:idDesactivar empresaROLE_ADMIN
GET/companies/:id/branchesObtener sucursales de la empresaROLE_ADMIN/COMPANY_VIEWER
interface Company {
id: number;
name: string;
legalName: string;
taxId: string;
address: string;
phone: string;
email: string;
website: string;
isActive: boolean;
createdAt: string; // ISO 8601
updatedAt: string; // ISO 8601
deletedAt: string | null; // ISO 8601
branches?: Branch[]; // Relación opcional
}
{
"id": 1,
"name": "Tech Solutions Inc.",
"legalName": "Tech Solutions Incorporated",
"taxId": "TECH123456789",
"address": "123 Business Ave, New York",
"phone": "+1 555 123 4567",
"email": "contact@techsolutions.com",
"website": "https://techsolutions.com",
"isActive": true,
"createdAt": "2023-01-15T10:30:00.000Z",
"updatedAt": "2023-05-20T14:15:00.000Z",
"deletedAt": null,
"branches": [
{
"id": 1,
"name": "Sucursal Central",
"code": "TC-NY-001"
}
]
}
  1. Datos requeridos:

    • Nombre, nombre legal y taxId son obligatorios
    • TaxId debe ser único en el sistema
  2. Formatos:

    • Email debe ser válido
    • Website debe ser URL válida (opcional)
    • Teléfono debe seguir formato internacional
  3. Restricciones:

    • No se puede eliminar una empresa con sucursales activas
    • Solo admins pueden modificar/eliminar empresas
    • El taxId no puede modificarse después de creación
  1. Protección de datos:

    • Los datos fiscales son sensibles y deben protegerse
    • Considerar enmascarar taxId en respuestas para ciertos roles
  2. Integridad referencial:

    • Las empresas no se eliminan físicamente (soft delete)
    • Validar relaciones antes de desactivar
  3. Auditoría:

    • Registrar quién crea/modifica/desactiva empresas
    • Mantener historial de cambios importantes