Árbol del API · Productos y precios › productsConnection
Lista de artículos
productsConnection
Tipo
Query
Devuelve
Permiso de la llave
Articulos
Página
20 por omisión · máx. 100
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
| Argumento | Tipo | Descripción |
|---|---|---|
| Paginación | ||
firstInt |
Int | Cuántos artículos devolver desde el inicio o desde |
afterString |
String | Cursor de la página anterior ( |
| Filtros | ||
searchString |
String | Artículos cuya clave, descripción o código de barras empieza con el texto, sin distinguir mayúsculas: |
familyIdID |
ID | Sólo los artículos de esta familia ( |
onlyActiveBoolean |
Boolean | Por omisión llegan sólo los artículos activos. Con true
|
updatedAfterDateTime |
DateTime | Sólo los artículos modificados después de este momento (ISO 8601 con desfase horario). Para sincronizar, envía el |
| Precio | ||
customerIdID |
ID | Calcula |
priceStructureIdID |
ID | Calcula |
currencyIdID |
ID | Moneda del precio: sólo cuentan las listas de precios vigentes en esa moneda. Sin |
Lo que devuelve
ProductConnection!
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
| Campo | Tipo | Descripció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. |
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: truePágina 2
after: "WzEs…MTAwXQ"
endCursor: "WzEs…MjAwXQ"
hasNextPage: truePágina 3
after: "WzEs…MjAwXQ"
endCursor: "WzEs…MjQ3XQ"
hasNextPage: falseSi 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
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ódigo | Cuándo ocurre | Qué hacer |
|---|---|---|
| HTTP 401 | Falta 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. |
VALIDATION | priceStructureId 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_FOUND | El 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. |
argumentLiteralsIncompatible | Un 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 422 | Falla 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.