Saltar al contenido principal

getRelatedProductsById

Busca todos los objetos de productos relacionados por el id de la página.

Descripción

Este método recupera todos los objetos de página de productos relacionados para un producto específico basado en su identificador (id) desde la API. Acepta un parámetro opcional userQuery para parámetros de consulta adicionales como offset, limit, sortOrder y sortKey. Devuelve una Promesa que se resuelve en un objeto IProductsResponse.

Products.getRelatedProductsById( id, langCode, userQuery );

Esquema de parámetros

Esquema

id: number
Identificador de la página del producto para el cual encontrar la relación
ejemplo: 12345

langCode: string
Código de idioma. Por defecto: "en_US"
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
Parámetro para paginación. Por defecto: 0.

userQuery.limit(required): number
Parámetro para paginación. Por defecto: 30.

userQuery.sortOrder(required): string
Orden de clasificación "DESC" | "ASC". Por defecto: "DESC".

userQuery.sortKey(required): string
Campo para ordenar (por defecto - null). Valores posibles: "id", "position", "title", "date", "price". Por defecto: null.

userQuery.signPrice: string
Marcador de almacenamiento de pedido para fijación de precios. Si se establece el parámetro, el precio se fija por un tiempo determinado.
ver: Fijación del precio

userQuery.statusMarker: string | null
Marcador de estado de la página del producto, por defecto null.
ejemplo: "in_stock"

userQuery.templateMarker: string | null
Marcador de plantilla de la página del producto, por defecto null.
ejemplo: "template_12345"

Por defecto, puedes recuperar 10 objetos. Esto se debe al límite de registros en la configuración de permisos del módulo.
Para que la paginación funcione correctamente, necesitas configurar Permisos del módulo de acuerdo a tus necesidades en la sección correspondiente.

💲 signPrice bloquea el precio devuelto por un tiempo limitado — configúralo como tu marcador de almacenamiento de pedidos. Ver Fijación del precio (signPrice).

Ejemplos

Ejemplo mínimo

const response = await Products.getRelatedProductsById(1);

Ejemplo con atributos


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

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

Usa condiciones para encontrar datos específicos de productos:

attributeMarker: El identificador de texto del atributo indexado por el cual se filtran los valores. conditionMarker: El tipo de condición que se aplicará al valor del atributo.

MarcadorSignificadoEjemplo
eqIgualstatusId = 1 (solo activos)
neqNo igualrole ≠ "Viewer"
inContiene (uno de)role in ["Editor", "Manager"]
ninNo contieneemail not in ["@temp.com"]
exsExiste (tiene valor)Tiene lastLogin
nexsNo existeNunca ha iniciado sesión

conditionValue: El valor con el que comparar.

Ejemplo de respuesta

