Skip to main content
El SDK valida las entradas de cada método en el cliente, contra los mismos esquemas de @qcobro/common que usa la API, antes de enviar la petición. Una entrada inválida —un lote vacío, un enum desconocido, un email malformado— lanza un ValidationError y no realiza ninguna llamada de red.

Captura un ValidationError

ValidationError se reexporta desde @qcobro/sdk, así que puedes capturarlo sin depender de @qcobro/common directamente.
import { Client, ValidationError } from "@qcobro/sdk";

try {
  await client.portfolios.create({ name: "", clientId: "acme" });
} catch (err) {
  if (err instanceof ValidationError) {
    console.error(err.fieldErrors);
    // [{ field: "name", message: "...", code: "too_small" }]
  }
}

La forma del error

Un ValidationError lleva un código estable, un mensaje legible y una lista de errores por campo.
code
string
Siempre "VALIDATION_ERROR". Úsalo para distinguir los fallos de validación de otros errores.
message
string
Resumen legible que combina los errores de campo (por ejemplo name: ...; clientId: ...).
fieldErrors
FieldError[]
Un elemento por campo inválido. Cada FieldError tiene field, message y code.
Cada entrada de fieldErrors tiene esta forma:
field
string
Ruta del campo inválido (por ejemplo rows.0.email), o "root" si el error no es de un campo concreto.
message
string
Descripción legible del fallo de ese campo.
code
string
Código del fallo (por ejemplo too_small, invalid_type), proveniente del esquema.

Serializa el error

Para devolver el error en tu propia API o registrarlo, usa toJSON, que produce una representación serializable.
try {
  await client.portfolios.syncAccounts({ portfolioId: "ptf_123", mode: "APPEND_ONLY", rows: [] });
} catch (err) {
  if (err instanceof ValidationError) {
    res.status(400).json(err.toJSON());
    // { code: "VALIDATION_ERROR", message: "...", fieldErrors: [...] }
  }
}

Errores del servidor frente a errores de validación

La validación en el cliente solo atrapa entradas malformadas. Los errores que devuelve la API —como UNAUTHORIZED cuando falta o caduca la autenticación— llegan como errores de tRPC, no como ValidationError.
Ante un UNAUTHORIZED, el cliente intenta por defecto refrescar el token una vez y reintentar la petición. Solo si el reintento también falla aflora el error. Consulta Autenticación y tokens.

Siguientes pasos

Autenticación y tokens

Cómo el cliente refresca tokens y cómo aflora UNAUTHORIZED.

Referencia del SDK

Tipos y métodos exportados por @qcobro/sdk.