Autenticación
Este endpoint requiere autenticación mediante token Bearer y el permiso clientes.create.
Parámetros del Body
Número de documento (RUC/DNI). Debe ser único por empresa. Máximo 15 caracteres.
Tipo de documento: ‘1’ (DNI), ‘6’ (RUC), ‘4’ (otros). Si no se proporciona, se detecta automáticamente según la longitud del documento.
Nombre o razón social del cliente. Máximo 245 caracteres.
Dirección principal. Máximo 245 caracteres.
Dirección secundaria o referencia. Máximo 220 caracteres.
Número de teléfono principal. Máximo 200 caracteres.
Número de teléfono secundario. Máximo 200 caracteres.
Correo electrónico válido. Máximo 200 caracteres.
Imagen del cliente. Formatos aceptados: jpeg, png, jpg, gif. Tamaño máximo: 2MB.
ID de la empresa a la que pertenece el cliente. Debe existir en la tabla empresas.
Código de ubigeo de 6 dígitos.
Nombre del departamento. Máximo 100 caracteres.
Nombre de la provincia. Máximo 100 caracteres.
Nombre del distrito. Máximo 100 caracteres.
Para subir una foto, utilice multipart/form-data:
curl -X POST \
https://tudominio.com/api/clientes \
-H 'Authorization: Bearer TU_TOKEN' \
-F 'documento=20612706702' \
-F 'datos=CORPORACION XYZ S.A.C.' \
-F 'direccion=Av. Los Pinos 123' \
-F 'telefono=01-4567890' \
-F '[email protected] ' \
-F 'foto=@/ruta/a/imagen.jpg' \
-F 'id_empresa=1' \
-F 'ubigeo=150101' \
-F 'departamento=Lima' \
-F 'provincia=Lima' \
-F 'distrito=Lima'
Respuesta
Indica si la operación fue exitosa
Mensaje de confirmación: “Cliente creado exitosamente”
Datos del cliente creado con la relación de empresa cargada ID único del cliente recién creado
Número de documento registrado
Tipo de documento detectado o especificado
URL de la foto subida (formato: /storage/clientes/cliente_timestamp.ext)
Información de la empresa asociada
Ejemplo de Respuesta Exitosa
{
"success" : true ,
"message" : "Cliente creado exitosamente" ,
"data" : {
"id_cliente" : 45 ,
"documento" : "20612706702" ,
"tipo_doc" : "6" ,
"datos" : "CORPORACION XYZ S.A.C." ,
"direccion" : "Av. Los Pinos 123" ,
"direccion2" : "Urb. Los Jardines" ,
"telefono" : "01-4567890" ,
"telefono2" : null ,
"email" : "[email protected] " ,
"foto_url" : "/storage/clientes/cliente_1709645834.jpg" ,
"id_empresa" : 1 ,
"ubigeo" : "150101" ,
"departamento" : "Lima" ,
"provincia" : "Lima" ,
"distrito" : "Lima" ,
"created_at" : "2024-03-05T16:30:34.000000Z" ,
"updated_at" : "2024-03-05T16:30:34.000000Z" ,
"empresa" : {
"id_empresa" : 1 ,
"comercial" : "Santo Domingo" ,
"ruc" : "20612706702"
}
}
}
Errores de Validación
Error de validación {
"success" : false ,
"message" : "Error de validación" ,
"errors" : {
"documento" : [
"Este documento ya está registrado para esta empresa"
],
"email" : [
"El email no es válido"
],
"foto" : [
"La imagen no debe exceder 2MB"
]
}
}
Detección Automática de Tipo de Documento
Si no se proporciona tipo_doc, el sistema lo detecta automáticamente:
11 dígitos → tipo_doc = ‘6’ (RUC)
8 dígitos → tipo_doc = ‘1’ (DNI)
Otros → tipo_doc = ‘4’ (Documento extranjero u otros)
Almacenamiento de Imágenes
Las fotos se almacenan en storage/app/public/clientes/ con el formato:
cliente_{timestamp}.{extension}
Ejemplo: cliente_1709645834.jpg
La URL retornada en foto_url es accesible públicamente mediante el enlace simbólico de Laravel Storage.
Códigos de Error
Error de validación (ver ejemplo arriba)
Error interno del servidor {
"success" : false ,
"message" : "Error al crear cliente" ,
"error" : "Mensaje de error específico"
}