Saltar al contenido principal

getRelatedProductsById

Buscar todos los productos relacionados por ID de producto.

Descripción​

Obtiene los productos relacionados con el producto con el id indicado. El userQuery opcional admite paginación y ordenación (offset, limit, sortOrder, sortKey), statusMarker, templateMarker, relationMode y signPrice. Se resuelve en un IProductsResponse: los productos están en items y el recuento total en total.

.getRelatedProductsById( , , );

Esquema de parámetros​

Esquema

id: number
ID del producto para el que buscar productos relacionados.
ejemplo: 12345

langCode: string
Código de idioma. Predeterminado: el langCode pasado a defineOneEntry ("en_US" si no se pasó ninguno).
ejemplo: "en_US"

userQuery: IProductsRelatedQuery
Parámetros de consulta opcionales.
ejemplo:

{
"limit": 30,
"offset": 0,
"sortOrder": "DESC",
"sortKey": "id",
"signPrice": "orders",
"statusMarker": "in_stock",
"templateMarker": "template_12345"
}

userQuery.offset(required): number
Número de registros que se omiten. Predeterminado: 0. offset + limit no debe superar 200; una ventana mayor se rechaza con 400.

userQuery.limit(required): number
Número máximo de registros que se devuelven. Predeterminado: 30.

userQuery.sortOrder(required): string
Orden: "DESC" o "ASC". Predeterminado: "DESC".

userQuery.sortKey(required): string
Campo por el que ordenar: "id", "position", "title", "date", "price" o "status". Predeterminado: "position".

userQuery.signPrice: string
Marcador del almacenamiento de pedidos para el que se fijan los precios. Si se define, cada producto incluye un signedPrice que mantiene el precio durante un tiempo limitado.
ver: Fijar el precio

userQuery.statusMarker: string | null
Marcador del estado del producto. Predeterminado: null.
ejemplo: "in_stock"

userQuery.templateMarker: string | null
Marcador de la plantilla del producto. Predeterminado: null.
ejemplo: "template_12345"

userQuery.relationMode: string
Cómo se calculan las relaciones: "global" (el valor predeterminado) ejecuta la cadena de condiciones de la plantilla tal cual; "local" exige además que el valor del atributo del producto id cumpla la condición de la plantilla (mismo operador, mismo operando guardado) antes de conservar los productos de ese paso.
ejemplo: "local"

Límite de registros. Si el permiso del grupo de usuarios para este método solo permite lectura restringida, la API devuelve como máximo el número de registros configurado en los ajustes del proyecto (10 por defecto), sin importar el limit que pases. Con acceso de lectura completo, limit funciona con normalidad. Consulta Module permissions (abre en una nueva pestaña).

signPrice bloquea el precio devuelto durante un tiempo limitado. Asígnale el marcador de tu almacenamiento de pedidos. Consulta Fijación del precio (signPrice).

Ejemplos​

Ejemplo mínimo​

const response = await Products.getRelatedProductsById(2954);

Ejemplo con userQuery​


const = {
"offset": 0,
"limit": 30,
"sortOrder": "DESC",
"sortKey": "id"
};

const response = await Products.getRelatedProductsById(2954, 'en_US', userQuery);

Ejemplo de respuesta​

El ejemplo muestra la forma de un elemento, tal como lo devuelve getProducts().

