Pular para o conteúdo principal

getProducts

Pesquise todos os objetos de produto com paginação e filtro.

Descrição

Este método pesquisa todos os objetos de produto com paginação e filtros, com base nos parâmetros de consulta fornecidos (userQuery). Ele retorna uma Promise que resolve para um IProductsResponse.

Products.getProducts( body, langCode, userQuery );

Esquema de parâmetros

Esquema

body: IFilterParams[]
Corpo da solicitação. Padrão: []
exemplo:

[
{
"attributeMarker": "price",
"conditionMarker": "mth",
"statusMarker": "waiting",
"conditionValue": 1,
"pageUrls": [
"23-laminat-floorwood-maxima"
],
"isNested": false,
"title": ""
},
{
"attributeMarker": "price",
"conditionMarker": "lth",
"conditionValue": 3,
"pageUrls": [
"23-laminat-floorwood-maxima"
],
"isNested": false,
"title": ""
}
]

body.attributeMarker(required): string | null
O identificador de texto do atributo indexado pelo qual os valores são filtrados. Padrão: null.
exemplo: "cor"

body.conditionMarker: string | null
Id da condição de filtro pela qual os valores são filtrados. Padrão: null.
exemplo: "igual"

body.conditionValue(required): number | string | null
O valor que está sendo pesquisado, padrão null.
exemplo: "novo"

body.pageUrl: string | null
Url do objeto da página da categoria.
exemplo: ["23-laminat-floorwood-maxima"]

body.pageUrls: string[] | null
Url do objeto da página da categoria.
exemplo: ["23-laminat-floorwood-maxima"]

body.statusMarker: string | null
Identificador de texto do status da página do produto (padrão não definido).
exemplo: "em_estoque"

body.title: string | null
Nome do produto.
exemplo: "Laminatboden Maxima"

body.isNested: boolean
Flag para atributos aninhados, padrão falso.
exemplo: true

langCode: string
Código do idioma. Padrão: "en_US"
exemplo: "en_US"

userQuery: IProductsQuery
Conjunto de parâmetros de consulta opcionais
exemplo:

{
"limit": 30,
"offset": 0,
"sortOrder": "DESC",
"sortKey": "id",
"signPrice": "orders",
"templateMarker": "template_12345",
"statusMarker": "in_stock",
"conditionValue": "new",
"conditionMarker": "eq",
"attributeMarker": "color"
}

userQuery.offset(required): number
Parâmetro para paginação. Padrão: 0.

userQuery.limit(required): number
Parâmetro para paginação. Padrão: 30.

userQuery.sortOrder(required): string
Ordem de classificação "DESC" | "ASC". Padrão: "DESC".

userQuery.sortKey(required): string
Campo para classificação (padrão - null). Valores possíveis: "id", "posição", "título", "data", "preço". Padrão: null.

userQuery.signPrice: string
Sinal de preço. Padrão: null.

userQuery.templateMarker: string | null
Marcador de template da página do produto, padrão null.
exemplo: "template_12345"

userQuery.statusMarker: string | null
Marcador de status da página do produto, padrão null.
exemplo: "em_estoque"

userQuery.conditionValue: string | null
O valor que está sendo pesquisado, padrão null.
exemplo: "novo"

userQuery.attributeMarker: string | null
O identificador de texto do atributo indexado pelo qual os valores são filtrados, padrão null.
exemplo: "cor"

userQuery.conditionMarker: string | null
Marcador da condição de filtro pela qual os valores são filtrados, padrão null.
exemplo: "igual"

userQuery.langCode: string
Código do idioma. Padrão: "en_US".

userQuery.ids: string
Lista de ids de produtos separados por vírgula — usada por getProductsByIds.
exemplo: "1,2,3"

Por padrão, você pode recuperar 10 objetos. Isso se deve ao limite de registro nas configurações de permissões do módulo.
Para que a paginação funcione corretamente, você precisa configurar as Permissões do módulo de acordo com suas necessidades na seção correspondente.

💲 signPrice bloqueia o preço retornado por um tempo limitado — defina-o como seu marcador de armazenamento de pedidos. Veja Fixando o preço (signPrice).

Exemplos

Exemplo mínimo

const response = await Products.getProducts();

Exemplo com parâmetro body


const body = [
{
"attributeMarker": "preço",
"conditionMarker": "mth",
"statusMarker": "aguardando",
"conditionValue": 1,
"pageUrls": [
"23-laminat-floorwood-maxima"
],
"isNested": false,
"title": ""
},
{
"attributeMarker": "preço",
"conditionMarker": "lth",
"conditionValue": 3,
"pageUrls": [
"23-laminat-floorwood-maxima"
],
"isNested": false,
"title": ""
}
];

