Saltar al contenido principal

Obtener un solo producto por ID

Este método te permite recuperar un solo producto por su ID numérico, devolviendo el objeto completo del producto, incluyendo atributos, precio y contenido localizado.

✅ Propósito del escenario:

  • Obtener un solo producto por su ID numérico
  • Acceder al precio del producto y al título localizado
  • Leer valores de atributos como la moneda del producto

✅ Lo que necesitas:

  • Un PROJECT_URL y APP_TOKEN válidos para la autenticación con la API de OneEntry.
  • Un ID de producto numérico conocido

📌 Importante:

  • Estos ejemplos no incluyen manejo de errores.
  • Puedes gestionar errores utilizando un bloque try-catch o empleando una construcción como await Promise.catch((error) => error).

📚 Ver en la documentación:

📦 Referencia del SDK:

Pruébalo en vivo

Ejecuta este método de forma interactiva en el sandbox del JS SDK — conecta tu Project URL y App Token en la primera visita, luego abre:

  • Obtener un solo producto por ID — Este método te permite recuperar un solo producto por su ID numérico, devolviendo el objeto completo del producto, incluyendo atributos, precio y contenido localizado.

Escenario

1. Importar defineOneEntry desde el SDK y definir PROJECT_URL y APP_TOKEN

Ejemplo:

import { defineOneEntry } from 'oneentry';
import { IAttributeValues } from 'oneentry/dist/base/utils';

const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';

2. Crear un cliente API con defineOneEntry()

Ejemplo:

const { Products } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

3. Llamar a Products.getProductById() con el método getProductById()

Ejemplo:

const product = await Products.getProductById(15, 'en_US');

if ('statusCode' in product) {
throw new Error(product.message);
}
Resultado:
{
"id": 15,
"attributeSetIdentifier": "product",
"localizeInfos": {
"title": "Orange ball"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 1,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 400,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"products"
],
"paymentStages": null,
"rating": {},
"attributeValues": {
"price": {
"type": "real",
"value": "400",
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"image": {
"type": "image",
"value": [],
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": true
}
},
"productPages": [
{
"id": 17,
"pageId": 49,
"productId": 15,
"positionId": 1287,
"categoryPath": "products"
}
],
"blocks": [],
"moduleFormConfigs": [],
"discountConfig": {}
}

4. Acceder a los campos del producto

Ejemplo:

const title = product.localizeInfos?.title;
const price = product.price;
const attrs = product.attributeValues as IAttributeValues;
const currency = attrs.currency?.value;

console.log('Product: ', product);
console.log('Title: ', title);
console.log('Price: ', price);
console.log('Currency: ', currency);
Resultado:
{
"product": {
"id": 15,
"attributeSetIdentifier": "product",
"localizeInfos": {
"title": "Orange ball"
},
"statusLocalizeInfos": {},
"isVisible": true,
"statusIdentifier": null,
"position": 1,
"templateIdentifier": null,
"shortDescTemplateIdentifier": null,
"price": 400,
"additional": {
"prices": {
"min": 100,
"max": 999
}
},
"sku": null,
"isSync": true,
"categories": [
"products"
],
"paymentStages": null,
"rating": {},
"attributeValues": {
"price": {
"type": "real",
"value": "400",
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"image": {
"type": "image",
"value": [],
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": true
}
},
"productPages": [
{
"id": 17,
"pageId": 49,
"productId": 15,
"positionId": 1287,
"categoryPath": "products"
}
],
"blocks": [],
"moduleFormConfigs": [],
"discountConfig": {}
},
"title": "Orange ball",
"price": 400,
"currency": "USD"
}

Ejemplo final

// 1. Import defineOneEntry from SDK and define PROJECT_URL and APP_TOKEN
import { defineOneEntry } from 'oneentry';
import { IAttributeValues } from 'oneentry/dist/base/utils';

const PROJECT_URL = 'your-project-url';
const APP_TOKEN = 'your-app-token';

// 2. Creating an API client with [defineOneEntry()](/docs/index/#Installation)
const { Products } = defineOneEntry(PROJECT_URL, {
token: APP_TOKEN,
});

// 3. Call Products.getProductById() with [getProductById() method](/docs/products/#getProductById)
const product = await Products.getProductById(15, 'en_US');

if ('statusCode' in product) {
throw new Error(product.message);
}

// 4. Access product fields
const title = product.localizeInfos?.title;
const price = product.price;
const attrs = product.attributeValues as IAttributeValues;
const currency = attrs.currency?.value;

console.log('Product: ', product);
console.log('Title: ', title);
console.log('Price: ', price);
console.log('Currency: ', currency);