Árbol del API · Productos y precios › product
Detalle de un artículo
product
Devuelve un artículo por su id, con su unidad, su familia y su control de inventario, y su precio para un cliente o una estructura de precios.
Si la llave no tiene el permiso, la respuesta es product: null sin error;
un artículo que no existe responde NOT_FOUND. Llegan también los artículos
inactivos y obsoletos.
price llega sólo si envías customerId o priceStructureId y la llave
tiene además «Cliente». Es el precio de lista en la unidad del artículo,
antes de descuentos e impuestos. Para el precio exacto de una partida, con
descuentos e impuestos, cotiza la orden con
quoteOrder.
product( id: ID! customerId: ID priceStructureId: ID currencyId: ID ): Product
Argumentos
4
| Argumento | Tipo | Descripción |
|---|---|---|
| Identificación | ||
idID! |
ID! | Identificador del artículo, el mismo |
| 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
Product
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. |
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 el resultado llega null.
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. |
NOT_FOUND | No hay un artículo con ese id, o no existe el cliente de customerId, la moneda de currencyId o, si pides price, la estructura de priceStructureId. | Revisa los identificadores. |
VALIDATION | priceStructureId no es la estructura principal ni la auxiliar del cliente de customerId. | Omite priceStructureId o usa una estructura del cliente. |
| 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.