Catálogo GraphQL
v2.1
QUERYproducts

Listar produtos

Retorna produtos do catálogo com paginação estilo Relay (first + after). Combine com o argumento category para filtrar por coleção. Selecione apenas os campos que a interface realmente usa para reduzir o payload.

Argumentos

NomeTipoObrigatórioDescrição
firstInt!simQuantidade de produtos a retornar. Máximo 50.
afterStringnãoCursor de paginação retornado em pageInfo.endCursor.
categoryStringnãoSlug da categoria: vestuario, acessorios ou casa.
inStockBooleannãoQuando true, retorna apenas produtos com estoque disponível.
Operação
query ListarProdutos($first: Int!, $category: String) {
  products(first: $first, category: $category, inStock: true) {
    edges {
      node {
        id
        name
        slug
        priceCents
        stock
        category {
          name
        }
      }
    }
    pageInfo {
      endCursor
      hasNextPage
    }
  }
}
Variables
{
  "first": 10,
  "category": "vestuario"
}
Response
{
  "data": {
    "products": {
      "edges": [
        {
          "node": {
            "id": "prod_c2VydGFv",
            "name": "Camiseta Sertão",
            "slug": "camiseta-sertao",
            "priceCents": 8990,
            "stock": 34,
            "category": { "name": "Vestuário" }
          }
        },
        {
          "node": {
            "id": "prod_bWFuZ3Vl",
            "name": "Moletom Mangue",
            "slug": "moletom-mangue",
            "priceCents": 19990,
            "stock": 12,
            "category": { "name": "Vestuário" }
          }
        }
      ],
      "pageInfo": {
        "endCursor": "Y3Vyc29yOjI=",
        "hasNextPage": true
      }
    }
  }
}
curl -X POST "https://api.catalogo.dev/graphql" \
  -H "Authorization: Bearer $CATALOGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "query ListarProdutos($first: Int!) { products(first: $first) { edges { node { id name priceCents } } } }",
    "variables": { "first": 10 }
  }'
Made with Vibe