Documents

A query Documents retorna os documents de uma entidade, paginados por cursor, com no máximo 50 itens por página.

A paginação segue o padrão de conexões do Storefront API: os cursores (after/before) são a hash do document e a ordenação é crescente pelo identificador do document, ou seja, na ordem em que os documents foram criados.

A query também aceita filtros opcionais por identificador externo e por data de cadastro.

Parâmetros

ArgumentoTipoObrigatórioDescrição
entityNameStringSimNome da entidade. Não diferencia maiúsculas de minúsculas
firstIntSim*Quantidade de itens a retornar, a partir do início da página. Máximo de 50
lastIntSim*Quantidade de itens a retornar, a partir do fim da página. Máximo de 50. Exige before
afterStringNãoCursor de avanço: retorna os documents posteriores ao cursor informado
beforeStringNãoCursor de retorno: retorna os documents anteriores ao cursor informado
fields[String]NãoCampos a incluir no data. Quando omitido, retorna todos os campos públicos do document
externalIds[String]NãoFiltra pelos identificadores externos dos documents. Máximo de 50 valores
createdAt_gteStringNãoLimite inferior da data de cadastro, em UTC, inclusive
createdAt_lteStringNãoLimite superior da data de cadastro, em UTC, inclusive

*Informe first ou last — um dos dois é obrigatório.

❗️

Combinações inválidas de paginação

  • first e last juntos;
  • after e before juntos;
  • last sem before;
  • first com before;
  • last com after;
  • nem first nem last.
📘

Sobre o argumento fields

Os campos pedidos que não existirem no document — ou que não forem públicos — são retornados como null, e não omitidos. Quando fields é omitido, todos os itens da página são normalizados com o mesmo conjunto de campos, preenchendo com null os que faltarem em cada document.

Filtros

Os três filtros são opcionais e combinados entre si — e com os argumentos de paginação — por E (AND): o document precisa satisfazer todos os filtros informados para aparecer na página. Quando nenhum é enviado, a query se comporta exatamente como antes da introdução deles.

🚧

Reenvie os filtros a cada página

Os cursores carregam apenas a posição, não o critério. Pedir a página seguinte informando somente o after devolve uma consulta sem filtros, sem erro algum. Ao paginar um resultado filtrado, reenvie externalIds, createdAt_gte e createdAt_lte em todas as chamadas.

externalIds

Filtra pelo identificador que o document tem no sistema de origem da loja (externalId, definido na criação pela API Pública).

  • Aceita até 50 valores por chamada. Acima disso, a query retorna o erro WDC106;
  • Valores vazios ou compostos apenas de espaços em branco são descartados;
  • Documents sem identificador externo nunca são retornados quando o filtro é informado;
  • Um valor sem correspondência não é erro: ele simplesmente não traz resultado.
📘

O identificador externo é apenas critério de busca

O externalId não é exposto no nó retornado. Como ele é único entre os documents ativos da entidade, filtrar por um único valor devolve no máximo um document. Ao filtrar por vários valores, os documents retornados só podem ser distinguidos entre si se o próprio conteúdo do document publicar o identificador como campo público.

createdAt_gte e createdAt_lte

Delimitam a data de cadastro do document, interpretada em UTC e sempre inclusive. São strings — e não um escalar de data — justamente para preservar a diferença entre uma data pura e uma data com horário. São aceitos:

FormatoExemploInterpretação
Data pura2026-08-31Ver a regra do dia inteiro abaixo
Data com horário, sem fuso2026-08-31T10:30:00Assumida como UTC
Data com horário e sufixo Z2026-08-31T10:30:00ZUTC
Data com offset explícito2026-08-31T10:30:00-03:00Convertida para UTC (13:30:00 em UTC)
🚧

Data pura x data com horário

  • createdAt_gte como data pura considera o início daquele dia;
  • createdAt_lte como data pura cobre o dia inteiro — um document cadastrado em 2026-08-31T09:00:00Z entra no resultado de createdAt_lte: "2026-08-31";
  • createdAt_lte com horário vale pelo instante exato informado — o mesmo document não entra no resultado de createdAt_lte: "2026-08-31T00:00:00".

Um valor em formato não aceito — ou ambíguo entre culturas, como 31/08/2026 — retorna o erro WDC106, com o motivo na extensão detail.

Campos de retorno

