Ponto de entrada principal. Retorna todos os dados de uma loja: produtos, categorias, seções, menus, configurações e ferramentas de marketing.
| Argumento | Tipo | Descrição |
|---|---|---|
| hostname | String! | Hostname da loja (obrigatório). |
Retorna um ClientType com os seguintes campos:
| Campo | Tipo | Descrição |
|---|---|---|
| id | ID! | ID global Relay da loja. |
| store | Store | Informações da loja (nome, imagem, contato). |
| products | ProductConnection | Lista 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. |
| autocompleteProducts | AutocompleteProductsResponse | Resultados de autocomplete para busca. Aceita term. |
| adBar | AdBar | Barra 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. |
| publicPaymentGateway | PublicPaymentGateway | Gateway de pagamento (chave pública). |
| privacyPolicy | String | Política de privacidade (HTML). |
| termsOfUse | String | Termos de uso (HTML). |
| pageElements | [PageElement] | Elementos de página personalizados. Aceita pageType. |
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 }
}
} {
"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 }
]
}
}
} 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 -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 } } } } }"}'