Saltar al contenido
Hugo Méndez
  • Oracle ERP Cloud
  • REST
  • Integraciones

API REST de Oracle Fusion: paginación, filtros y cómo no traer más datos de los necesarios

Guía práctica de los parámetros de la API REST de Oracle ERP Cloud / Fusion: q, fields, onlyData, limit, offset, totalResults, expand y finder, con ejemplos para integraciones.

Hugo Méndez13 de octubre de 20262 min de lectura

La API REST de Oracle Fusion (ERP, SCM, HCM) es la forma más directa de leer y escribir datos desde otros sistemas. Pero si la consumes sin parámetros, recibes respuestas enormes, lentas y solo los primeros 25 registros. Estos son los parámetros que uso en cada integración.

La estructura de la URL

https://<instancia>.fa.<region>.oraclecloud.com/fscmRestApi/resources/11.13.18.05/<recurso>

Por ejemplo, salesOrdersForOrderHub, invoices, suppliers, items… La documentación de Oracle lista los recursos por módulo. La autenticación más común en integraciones es básica sobre HTTPS con un usuario de integración, o OAuth.

onlyData=true: quita el ruido

Por defecto cada registro trae una lista de links (enlaces a sí mismo, a sus hijos, a listas de valores). En respuestas grandes eso es la mitad del peso:

GET .../suppliers?onlyData=true

fields: solo las columnas que usas

GET .../suppliers?onlyData=true&fields=SupplierId,Supplier,SupplierNumber,TaxpayerId

Menos datos, respuestas más rápidas y menos riesgo de exponer información que no necesitas.

q: filtra en el servidor

GET .../invoices?q=InvoiceDate>='2026-10-01';InvoiceAmount>10000&onlyData=true
  • Las condiciones se separan con ; (equivale a AND).
  • Los textos van entre comillas simples: q=Supplier='ACME SA DE CV'.
  • Recuerda codificar la URL (espacios, comillas, >).

Para búsquedas predefinidas, algunos recursos ofrecen finder, por ejemplo ?finder=PrimaryKey;SupplierId=123.

limit, offset y hasMore: paginación

Por defecto recibes 25 registros. Pide más con limit (hasta el máximo que permita el recurso, normalmente 500) y avanza con offset:

async function traerTodo(url, headers) {
  const todos = [];
  let offset = 0;
  const limit = 500;
  for (;;) {
    const r = await fetch(`${url}&limit=${limit}&offset=${offset}`, { headers });
    if (!r.ok) throw new Error(`${r.status} ${await r.text()}`);
    const { items, hasMore } = await r.json();
    todos.push(...items);
    if (!hasMore) return todos;
    offset += limit;
  }
}

La respuesta trae hasMore para saber si hay más páginas. Si además necesitas el total, agrega totalResults=true (hace la consulta un poco más cara, úsalo solo si lo necesitas).

expand: traer hijos en la misma llamada

Una orden de venta con sus líneas, sin hacer una llamada por línea:

GET .../salesOrdersForOrderHub?q=OrderNumber='1045'&expand=lines&onlyData=true

Úsalo con cuidado: expandir varios niveles en muchos registros genera respuestas gigantes.

orderBy: orden estable para paginar

Si paginas sobre datos que cambian, ordena por una columna estable (por ejemplo, la llave primaria o la fecha de creación) para no saltarte ni repetir registros:

?orderBy=CreationDate:asc

Errores comunes

Síntoma Causa probable
Solo llegan 25 registros Falta limit / paginación
400 al filtrar Comillas, codificación o nombre de atributo incorrecto (distingue mayúsculas)
401 / 403 Usuario sin el rol que da acceso a ese recurso
Respuestas lentas Sin fields, sin onlyData o expand innecesario
Registros repetidos al paginar Sin orderBy estable

¿Tienes una integración con Oracle Fusion lenta o incompleta? Te ayudo a revisarla.

Volver al blog

Servicios relacionados

¿Tienes un proceso que ya no aguanta más Excel?

Cuéntame qué necesitas. En menos de 24 horas hábiles te respondo con una idea clara de cómo resolverlo y cuánto cuesta.