Acesso Comercial / Docs / Storefront / API
Ctrl K
QUERY

client

Ponto de entrada principal. Retorna todos os dados de uma loja: produtos, categorias, seções, menus, configurações e ferramentas de marketing.

Argumentos

ArgumentoTipoDescrição
hostnameString!Hostname da loja (obrigatório).

Retorno

Retorna um ClientType com os seguintes campos:

CampoTipoDescrição
idID!ID global Relay da loja.
storeStoreInformações da loja (nome, imagem, contato).
productsProductConnectionLista paginada de produtos. Aceita first, search, category, sort, section, menu, groups.
sections[Section]Seções customizáveis da homepage.
menus[Menu]Menus de navegação configurados.
categories[Category]Categorias de produtos.
featuredProducts[Product]Produtos em destaque.
homeProductsByCategory[Product]Produtos agrupados por categoria para a homepage.
autocompleteProductsAutocompleteProductsResponseResultados de autocomplete para busca. Aceita term.
adBarAdBarBarra de anúncios com mensagens rotativas.
timers[Timer]Timers/contagens regressivas.
indicators[Indicator]Indicadores/badges de produtos.
cashDiscounts[CashDiscount]Descontos à vista (PIX).
discountModals[DiscountModal]Modais de desconto configurados.
socialProofEvents[SocialProofEvent]Eventos de prova social. Aceita productIds.
funnels[Funnel]Funis de upsell configurados.
publicPaymentGatewayPublicPaymentGatewayGateway de pagamento (chave pública).
privacyPolicyStringPolítica de privacidade (HTML).
termsOfUseStringTermos de uso (HTML).
pageElements[PageElement]Elementos de página personalizados. Aceita pageType.

Query

GraphQL
query GetStore($hostname: String!) {
  client(hostname: $hostname) {
    store {
      name
      image { url }
      contact { email phone whatsapp }
    }
    products(first: 12) {
      edges {
        node {
          id
          title
          price
          discountPercentage
          images { url }
          availableQuantity
        }
      }
      pageInfo { hasNextPage endCursor }
    }
    menus { id title items { title href } }
    categories { id name show }
  }
}

Resposta

JSON
{
  "data": {
    "client": {
      "store": {
        "name": "Minha Loja",
        "image": { "url": "https://..." },
        "contact": {
          "email": "loja@email.com",
          "phone": "(11) 99999-9999",
          "whatsapp": "5511999999999"
        }
      },
      "products": {
        "edges": [
          {
            "node": {
              "id": "UHJvZHVjdDphYmMx",
              "title": "Camiseta Premium",
              "price": 8990,
              "discountPercentage": 15,
              "images": [{ "url": "https://..." }],
              "availableQuantity": 42
            }
          }
        ],
        "pageInfo": {
          "hasNextPage": true,
          "endCursor": "Y3Vyc29yMTI="
        }
      },
      "menus": [
        {
          "id": "menu1",
          "title": "Principal",
          "items": [
            { "title": "Início", "href": "/" }
          ]
        }
      ],
      "categories": [
        { "id": "Q2F0ZWdvcnk6YWJj", "name": "Roupas", "show": true }
      ]
    }
  }
}

Fetch

JavaScript
const response = await fetch(
  '/graphql',
  {
    method: 'POST',
    credentials: 'include',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      query: `query GetStore($hostname: String!) {
        client(hostname: $hostname) {
          store { name image { url } }
          products(first: 12) {
            edges { node { id title price } }
          }
        }
      }`,
      variables: { hostname: "minha-loja" }
    })
  }
);
const data = await response.json();

cURL

Bash
curl -X POST https://minha-loja.com/graphql \
  -H "Content-Type: application/json" \
  -d '{"query":"query { client(hostname: \"minha-loja\") { store { name } products(first: 12) { edges { node { id title price } } } } }"}'