{
"total": 15,
"items": [
{
"localizeInfos": {
"title": "Товар"
},
"paymentStages": [
{
"title": "Part A",
"marker": "part_a",
"value": 100
},
{
"title": "Part B",
"marker": "part_b",
"value": 200
}
],
"id": 1764,
"isVisible": true,
"isSync": true,
"price": 0,
"additional": {
"prices": {
"min": 0,
"max": 100
}
},
"blocks": [],
"sku": "0-123",
"productPages": [
{
"id": 8997,
"pageId": 1176,
"productId": 8872
}
],
"rating": {
"votes": 42,
"value": 4.5,
"like": 10,
"dislike": 2,
"method": "weighted"
},
"statusLocalizeInfos": {
"title": "Товар"
},
"templateIdentifier": "my-template",
"shortDescTemplateIdentifier": "my-template-short",
"attributeValues": {
"marker": {
"value": "",
"type": "string",
"position": 1,
"isProductPreview": false,
"isIcon": false,
"additionalFields": {
"marker": {
"type": "string",
"value": "test"
}
}
}
},
"attributeSetIdentifier": "my-set",
"statusIdentifier": "my-status",
"position": 1,
"signedPrice": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"formModuleConfigs": [
{
"id": 1,
"formIdentifier": "reg",
"moduleIdentifier": "user",
"entityIdentifiers": [],
"isGlobal": true,
"isClosed": false,
"viewOnlyMyData": false,
"commentOnlyMyData": false,
"formDataCount": 0,
"entityFormDataCount": {},
"exceptionIds": [
"shop"
],
"nestedEntityIdentifiers": [
"avto-aksessuary",
"fm-moduliatory",
"avtomobilnye-derzhateli",
"videoregistratory-radiolokatory"
],
"ratingCalculation": "average",
"allowHalfRatings": true,
"maxRatingScale": 5,
"isAnonymous": true,
"allowRerating": true,
"isRating": true
}
],
"discountConfig": {
"discounts": [
{
"id": 5,
"identifier": "summer-sale",
"type": "DISCOUNT",
"localizeInfos": {
"title": "Summer Sale"
},
"startDate": "2026-01-01T06:32:19.736Z",
"endDate": "2026-01-28T06:32:22.632Z",
"discountValue": {
"value": 30,
"maxAmount": 0,
"discountType": "FIXED_PRICE",
"applicability": "TO_PRODUCT"
},
"exclusions": [
{
"id": 2
}
],
"position": 3,
"conditionLogic": "OR",
"gifts": [
{
"id": 3,
"localizeInfos": {
"title": "hhh222"
},
"attributeSetIdentifier": "attr-set-1",
"statusIdentifier": null,
"statusLocalizeInfos": {},
"templateIdentifier": null,
"price": 90,
"sku": null,
"attributeValues": {
"price1": {
"type": "integer",
"value": "90",
"isIcon": false,
"position": 0,
"additionalFields": [],
"isProductPreview": false
}
},
"isVisible": true
}
],
"conditions": [
{
"conditionType": "PRODUCT",
"entityIds": [
{
"id": 4,
"isNested": false
},
{
"isNested": false
}
],
"value": null
},
{
"conditionType": "ATTRIBUTE",
"entityIds": [
{
"isNested": false
}
],
"value": {
"value": "100",
"condition": "eq"
}
}
]
}
],
"discountPrice": 90,
"settings": {
"allowStacking": true,
"maxDiscountValue": 30,
"allowGiftStacking": false
}
}
},
{
"localizeInfos": {
"title": "Товар"
},
"paymentStages": [
{
"title": "Part A",
"marker": "part_a",
"value": 100
},
{
"title": "Part B",
"marker": "part_b",
"value": 200
}
],
"id": 1764,
"isVisible": true,
"isSync": true,
"price": 0,
"additional": {
"prices": {
"min": 0,
"max": 100
}
},
"blocks": [],
"sku": "0-123",
"productPages": [
{
"id": 8997,
"pageId": 1176,
"productId": 8872
}
],
"rating": {
"votes": 42,
"value": 4.5,
"like": 10,
"dislike": 2,
"method": "weighted"
},
"statusLocalizeInfos": {
"title": "Товар"
},
"templateIdentifier": "my-template",
"shortDescTemplateIdentifier": "my-template-short",
"attributeValues": {
"marker": {
"value": "",
"type": "string",
"position": 1,
"isProductPreview": false,
"isIcon": false,
"additionalFields": {
"marker": {
"type": "string",
"value": "test"
}
}
}
},
"attributeSetIdentifier": "my-set",
"statusIdentifier": "my-status",
"position": 1,
"signedPrice": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"formModuleConfigs": [
{
"id": 1,
"formIdentifier": "reg",
"moduleIdentifier": "user",
"entityIdentifiers": [],
"isGlobal": true,
"isClosed": false,
"viewOnlyMyData": false,
"commentOnlyMyData": false,
"formDataCount": 0,
"entityFormDataCount": {},
"exceptionIds": [
"shop"
],
"nestedEntityIdentifiers": [
"avto-aksessuary",
"fm-moduliatory",
"avtomobilnye-derzhateli",
"videoregistratory-radiolokatory"
],
"ratingCalculation": "average",
"allowHalfRatings": true,
"maxRatingScale": 5,
"isAnonymous": true,
"allowRerating": true,
"isRating": true
}
],
"discountConfig": {
"discounts": [
{
"id": 5,
"identifier": "summer-sale",
"type": "DISCOUNT",
"localizeInfos": {
"title": "Summer Sale"
},
"startDate": "2026-01-01T06:32:19.736Z",
"endDate": "2026-01-28T06:32:22.632Z",
"discountValue": {
"value": 30,
"maxAmount": 0,
"discountType": "FIXED_PRICE",
"applicability": "TO_PRODUCT"
},
"exclusions": [
{
"id": 2
}
],
"position": 3,
"conditionLogic": "OR",
"gifts": [
{
"id": 3,
"localizeInfos": {
"title": "hhh222"
},
"attributeSetIdentifier": "attr-set-1",
"statusIdentifier": null,
"statusLocalizeInfos": {},
"templateIdentifier": null,
"price": 90,
"sku": null,
"attributeValues": {
"price1": {
"type": "integer",
"value": "90",
"isIcon": false,
"position": 0,
"additionalFields": [],
"isProductPreview": false
}
},
"isVisible": true
}
],
"conditions": [
{
"conditionType": "PRODUCT",
"entityIds": [
{
"id": 4,
"isNested": false
},
{
"isNested": false
}
],
"value": null
},
{
"conditionType": "ATTRIBUTE",
"entityIds": [
{
"isNested": false
}
],
"value": {
"value": "100",
"condition": "eq"
}
}
]
}
],
"discountPrice": 90,
"settings": {
"allowStacking": true,
"maxDiscountValue": 30,
"allowGiftStacking": false
}
}
}
]
}

