Acesso Comercial / Docs / Office / API
Ctrl K
QUERY

products

Lista produtos da loja com paginação. Requer permissão products:read.

Assinatura

query {
  products(ids: [ID!], count: Int, skip: Int): [Product]!

Parâmetros

CampoTipoObrigatórioDescrição
ids[ID!]NãoBuscar produtos específicos por IDs. Quando fornecido, ignora count e skip.
countIntNãoNúmero de produtos por página. Default: 50.
skipIntNãoNúmero de produtos a pular (offset). Default: 0.

Retorno

Retorna um array de objetos Product.

Modos de Uso

Listagem com Paginação

Use count e skip para navegar pelo catálogo:

// Página 1: primeiros 20 produtos
products(count: 20, skip: 0)

// Página 2: próximos 20 produtos
products(count: 20, skip: 20)

// Página 3: próximos 20 produtos
products(count: 20, skip: 40)

Busca por IDs

Para buscar produtos específicos, passe um array de IDs:

products(ids: [
  "UHJvZHVjdDo2MTIz...",
  "UHJvZHVjdDo0NTY3..."
])

Iterando Todo o Catálogo

async function getAllProducts() {
  const allProducts = [];
  let skip = 0;
  const count = 50;

  while (true) {
    const { products } = await officeApi(`
      query($count: Int!, $skip: Int!) {
        products(count: $count, skip: $skip) {
          id
          title
          price
          availableQuantity
        }
      }
    `, { count, skip });

    allProducts.push(...products);

    if (products.length < count) break;
    skip += count;
  }

  return allProducts;
}

Listar Produtos

GraphQL
query {
  products(count: 10, skip: 0) {
    id
    title
    price
    availableQuantity
    isActive
    images {
      url
    }
  }
}

Buscar por IDs

GraphQL
query {
  products(ids: [
    "UHJvZHVjdDo2MTIz..."
    "UHJvZHVjdDo0NTY3..."
  ]) {
    id
    title
    price
  }
}

Resposta

JSON
{
  "data": {
    "products": [
      {
        "id": "UHJvZHVjdDo2MTIz...",
        "title": "Camiseta Azul",
        "price": 49.90,
        "availableQuantity": 100,
        "isActive": true,
        "images": [{ "url": "..." }]
      }
    ]
  }
}