Endpoints / Empresas

POST

Crear empresa

Registra una nueva empresa hija en el sistema, asociada a la empresa padre del usuario autenticado.

POST/companies

Caso de Uso

Se usa cuando un administrador de una empresa padre necesita crear una nueva empresa hija. Al usarlo, el usuario obtiene los datos completos de la empresa creada, incluyendo su identificador único y la URL pública del logo.

Autenticación

Requiere token JWT en el header `Authorization: Bearer <token>`. Solo permite acceso a usuarios con rol administrador. La empresa del usuario autenticado debe estar activa y ser empresa padre.

Parámetros de ruta

Este endpoint no recibe parámetros de ruta.

Body

emrucstringobligatorio

RUC de la empresa; debe tener exactamente 13 dígitos.

emrznsocialstringobligatorio

Razón social de la empresa.

emcorreostringobligatorio

Correo electrónico de la empresa; debe tener formato válido.

emcodigostringobligatorio

Código alfanumérico de exactamente 4 caracteres; se normaliza a mayúsculas.

imagenfile opcional

Logo de la empresa; solo se aceptan .png o .jpg de hasta 5 MB. Si no se envía, se asigna un logo por defecto.

Reglas de negocio

1

Solo un usuario con rol administrador puede registrar empresas.

2

La empresa del usuario autenticado debe ser empresa padre.

3

La empresa del usuario autenticado debe estar activa.

4

El usuario autenticado debe estar activo.

5

Todos los campos del body, excepto imagen, son obligatorios.

6

emruc debe tener exactamente 13 dígitos.

7

emcorreo debe tener formato de correo válido.

8

emcodigo debe tener exactamente 4 caracteres alfanuméricos, se normaliza a mayúsculas en el backend.

9

emruc no puede repetirse en otra empresa.

10

emcorreo no puede repetirse en otra empresa.

11

emcodigo no puede repetirse en otra empresa.

12

Si se envía imagen, solo se aceptan archivos .png y .jpg.

13

Si se envía imagen, el tamaño máximo permitido es 5 MB.

14

Si no se envía imagen, se asigna un logo por defecto.

15

La empresa se crea con estado activo.

16

Cuando se envía imagen, el Content-Type debe ser multipart/form-data. Si no, puede usarse application/json.

Errores esperados

401No autorizado

No se envió un token JWT válido o el token no contiene información válida del usuario.

500El RUC debe ser válido

emruc no tiene exactamente 13 dígitos.

500El texto es requerido

emruc fue enviado vacío.

500La razon social de empresa es requerida

emrznsocial fue enviado vacío.

500El correo de empresa es requerido

emcorreo fue enviado vacío.

500El correo de empresa debe ser válido

emcorreo no tiene formato de correo válido.

500El código de empresa es requerido

emcodigo fue enviado vacío.

500El código de empresa debe tener exactamente 4 caracteres alfanuméricos

emcodigo no cumple el formato de 4 caracteres alfanuméricos.

500El tamaño de la imagen excede el límite permitido

La imagen enviada supera los 5 MB.

500Solo se permiten imágenes PNG y JPG

La imagen enviada no tiene extensión .png o .jpg.

500Error al guardar la imagen

Ocurrió un error interno al guardar la imagen en el servidor.

500El código de empresa no es inválido

La empresa asociada al usuario autenticado no fue encontrada.

500La empresa no está activa

La empresa asociada al usuario autenticado está inactiva.

500La empresa no es empresa padre

La empresa del usuario autenticado no es empresa padre y no puede crear empresas hijas.

500El usuario no existe

El usuario autenticado no fue encontrado dentro de su empresa.

500El usuario no pertenece a la empresa

El usuario autenticado no pertenece a la empresa indicada por su sesión.

500El usuario no es administrador

El usuario autenticado no tiene el rol requerido para crear empresas.

500El usuario no está activo

El usuario autenticado está inactivo y no puede usar el sistema.

500Ya existe una empresa con ese RUC

Ya hay una empresa registrada con el mismo emruc.

500Ya existe una empresa con ese correo

Ya hay una empresa registrada con el mismo emcorreo.

500Ya existe una empresa con ese código

Ya hay una empresa registrada con el mismo emcodigo.

500La empresa no fue creada

La empresa fue guardada, pero no pudo consultarse para devolver la respuesta.

500Error saving company

Ocurrió un error interno al guardar la empresa.

Notas de uso

1

Este endpoint no recibe parámetros de ruta ni query params.

2

Si no se envía imagen, usa Content-Type: application/json.

3

Si se envía imagen, usa Content-Type: multipart/form-data con el archivo en el campo imagen.

4

Envía emruc como texto para conservar ceros iniciales.

5

emcodigo se convierte automáticamente a mayúsculas en el backend.

6

El backend devuelve emlogo como URL pública completa, no como ruta relativa.