const response = await Products.getProducts(body);

Use filtros para encontrar produtos específicos:

attributeMarker: O identificador de texto do atributo indexado pelo qual os valores são filtrados. conditionMarker: O tipo de condição a ser aplicada ao valor do atributo.

MarcadorSignificadoExemplo
eqIgualstatusId = 1 (apenas ativo)
neqNão igualcategoria ≠ "arquivado"
inContém (um dos)categoria in ["eletrônicos", "livros"]
ninNão contémmarca não in ["marca_falsa"]
exsExiste (tem valor)Tem descrição
nexsNão existeSem imagem

conditionValue: O valor a ser comparado.

Exemplo de resposta

{
"items": [
{
"id": 3445,
"localizeInfos": {
"title": "Subscription"
},
"isVisible": true,
"isSync": true,
"sku": null,
"price": 150,
"additional": {
"prices": {
"min": 51,
"max": 180
}
},
"categories": [
"catalog"
],
"statusIdentifier": "sale",
"statusLocalizeInfos": {
"title": "Sale"
},
"templateIdentifier": null,
"shortDescTemplateIdentifier": "product_preview",
"attributeValues": {
"price": {
"type": "integer",
"value": 150,
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"currency_products": {
"type": "string",
"value": "USD",
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
}
},
"attributeSetIdentifier": "subscription",
"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": 590,
"ratingCalculation": "average",
"allowHalfRatings": null,
"maxRatingScale": null,
"isAnonymous": null,
"allowRerating": null,
"isRating": null,
"entityFormDataCount": {
"2954": 590
},
"nestedEntityIdentifiers": [
"catalog"
],
"exceptionIds": []
}
],
"discountConfig": {}
},
{
"id": 2960,
"localizeInfos": {
"title": "Percent split"
},
"isVisible": true,
"isSync": true,
"sku": null,
"price": 180,
"additional": {
"prices": {
"min": 51,
"max": 180
}
},
"categories": [
"catalog"
],
"statusIdentifier": "sale",
"statusLocalizeInfos": {
"title": "Sale"
},
"templateIdentifier": null,
"shortDescTemplateIdentifier": "product_preview",
"attributeValues": {
"s0": {
"type": "float",
"value": 180,
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"s1": {
"type": "float",
"value": 60,
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"s2": {
"type": "float",
"value": 40,
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "",
"isIcon": false,
"position": 3,
"additionalFields": {},
"isProductPreview": false
}
},
"attributeSetIdentifier": "percent_split",
"isPositionLocked": false,
"position": 2,
"rating": {},
"paymentStages": [
{
"title": "s1",
"value": 108,
"marker": "s1"
},
{
"title": "s2",
"value": 72,
"marker": "s2"
}
],
"moduleFormConfigs": [
{
"id": 12,
"formIdentifier": "review",
"moduleIdentifier": "catalog",
"isGlobal": false,
"isClosed": false,
"isModerate": false,
"viewOnlyMyData": false,
"commentOnlyMyData": false,
"entityIdentifiers": [
{
"id": "catalog",
"isNested": true
}
],
"formDataCount": 590,
"ratingCalculation": "average",
"allowHalfRatings": null,
"maxRatingScale": null,
"isAnonymous": null,
"allowRerating": null,
"isRating": null,
"entityFormDataCount": {
"2954": 590
},
"nestedEntityIdentifiers": [
"catalog"
],
"exceptionIds": []
}
],
"discountConfig": {}
},
{
"id": 2959,
"localizeInfos": {
"title": "Split"
},
"isVisible": true,
"isSync": true,
"sku": null,
"price": 120,
"additional": {
"prices": {
"min": 51,
"max": 180
}
},
"categories": [
"catalog"
],
"statusIdentifier": "sale",
"statusLocalizeInfos": {
"title": "Sale"
},
"templateIdentifier": null,
"shortDescTemplateIdentifier": "product_preview",
"attributeValues": {
"p": {
"type": "float",
"value": 120,
"isIcon": false,
"position": 0,
"additionalFields": {},
"isProductPreview": false
},
"p1": {
"type": "float",
"value": 40,
"isIcon": false,
"position": 1,
"additionalFields": {},
"isProductPreview": false
},
"p2": {
"type": "float",
"value": 60,
"isIcon": false,
"position": 2,
"additionalFields": {},
"isProductPreview": false
},
"p3": {
"type": "float",
"value": 20,
"isIcon": false,
"position": 3,
"additionalFields": {},
"isProductPreview": false
},
"currency": {
"type": "string",
"value": "usd",
"isIcon": false,
"position": 4,
"additionalFields": {},
"isProductPreview": false
}
},
"attributeSetIdentifier": "test",
"isPositionLocked": false,
"position": 3,
"rating": {},
"paymentStages": [
{
"title": "p1",
"value": 40,
"marker": "p1"
},
{
"title": "p2",
"value": 60,
"marker": "p2"
},
{
"title": "p3",
"value": 20,
"marker": "p3"
}
],
"moduleFormConfigs": [
{
"id": 12,
"formIdentifier": "review",
"moduleIdentifier": "catalog",
"isGlobal": false,
"isClosed": false,
"isModerate": false,
"viewOnlyMyData": false,
"commentOnlyMyData": false,
"entityIdentifiers": [
{
"id": "catalog",
"isNested": true
}
],
"formDataCount": 590,
"ratingCalculation": "average",
"allowHalfRatings": null,
"maxRatingScale": null,
"isAnonymous": null,
"allowRerating": null,
"isRating": null,
"entityFormDataCount": {
"2954": 590
},
"nestedEntityIdentifiers": [
"catalog"
],
"exceptionIds": []
}
],
"discountConfig": {}
},
"..."
],
"total": 6
}

Esquema de resposta

Esquema: IProductsResponse

total: number
O número total de produtos encontrados.
exemplo: 100

items: IProductsEntity[]
Um array de entidades de produto.
exemplo:

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

items.id: number
O identificador único.
exemplo: 12345

items.localizeInfos: ILocalizeInfo
O nome dos produtos, levando em conta a localização.
exemplo:

{}

items.statusIdentifier: string | null
Identificadores de status da página do produto (podem ser nulos).
exemplo: "em_estoque"

items.statusLocalizeInfos: ILocalizeInfo
Nome de status localizado para o produto.
exemplo:

{ "title": "Sale" }

items.attributeSetIdentifier: string | null
Conjunto de ids de atributos.
exemplo: "set_12345"

items.position: number
Número do item (para classificação).
exemplo: 1

items.price: number | null
O valor do preço da página do produto retirado do índice.
exemplo: 150.00

items.additional: object
Valor adicional do índice.
exemplo:

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

items.sku: string | null
SKU do produto (Unidade de Manutenção de Estoque), pode ser nulo.
exemplo: "SKU_12345"

items.isSync: boolean
Indicação de indexação da página.
exemplo: true

items.attributeValues: IAttributeValues
Array de valores de atributos do índice, representados.
exemplo:

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

items.categories: string[]
Categorias de produtos.
exemplo:

[
1,
2,
3
]

items.isVisible: boolean
Um sinal de visibilidade da página.
exemplo: true

items.moduleFormConfigs: Array<IFormConfig>
Configurações de formulário do módulo (opcional).

items.rating: IRating
Dados de classificação.

items.isPositionLocked: boolean
Indicador de bloqueio de posição de classificação (opcional).
exemplo: false

items.relatedIds: number[]
Ids de páginas de produtos relacionadas.
exemplo:

[
12345,
67890
]

items.paymentStages: unknown
Dados das etapas de pagamento (podem ser nulos).
exemplo: null

items.distance: number
Distância de relevância da busca vetorial (semântica). Presente apenas nos resultados da busca vetorial.
exemplo: 0.42

items.discountConfig: Record<string, unknown>
Objeto de configuração de desconto.
exemplo:

{}

items.templateIdentifier: string | null
Id do usuário do template vinculado.
exemplo: "template_12345"

items.shortDescTemplateIdentifier: string | null
Id do usuário do template vinculado para uma descrição curta.
exemplo: "short_desc_template_12345"

items.signedPrice: string
Sinal de preço.

items.productPages: IProductPageRef[]
Array de referências de páginas de produtos ligando o produto às suas páginas.
exemplo:

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

items.blocks: string[]
Array de identificadores de bloco.
exemplo:

[
"block_12345",
"block_67890"
]

🔒 signedPrice é o token assinado que carrega o preço bloqueado — passe-o de volta quando você criar um pedido. Veja Preço fixo do produto (signedPrice).


Exemplos de uso

Passo a passo na documentação:

  • Filtrar por atributos — filtre produtos por um valor de atributo usando marcadores de condição (eq, neq, in, mth, lth, etc.).
  • Faixa de preço — restrinja produtos a uma faixa de preço específica com filtros mth / lth.

Experimente ao vivo

Execute este método interativamente no sandbox do JS SDK — conecte sua URL do Projeto e Token do App na primeira visita, depois abra:

  • Filtrar por atributos — filtre produtos por um valor de atributo usando marcadores de condição (eq, neq, in, mth, lth, etc.).
  • Faixa de preço — restrinja produtos a uma faixa de preço específica com filtros mth / lth.