getRelatedProductsById
Buscar todos os produtos relacionados pelo ID do produto.
Descrição
Busca os produtos relacionados ao produto com o id informado. O userQuery opcional aceita paginação e ordenação (offset, limit, sortOrder, sortKey), statusMarker, templateMarker, relationMode e signPrice. Resolve para um IProductsResponse: os produtos ficam em items, e a contagem total, em total.
.getRelatedProductsById(
,
,
);
Esquema de parâmetros
Esquema
id: number
ID do produto para o qual buscar produtos relacionados.
exemplo: 12345
langCode: string
Código do idioma. Padrão: o langCode passado para defineOneEntry ("en_US" se nenhum for passado).
exemplo: "en_US"
userQuery: IProductsRelatedQuery
Parâmetros de consulta opcionais.
exemplo:
{
"limit": 30,
"offset": 0,
"sortOrder": "DESC",
"sortKey": "id",
"signPrice": "orders",
"statusMarker": "in_stock",
"templateMarker": "template_12345"
}
userQuery.offset(required): number
Número de registros a pular. Padrão: 0. offset + limit não pode ultrapassar 200; uma janela maior é rejeitada com 400.
userQuery.limit(required): number
Número máximo de registros a retornar. Padrão: 30.
userQuery.sortOrder(required): string
Ordem de classificação: "DESC" ou "ASC". Padrão: "DESC".
userQuery.sortKey(required): string
Campo de ordenação: "id", "position", "title", "date", "price" ou "status". Padrão: "position".
userQuery.signPrice: string
Marcador do armazenamento de pedidos para o qual fixar preços. Quando definido, cada produto vem com um signedPrice que mantém o preço por um tempo limitado.
veja: Fixação de preço
userQuery.statusMarker: string | null
Marcador do status do produto. Padrão: null.
exemplo: "in_stock"
userQuery.templateMarker: string | null
Marcador do template de produto. Padrão: null.
exemplo: "template_12345"
userQuery.relationMode: string
Como as relações são calculadas: "global" (o padrão) executa a cadeia de condições do template como está; "local" exige ainda que o valor do atributo do produto id satisfaça a condição do template (mesmo operador, mesmo operando armazenado) antes que os produtos dessa etapa sejam mantidos.
exemplo: "local"
Limite de registros. Se a permissão do grupo de usuários para este método permitir apenas leitura restrita, a API retorna no máximo o número de registros definido nas configurações do projeto (10 por padrão), seja qual for o limit informado. Com acesso total de leitura, limit funciona normalmente. Veja Module permissions (abre em uma nova aba).
signPricefixa o preço retornado por um tempo limitado. Defina-o com o marcador do seu armazenamento de pedidos. Veja Fixação do preço (signPrice).
Exemplos
Exemplo mínimo
const response = await Products.getRelatedProductsById(2954);
Exemplo com userQuery
const = { "offset": 0, "limit": 30, "sortOrder": "DESC", "sortKey": "id"};
const response = await Products.getRelatedProductsById(2954, 'en_US', userQuery);
Exemplo de resposta
O exemplo mostra o formato de um item, como retornado por 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 resposta
Esquema: IProductsResponse
total: number
Número total de produtos encontrados.
exemplo: 100
items: IProductsEntity[]
Produtos nesta resposta.
exemplo:
[
{
"id": 12345,
"title": "Product 1"
},
{
"id": 67890,
"title": "Product 2"
}
]
items.id: number
ID do produto.
exemplo: 12345
items.localizeInfos: ILocalizeInfo
Dados localizados do produto, como o título.
exemplo:
{}
items.statusIdentifier: string | null
Marcador do status do produto, ou null.
exemplo: "in_stock"
items.statusLocalizeInfos: ILocalizeInfo
Nome localizado do status do produto.
exemplo:
{ "title": "Sale" }
items.attributeSetIdentifier: string | null
Marcador do conjunto de atributos, ou null se nenhum estiver atribuído.
exemplo: "set_12345"
items.position: number
Posição usada para ordenação.
exemplo: 1
items.price: number | null
Preço do produto do índice de busca.
exemplo: 150.00
items.additional: object
Valores extras calculados pelo índice de busca, como a faixa de preço em prices.min e prices.max.
exemplo:
{
"prices": {
"min": 5,
"max": 150
}
}
items.sku: string | null
SKU do produto do índice de busca, ou null.
exemplo: "SKU_12345"
items.isSync: boolean
Indica se o índice de atributos do produto está atualizado para o idioma solicitado. Com false, um attributeValues vazio ou parcial significa que os valores ainda não foram publicados, e não que não existem.
exemplo: true
items.attributeValues: IAttributeValues
Valores de atributos indexados pelo marcador do atributo.
exemplo:
{
"color": {
"type": "string",
"value": "red",
"isIcon": false,
"position": 0,
"additionalFields": {}
}
}
items.categories: string[]
URLs das páginas de catálogo às quais o produto pertence.
exemplo:
[
"catalog"
]
items.isVisible: boolean
Se o produto está visível.
exemplo: true
items.moduleFormConfigs: Array<IFormConfig>
Configurações de formulário do módulo.
items.rating: IRating
Dados de avaliação: valor médio, curtidas e descurtidas, e o método de cálculo.
items.isPositionLocked: boolean
Se a posição de ordenação está bloqueada.
exemplo: false
items.relatedIds: number[]
IDs dos produtos relacionados.
exemplo:
[
12345,
67890
]
items.paymentStages: unknown
Etapas de pagamento do produto: um array de objetos { title, value, marker }, ou null quando nenhuma está definida.
exemplo: null
items.distance: number
Distância de relevância na busca vetorial (semântica). Presente apenas nos resultados da busca vetorial.
exemplo: 0.42
items.discountConfig: Record<string, unknown>
Configuração do desconto.
exemplo:
{}
items.templateIdentifier: string | null
Marcador do template vinculado.
exemplo: "template_12345"
items.shortDescTemplateIdentifier: string | null
Marcador do template usado para a descrição curta.
exemplo: "short_desc_template_12345"
items.signedPrice: string
Token assinado (JWT) que fixa o preço do produto para um pedido. Retornado quando signPrice está definido.
veja: Preço fixo do produto
exemplo: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
items.productPages: IProductPageRef[]
Vínculos entre o produto e as páginas de catálogo às quais ele pertence.
exemplo:
[
{
"id": 16,
"pageId": 4,
"productId": 15,
"positionId": 244,
"categoryPath": "products"
}
]
items.blocks: string[]
Marcadores dos blocos vinculados ao produto.
exemplo:
[
"block_12345",
"block_67890"
]
totalFound: number
Número de produtos encontrados antes da aplicação dos limites; retornado pelos endpoints de produtos de blocos (similarProducts, recomendações de carrinho/lista de desejos, comprados juntos com frequência). Opcional.
exemplo: 2
signedPriceé um token assinado que carrega o preço fixado. Envie-o de volta ao criar um pedido. Veja Preço fixo do produto (signedPrice).