{
"total": 1,
"items": [
{
"id": 2954,
"localizeInfos": {
"title": "Box"
},
"isVisible": true,
"isSync": false,
"sku": null,
"price": 51,
"additional": {
"prices": {
"min": 51,
"max": 180
}
},
"categories": [
"catalog"
],
"statusIdentifier": "sale",
"statusLocalizeInfos": {
"title": "Sale"
},
"templateIdentifier": null,
"shortDescTemplateIdentifier": "product_preview",
"attributeValues": {
"product-name": {
"type": "string",
"value": "product-name",
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"price": {
"type": "integer",
"value": 51,
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"currency_products": {
"type": "string",
"value": "usd",
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": false
}
},
"attributeSetIdentifier": "products",
"isPositionLocked": false,
"position": 1,
"rating": {},
"paymentStages": null,
"moduleFormConfigs": [
{
"id": 12,
"formIdentifier": "review",
"moduleIdentifier": "catalog",
"isGlobal": false,
"isClosed": false,
"isModerate": false,
"viewOnlyMyData": false,
"commentOnlyMyData": false,
"entityIdentifiers": [
{
"id": "catalog",
"isNested": true
}
],
"formDataCount": 823,
"ratingCalculation": "average",
"allowHalfRatings": null,
"maxRatingScale": null,
"isAnonymous": null,
"allowRerating": null,
"isRating": null,
"entityFormDataCount": {
"2954": 823
},
"nestedEntityIdentifiers": [
"catalog"
],
"exceptionIds": []
}
],
"discountConfig": {}
}
]
}

Esquema de respuesta​

Esquema: IProductsResponse

total: number
Número total de productos encontrados.
ejemplo: 100

items: IProductsEntity[]
Productos de esta respuesta.
ejemplo:

[
{
"id": 12345,
"title": "Product 1"
},
{
"id": 67890,
"title": "Product 2"
}
]

items.id: number
ID del producto.
ejemplo: 12345

items.localizeInfos: ILocalizeInfo
Datos localizados del producto, como el título.
ejemplo:

{}

items.statusIdentifier: string | null
Marcador del estado del producto, o null.
ejemplo: "in_stock"

items.statusLocalizeInfos: ILocalizeInfo
Nombre localizado del estado del producto.
ejemplo:

{ "title": "Sale" }

items.attributeSetIdentifier: string | null
Marcador del conjunto de atributos, o null si no hay ninguno asignado.
ejemplo: "set_12345"

items.position: number
Posición usada para ordenar.
ejemplo: 1

items.price: number | null
Precio del producto del índice de búsqueda.
ejemplo: 150.00

items.additional: object
Valores adicionales calculados por el índice de búsqueda, como el rango de precios en prices.min y prices.max.
ejemplo:

{
"prices": {
"min": 5,
"max": 150
}
}

items.sku: string | null
SKU del producto del índice de búsqueda, o null.
ejemplo: "SKU_12345"

items.isSync: boolean
Indica si el índice de atributos del producto está actualizado para el idioma solicitado. Con false, un attributeValues vacío o parcial significa que los valores aún no se han publicado, no que no existan.
ejemplo: true

items.attributeValues: IAttributeValues
Valores de atributos indexados por el marcador del atributo.
ejemplo:

{
"color": {
"type": "string",
"value": "red",
"isIcon": false,
"position": 0,
"additionalFields": {}
}
}

items.categories: string[]
URLs de las páginas del catálogo a las que pertenece el producto.
ejemplo:

[
"catalog"
]

items.isVisible: boolean
Indica si el producto es visible.
ejemplo: true

items.moduleFormConfigs: Array<IFormConfig>
Configuraciones de formulario del módulo.

items.rating: IRating
Datos de valoración: valor medio, me gusta y no me gusta, y el método de cálculo.

items.isPositionLocked: boolean
Indica si la posición de ordenación está bloqueada.
ejemplo: false

items.relatedIds: number[]
IDs de los productos relacionados.
ejemplo:

[
12345,
67890
]

items.paymentStages: unknown
Etapas de pago del producto: un array de objetos { title, value, marker }, o null si no hay ninguna configurada.
ejemplo: null

items.distance: number
Distancia de relevancia en la búsqueda vectorial (semántica). Solo está presente en los resultados de la búsqueda vectorial.
ejemplo: 0.42

items.discountConfig: Record<string, unknown>
Configuración del descuento.
ejemplo:

{}

items.templateIdentifier: string | null
Marcador de la plantilla vinculada.
ejemplo: "template_12345"

items.shortDescTemplateIdentifier: string | null
Marcador de la plantilla usada para la descripción corta.
ejemplo: "short_desc_template_12345"

items.signedPrice: string
Token firmado (JWT) que fija el precio del producto para un pedido. Se devuelve cuando se define signPrice.
ver: Precio fijo del producto
ejemplo: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

items.productPages: IProductPageRef[]
Vínculos entre el producto y las páginas del catálogo a las que pertenece.
ejemplo:

[
{
"id": 16,
"pageId": 4,
"productId": 15,
"positionId": 244,
"categoryPath": "products"
}
]

items.blocks: string[]
Marcadores de los bloques vinculados al producto.
ejemplo:

[
"block_12345",
"block_67890"
]

totalFound: number
Número de productos que coinciden antes de aplicar los límites; lo devuelven los endpoints de productos de bloques (similarProducts, recomendaciones de carrito y lista de deseos, comprados con frecuencia). Opcional.
ejemplo: 2

signedPrice es un token firmado que contiene el precio bloqueado. Envíalo de vuelta al crear un pedido. Consulta Precio fijo del producto (signedPrice).