Skip to content

Clientes

Clientes

Prefijo: /api/clientes
Requiere Auth:
Permiso requerido: clientes, *

Módulo de clientes para gestionar el directorio de clientes del POS. Incluye búsqueda por documento y nombre.

Nota: Los clientes utilizan soft delete — al eliminar un cliente se marca como eliminado sin borrarse físicamente.

GET /api/clientes/

Descripción: Lista todos los clientes con paginación
Requiere Auth:
Permiso requerido: clientes, leer

Respuesta exitosa: 200 OK

Response:

[
{
"id": 1,
"dni": 123456789,
"nombre": "Cliente Ejemplo",
"telefono": 3001234567,
"direccion": "Calle 1 #2-3",
"razon": "Cliente Ejemplo",
"fecha": "2025-01-15",
"hora": "10:00:00",
"tipoId": "CC",
"resposabilidadTrib": "R-99-PN",
"tenant_id": "uuid-tenant"
}
]

cURL:

Terminal window
curl "http://localhost/api/clientes/?skip=0&limit=10" -H "Authorization: Bearer <token>"

Python:

import httpx
resp = httpx.get("http://localhost/api/clientes/",
headers={"Authorization": f"Bearer {token}"})
clientes = resp.json()

JavaScript:

const resp = await fetch('http://localhost/api/clientes/', {
headers: {'Authorization': `Bearer ${token}`}
});
const clientes = await resp.json();

GET /api/clientes/{cliente_id}

Descripción: Obtiene un cliente por ID
Requiere Auth:
Permiso requerido: clientes, leer

Respuesta exitosa: 200 OK
Errores: 404 (no encontrado)

cURL:

Terminal window
curl http://localhost/api/clientes/1 -H "Authorization: Bearer <token>"

POST /api/clientes/

Descripción: Crea un nuevo cliente
Requiere Auth:
Permiso requerido: clientes, crear

Request:

{
"dni": 123456789,
"nombre": "Nuevo Cliente",
"telefono": 3007654321,
"direccion": "Calle 10 #20-30",
"razon": "Nuevo Cliente",
"tipoId": "CC",
"resposabilidadTrib": "R-99-PN"
}

Respuesta exitosa: 201 Created

cURL:

Terminal window
curl -X POST http://localhost/api/clientes/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{"dni":123456789,"nombre":"Nuevo Cliente","telefono":3007654321,"direccion":"Calle 10 #20-30","razon":"Nuevo Cliente","tipoId":"CC","resposabilidadTrib":"R-99-PN"}'

Python:

import httpx
resp = httpx.post("http://localhost/api/clientes/",
json={"dni": 123456789, "nombre": "Nuevo Cliente", "telefono": 3007654321, "direccion": "Calle 10 #20-30", "razon": "Nuevo Cliente", "tipoId": "CC", "resposabilidadTrib": "R-99-PN"},
headers={"Authorization": f"Bearer {token}"})
cliente = resp.json()

JavaScript:

const resp = await fetch('http://localhost/api/clientes/', {
method: 'POST',
headers: {'Content-Type': 'application/json', 'Authorization': `Bearer ${token}`},
body: JSON.stringify({dni: 123456789, nombre: 'Nuevo Cliente', telefono: 3007654321, direccion: 'Calle 10 #20-30', razon: 'Nuevo Cliente', tipoId: 'CC', resposabilidadTrib: 'R-99-PN'})
});

PUT /api/clientes/{cliente_id}

Descripción: Actualiza un cliente existente
Requiere Auth:
Permiso requerido: clientes, actualizar

Respuesta exitosa: 200 OK
Errores: 404 (no encontrado)

cURL:

Terminal window
curl -X PUT http://localhost/api/clientes/1 \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{"nombre":"Cliente Actualizado","telefono":3009998877}'

DELETE /api/clientes/{cliente_id}

Descripción: Elimina (soft delete) un cliente
Requiere Auth:
Permiso requerido: clientes, eliminar

Respuesta exitosa: 204 No Content
Errores: 404 (no encontrado)

cURL:

Terminal window
curl -X DELETE http://localhost/api/clientes/1 -H "Authorization: Bearer <token>"

Búsqueda

GET /api/clientes/search/dni

Descripción: Busca un cliente por número de documento
Requiere Auth:
Permiso requerido: clientes, leer

Parámetros query:

ParámetroTipoObligatorioDescripción
dniintNúmero de documento

Respuesta exitosa: 200 OK
Errores: 404 (no encontrado)

cURL:

Terminal window
curl "http://localhost/api/clientes/search/dni?dni=123456789" -H "Authorization: Bearer <token>"

GET /api/clientes/search/nombre

Descripción: Busca clientes por nombre (búsqueda parcial)
Requiere Auth:
Permiso requerido: clientes, leer

Parámetros query:

ParámetroTipoObligatorioDescripción
nombrestringTexto parcial del nombre

Respuesta exitosa: 200 OK

cURL:

Terminal window
curl "http://localhost/api/clientes/search/nombre?nombre=Cliente" -H "Authorization: Bearer <token>"