Rutas
Una Ruta describe un corredor destino al que tu compañía puede enviar en
este momento — el método de pago, país, moneda, tipo de cambio cotizado,
esquema de comisiones y los
límites operacionales disponibles
ahora mismo. getRoutes es el único método de este objeto: léelo en tiempo
de ejecución en vez de hardcodear corredores o límites, porque ambos se
mueven con tu consumo.
getRoutes(...)
Lista las rutas disponibles para tu compañía en este momento, para una moneda origen dada.
Firma
getRoutes(params?: GetRoutesParams): Promise<RoutesResponse>
Parámetros
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
params.sourceCurrency | string | No | Filtro de moneda origen. El servidor usa "USDR" por default si se omite. |
Retorno
RoutesResponse:
| Campo | Tipo | Significado |
|---|---|---|
routes | Route[] | Las rutas disponibles. |
routes[].name | string | Nombre de la ruta. |
routes[].method | string | Método de pago, ej. "BANK_TRANSFER". |
routes[].country | string | País destino de 2 caracteres. |
routes[].currency | string | Moneda destino de la ruta, ej. "VES". |
routes[].rate | string | Tipo de cambio cotizado para la ruta, como decimal string (p. ej. "852.79"). |
routes[].fees[].pricingRule | string | Identificador de la regla de comisión. camelCase — la única parte de esta respuesta que se queda en camelCase. |
routes[].fees[].pricingType | string | ej. "FEE". |
routes[].fees[].percentageValue | number | Componente porcentual de la comisión. |
routes[].fees[].flatValue | number | Componente fijo de la comisión. |
routes[].fees[].pricingLabel | string | Etiqueta legible por humanos para la línea de comisión. |
routes[].limits.per_transaction.min / .max | string | Límites por transacción, strings decimales. |
routes[].limits.transaction.daily/weekly/monthly.max | number | Límite de cantidad de transacciones para la ventana. |
routes[].limits.transaction.daily/weekly/monthly.current | number | Transacciones ya consumidas en la ventana. |
routes[].limits.transaction.daily/weekly/monthly.remaining | number | max - current. |
routes[].limits.fund.daily/weekly/monthly.max | string | Límite de monto financiado para la ventana, string decimal. |
routes[].limits.fund.daily/weekly/monthly.current | string | Monto ya financiado en la ventana, string decimal. |
routes[].limits.fund.daily/weekly/monthly.remaining | string | max - current, string decimal. |
Ejemplo
import {
RetornaClientBuilder,
RetornaEnvironment,
} from "@retorna-tech/retorna-gateway-sdk";
const client = new RetornaClientBuilder()
.environment(RetornaEnvironment.SANDBOX)
.clientId(process.env.RETORNA_CLIENT_ID!)
.clientSecret(process.env.RETORNA_CLIENT_SECRET!)
.privateKey(process.env.RETORNA_PRIVATE_KEY!)
.buildClient();
const { routes } = await client.getRoutes({ sourceCurrency: "USDR" });
for (const route of routes) {
console.log(route.method, route.country, route.currency, route.rate);
console.log(route.limits.per_transaction.min, route.limits.per_transaction.max);
}
Errores
Desde la API (RetornaB2BError, consulta el
catálogo de errores):
B2B_UNAUTHORIZED— credenciales, token o firma rechazados.B2B_COMPANY_NOT_FOUND— no hay ninguna compañía asociada a las credenciales usadas.B2B_RATE_LIMITED— demasiadas requests; reintenta con backoff.B2B_UNKNOWN— falla sin clasificar; reintenta una vez y después escala con elcorrelationId.
Notas
fees[]es la única parte de la respuesta que se queda en camelCase — todo lo demás en este contrato es snake_case.- Los límites de USDR de cada ruta se mueven con tu consumo; léelos en el momento de la llamada en vez de cachearlos.
sourceCurrencyes el único parámetro — no hay un filtro por corredor más allá de lo que ya devuelve el listado de rutas.