Esquema de respuesta

Esquema: IProductsResponse

total: number
El número total de productos encontrados.
ejemplo: 100

items: IProductsEntity[]
Un array de entidades de productos.
ejemplo:

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

items.id: number
El identificador único.
ejemplo: 12345

items.localizeInfos: ILocalizeInfo
El nombre de los productos, teniendo en cuenta la localización.
ejemplo:

{}

items.statusIdentifier: string | null
Identificadores de estado de la página del producto (puede ser null).
ejemplo: "in_stock"

items.statusLocalizeInfos: ILocalizeInfo
Nombre de estado localizado para el producto.
ejemplo:

{ "title": "Sale" }

items.attributeSetIdentifier: string | null
Conjunto de identificadores de atributos.
ejemplo: "set_12345"

items.position: number
Número del ítem (para ordenar).
ejemplo: 1

items.price: number | null
El valor del precio de la página del producto tomado del índice.
ejemplo: 150.00

items.additional: object
Valor adicional del índice.
ejemplo:

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

items.sku: string | null
SKU del producto (Unidad de Mantenimiento de Stock), puede ser null.
ejemplo: "SKU_12345"

items.isSync: boolean
Indicación de indexación de la página.
ejemplo: true

items.attributeValues: IAttributeValues
Array de valores de atributos del índice, representados.
ejemplo:

[
{
"id": "color",
"value": "red"
}
]

items.categories: string[]
Categorías de productos.
ejemplo:

[
1,
2,
3
]

items.isVisible: boolean
Un signo de visibilidad de la página.
ejemplo: true

items.moduleFormConfigs: Array<IFormConfig>
Configuraciones de formularios del módulo (opcional).

items.rating: IRating
Datos de calificación.

items.isPositionLocked: boolean
Indicador de bloqueo de posición de ordenación (opcional).
ejemplo: false

items.relatedIds: number[]
Ids de páginas de productos relacionadas.
ejemplo:

[
12345,
67890
]

items.paymentStages: unknown
Datos de etapas de pago (puede ser null).
ejemplo: null

items.distance: number
Distancia de relevancia de búsqueda (semántica). Presente solo en resultados de búsqueda vectorial.
ejemplo: 0.42

items.discountConfig: Record<string, unknown>
Objeto de configuración de descuento.
ejemplo:

{}

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

items.shortDescTemplateIdentifier: string | null
Id de usuario de la plantilla vinculada para una descripción corta.
ejemplo: "short_desc_template_12345"

items.signedPrice: string
El precio firmado del producto se obtiene junto con los datos del producto cuando signPrice está establecido.
ver: Precio fijo del producto
ejemplo: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

items.productPages: IProductPageRef[]
Array de referencias de páginas de productos que vinculan el producto a sus páginas.
ejemplo:

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

items.blocks: string[]
Array de identificadores de bloques.
ejemplo:

[
"block_12345",
"block_67890"
]

totalFound: number
Número de productos coincidentes antes de que se apliquen los límites; devuelto por los puntos finales de productos de bloque (similarProducts, recomendaciones de carrito/lista de deseos, pedidos frecuentes). Opcional.
ejemplo: 2

🔒 signedPrice es el token firmado que lleva el precio bloqueado — devuélvelo cuando crees un pedido. Ver Precio fijo del producto (signedPrice).