CampoTipoDescrição
edges[DocumentValueNodeEdge]Itens da página, cada um com o cursor e o node
edges.cursorStringCursor do item, igual ao id do document
edges.node.idStringIdentificador do document, em hash
edges.node.dataAnyO document em JSON, com os campos públicos projetados
nodes[DocumentValueNode]Atalho para os nós da página, sem os cursores
pageInfo.hasNextPageBooleanIndica se existem documents após a página atual
pageInfo.hasPreviousPageBooleanIndica se existem documents antes da página atual
pageInfo.startCursorStringCursor do primeiro item da página. null quando a página é vazia
pageInfo.endCursorStringCursor do último item da página. null quando a página é vazia

Exemplo

query {
  documents(entityName: "ficha-tecnica", first: 2) {
    edges {
      cursor
      node {
        id
        data
      }
    }
    pageInfo {
      hasNextPage
      hasPreviousPage
      startCursor
      endCursor
    }
  }
}
Mostrar resposta
{
  "data": {
    "documents": {
      "edges": [
        {
          "cursor": "eyJFbnRpdHkiOiJEb2N1bWVudFZhbHVlIiwiSWQiOjQ1MDF9",
          "node": {
            "id": "eyJFbnRpdHkiOiJEb2N1bWVudFZhbHVlIiwiSWQiOjQ1MDF9",
            "data": {
              "sku": "ABC-123",
              "cor": "Azul"
            }
          }
        },
        {
          "cursor": "eyJFbnRpdHkiOiJEb2N1bWVudFZhbHVlIiwiSWQiOjQ1MDJ9",
          "node": {
            "id": "eyJFbnRpdHkiOiJEb2N1bWVudFZhbHVlIiwiSWQiOjQ1MDJ9",
            "data": {
              "sku": "DEF-456",
              "cor": "Preto"
            }
          }
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "hasPreviousPage": false,
        "startCursor": "eyJFbnRpdHkiOiJEb2N1bWVudFZhbHVlIiwiSWQiOjQ1MDF9",
        "endCursor": "eyJFbnRpdHkiOiJEb2N1bWVudFZhbHVlIiwiSWQiOjQ1MDJ9"
      }
    }
  }
}

Exemplo com after e fields

Para avançar para a próxima página, envie em after o endCursor da página anterior enquanto hasNextPage for true:

query {
  documents(
    entityName: "ficha-tecnica"
    first: 2
    after: "eyJFbnRpdHkiOiJEb2N1bWVudFZhbHVlIiwiSWQiOjQ1MDJ9"
    fields: ["sku", "custo"]
  ) {
    nodes {
      id
      data
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}
Mostrar resposta
{
  "data": {
    "documents": {
      "nodes": [
        {
          "id": "eyJFbnRpdHkiOiJEb2N1bWVudFZhbHVlIiwiSWQiOjQ1MDN9",
          "data": {
            "sku": "GHI-789",
            "custo": null
          }
        }
      ],
      "pageInfo": {
        "hasNextPage": false,
        "endCursor": "eyJFbnRpdHkiOiJEb2N1bWVudFZhbHVlIiwiSWQiOjQ1MDN9"
      }
    }
  }
}

No exemplo acima, custo retorna null porque a propriedade não é pública (publicView: false) na entidade.

Exemplo com filtros

Documents cadastrados em agosto de 2026 cujo identificador externo seja ERP-0001 ou ERP-0003:

query {
  documents(
    entityName: "ficha-tecnica"
    first: 10
    externalIds: ["ERP-0001", "ERP-0003"]
    createdAt_gte: "2026-08-01"
    createdAt_lte: "2026-08-31"
  ) {
    nodes {
      id
      data
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}
Mostrar resposta
{
  "data": {
    "documents": {
      "nodes": [
        {
          "id": "eyJFbnRpdHkiOiJEb2N1bWVudFZhbHVlIiwiSWQiOjQ1MDF9",
          "data": {
            "sku": "ABC-123",
            "cor": "Azul"
          }
        },
        {
          "id": "eyJFbnRpdHkiOiJEb2N1bWVudFZhbHVlIiwiSWQiOjQ1MDN9",
          "data": {
            "sku": "GHI-789",
            "cor": "Verde"
          }
        }
      ],
      "pageInfo": {
        "hasNextPage": false,
        "endCursor": "eyJFbnRpdHkiOiJEb2N1bWVudFZhbHVlIiwiSWQiOjQ1MDN9"
      }
    }
  }
}

Para pedir a página seguinte deste mesmo resultado, envie o endCursor em after e reenvie os três filtros.