developers Entrar a AdvantaCloud
Árbol del API · Productos y precios › productsConnection

Lista de artículos

productsConnection

Tipo

Query

Devuelve

ProductConnection!

Permiso de la llave

Articulos

Página

20 por omisión · máx. 100

Estable

Lista los artículos de la empresa, del modificado hace más tiempo al más reciente. Busca por clave, descripción o código de barras, filtra por familia y trae el precio de cada artículo para un cliente o una estructura de precios.

Úsala para sincronizar tu catálogo de artículos: la primera vez recorre la lista completa; después pide sólo lo modificado con updatedAfter. Un artículo que se desactiva deja de llegar, también con updatedAfter: para detectar esas bajas, recorre la lista completa de vez en cuando y compara.

Un cambio de precio no cambia el updatedAt del artículo. priceListEntriesConnection sigue los cambios de los precios de cada lista, pero el precio calculado también depende de la vigencia de las listas y de los precios por rango: vuelve a pedir price de vez en cuando.

price llega sólo si envías customerId o priceStructureId y la llave tiene además «Cliente»; si no, llega null. Es el precio de lista en la unidad del artículo, antes de descuentos e impuestos. Si la estructura no tiene listas vigentes en esa moneda, llega en "0.00".

productsConnection(
  first: Int  after: String  search: String
  familyId: ID  onlyActive: Boolean = true
  updatedAfter: DateTime  customerId: ID
  priceStructureId: ID  currencyId: ID
): ProductConnection!

Argumentos

9

ArgumentoTipoDescripción
Paginación
firstInt Int

Cuántos artículos devolver desde el inicio o desde after. Sin first llegan 20; si pides más de 100 recibes 100.

afterString String

Cursor de la página anterior (pageInfo.endCursor). Devuelve los artículos que siguen.

Filtros
familyIdID ID

Sólo los artículos de esta familia (Product.family.id).

onlyActiveBoolean Boolean

Por omisión llegan sólo los artículos activos. Con false llegan también los inactivos y los obsoletos.

Por omisión: true
updatedAfterDateTime DateTime

Sólo los artículos modificados después de este momento (ISO 8601 con desfase horario). Para sincronizar, envía el updatedAt más reciente que ya guardaste.

Precio
customerIdID ID

Calcula price con la estructura de precios de este cliente: la auxiliar si tiene una (y la principal para los artículos que no tienen precio en la auxiliar); si no, la principal.

priceStructureIdID ID

Calcula price con esta estructura de precios. Con customerId no hace falta; si envías los dos, ésta debe ser la principal o la auxiliar del cliente, y el precio sale de la del cliente.

currencyIdID ID

Moneda del precio: sólo cuentan las listas de precios vigentes en esa moneda. Sin currencyId se usa la moneda de documentos del cliente o, sin cliente, la primera moneda registrada en la empresa. Envíala siempre.

Lo que devuelve

ProductConnection!

nodes[Product]Los artículos de esta página. La forma más corta de leerlos.
edges[ProductEdge]Los mismos artículos, cada uno con su cursor.
pageInfoPageInfo!Dónde estás en la lista.
hasNextPageBoolean!Hay más elementos después de esta página.
endCursorStringCursor del último elemento; pásalo en after para pedir la página siguiente.
hasPreviousPageBoolean!true si pediste esta página con after, es decir, si no es la primera.
startCursorStringCursor del primer elemento de esta página.

Campos principales de Product

CampoTipoDescripción
idID! ID! Identificador del artículo; es el que se envía en productId.
idpartString String Clave del artículo, p. ej. TOR-0420.
nameString String Descripción principal del artículo.
descriptionString String Descripción adicional, en una o dos líneas separadas por un salto de línea.
unitUnit Unit Unidad de medida del artículo; sus precios y cantidades están en esta unidad.
familyProductFamily ProductFamily Familia del artículo. Si pertenece a varias, llega sólo una.
barcodeString String Código de barras; si tiene dos, el principal.
imageUrlString String Liga a la imagen del artículo. Está firmada y vence a los 7 días; null si no tiene imagen.
priceProductPrice ProductPrice Precio de lista en la unidad del artículo, antes de descuentos e impuestos. Llega sólo en product y productsConnection cuando envías customerId o priceStructureId; en los demás casos, como en las partidas de una orden, llega null. Requiere «Cliente» en la llave; sin él llega null.
inventoryControlInventoryControl InventoryControl Cómo controla el inventario el artículo, de los lotes y series al redondeo de cantidades.
updatedAtDateTime DateTime Fecha y hora de la última modificación del artículo; úsala con productsConnection(updatedAfter:). Un cambio de precio no la mueve.

Ver todos los campos de Product

Paginación

first · after

Pide hasta 100 artículos por página junto con pageInfo. Repite la misma consulta pasando endCursor en after mientras hasNextPage sea true. El orden es estable: no se saltan artículos entre páginas. Más sobre paginación.

Página 1

first: 100
endCursor: "WzEs…MTAwXQ"
hasNextPage: true

Página 2

after: "WzEs…MTAwXQ"
endCursor: "WzEs…MjAwXQ"
hasNextPage: true

Página 3

after: "WzEs…MjAwXQ"
endCursor: "WzEs…MjQ3XQ"
hasNextPage: false

Si un artículo cambia mientras recorres la lista, pasa al final y te llega otra vez con sus datos nuevos: guarda por id.

Permisos

Llave API Integraciones

Articulos

La llave ve los registros de toda la empresa del subdominio.

Sin el permiso Sin error

La consulta responde sin error, pero nodes llega vacío y hasNextPage es false.

Así lo conserva el API para las integraciones que ya lo usan: revisa los permisos de la llave si una lista llega vacía sin razón.

Errores

CódigoCuándo ocurreQué hacer
HTTP 401Falta el header Authorization o la llave no existe en la empresa del subdominio. La respuesta no trae cuerpo.Revisa la llave y el subdominio. No reintentes.
VALIDATIONpriceStructureId no es la estructura principal ni la auxiliar del cliente de customerId; o el cursor de after no tiene el formato de esta lista, o first es negativo.Revisa la estructura de precios; usa el endCursor tal como llegó y con los mismos argumentos.
NOT_FOUNDEl cliente de customerId o la moneda de currencyId no existe. Si pides price, también cuando la estructura de priceStructureId no existe.Revisa los identificadores.
argumentLiteralsIncompatibleUn argumento escrito en la consulta no tiene el tipo esperado, como un updatedAfter que no es ISO 8601. Si el valor llega en una variable, el error trae extensions.problems y puede no traer code.Corrige la consulta; reintentar no ayuda.
HTTP 422Falla interna o dato rechazado al guardar. El cuerpo es {"error": …}, sin data.Si no cambiaste nada, reintenta con espera exponencial.

Los errores de la consulta llegan con HTTP 200 en errors, con su código en extensions.code. Revisa siempre errors, no sólo el estatus HTTP. Errores y reintentos.

Relacionadas

Schema del 26 oct 2026 · Ver cambios¿Algo no cuadra? Repórtalo en ayuda.advanta.mx