API

Leia e atualize os dados do programa de fidelidade pelo seu próprio backend com a API GraphQL externa da Gibbond: inscreva membros, conceda e resgate pontos e sincronize atividades de qualquer canal.

Nesta página
⚡

Requer o plano Pro. A API externa está disponível no plano Pro. Para ativá-la, faça upgrade em Plans & billing no admin do Gibbond.

🚀

É a primeira vez que usa a API? O guia de integração traz exemplos práticos para copiar e colar: chamadas pelo backend, integração em um app para celular ou web e concessão de pontos por outro canal de venda. Esta página contém a referência completa do esquema.

A API tem um único endpoint GraphQL. Envie uma solicitação POST com um corpo JSON contendo sua query (ou mutação) e, opcionalmente, variables:

POST https://app.gibbond.com/api/v1/graphql

Todos os registros de data e hora são strings ISO-8601 e todos os IDs são GIDs da Shopify (por exemplo, gid://shopify/Customer/123), salvo indicação em contrário. Os pontos são números inteiros.

Autenticação

Cada solicitação inclui uma credencial no cabeçalho Authorization. Há dois tipos de credenciais para situações diferentes.

Chaves de API (lado do servidor)

As chaves de API identificam seu backend. Crie-as na página API keys do admin da Gibbond, onde cada chave recebe um escopo (READ, WRITE ou ADMIN). A chave é exibida apenas uma vez, durante a criação, e tem um formato semelhante a glk_live_…. Envie-a como um token bearer:

Authorization: Bearer glk_live_xxxxxxxxxxxxxxxxxxxx
⚠️

Somente no servidor. Uma chave de API pode ler e alterar os dados de todos os membros, por isso nunca deve ser exposta em um navegador, app para celular ou qualquer cliente que você não controle. Armazene-a em uma variável de ambiente do servidor; se ela for exposta, revogue a chave e gere uma nova pelo admin.

Tokens de cliente (lado do cliente)

Para chamar a API em uma interface voltada aos clientes, como um widget da loja ou um app para celular, gere um token de cliente pelo seu backend com a mutation mintCustomerToken e repasse-o ao cliente. Os tokens de cliente têm curta duração e são vinculados a um único cliente: cada solicitação só pode consultar os dados desse cliente e executar ações em seu nome. A query me retorna o cliente associado ao token, e redeemReward permite que ele resgate uma recompensa sem uma chave de lojista; assim, o token pode ser enviado ao navegador com segurança.

Authorization: Bearer <customer token>

Escopos

O escopo de uma chave de API determina quais operações ela pode executar. Os escopos são cumulativos.

EscopoPermissões
READTodas as consultas (saldos, histórico, recompensas, níveis e configuração).
WRITETudo o que está incluído em READ, além de mutations para inscrever membros, conceder pontos positivos, resgatar recompensas, confirmar pontos e gerar tokens de cliente.
ADMINTudo o que está incluído em WRITE, além de estornar pontos (clawbackPoints) e fazer ajustes negativos por meio de awardPoints (com um valor negativo em points).
ℹ️

Use o menor escopo necessário: uma chave READ para análises, uma chave WRITE para acumular e resgatar pontos e ADMIN apenas para fluxos de reembolso e correção.

Limites de requisições

Cada credencial (chave de API ou token de cliente) tem um limite de 600 solicitações por minuto. Ao exceder esse limite, a API retorna o status HTTP 429 e um cabeçalho Retry-After que informa quantos segundos aguardar antes de tentar novamente.

Consultas

As consultas exigem uma chave com escopo READ ou superior, ou um token de cliente, que só pode acessar os dados do próprio cliente.

ConsultaArgumentosRetorno / descrição
me—O cliente associado ao token. Retorna erro quando chamado com uma chave de API do lojista.
customerid: ID!Um cliente identificado pelo GID.
customersids: [ID!]!Consulta em lote de clientes por GID (chave do lojista, READ).
customerByEmailemail: String!Buscar um cliente pelo endereço de e-mail (chave do lojista, READ).
rewards—Catálogo de recompensas resgatáveis da loja.
tiers—Níveis VIP da loja (slug, nome, limite e multiplicador).
shopConfig—Configuração do programa: nome, moeda, pontos por unidade monetária, modo de confirmação, níveis e recompensas.
pointHistorycustomerId: ID!, limit: IntEventos de pontos do cliente, do mais recente para o mais antigo.
activeCodescustomerId: ID!Códigos de desconto não usados pelo cliente (resgates e benefícios de nível).
referralcustomerId: ID!Código de indicação do cliente e totais de pessoas convidadas, indicações qualificadas e recompensas concedidas.
totalLiability—Total de pontos pendentes em toda a loja, como número inteiro (chave do lojista, READ).

Mutações

As mutations exigem uma chave WRITE, salvo indicação em contrário; as operações ADMIN estão identificadas.

MutaçãoArgumentosRetorno / descrição
enrollCustomercustomerId: ID!, email: StringInscrever um cliente no programa de fidelidade (WRITE). Retorna CustomerResult.
awardPointscustomerId: ID!, points: Int!, reason: String, idempotencyKey: StringConceder ou ajustar pontos. Um valor negativo em points exige ADMIN; idempotencyKey evita duplicidade em novas tentativas. Retorna PointResult.
awardPointsForOrderinput: OrderInput!Conceder pontos por um pedido feito em outro canal, usando o multiplicador de nível, os boosts e os marcos. orderId torna a operação idempotente (WRITE). Retorna PointResult.
redeemRewardcustomerId: ID!, rewardId: ID!Resgatar uma recompensa por um código de desconto de uso único (WRITE ou token do próprio cliente). Retorna RedeemResult.
confirmPointscustomerId: ID!, orderId: IDConfirmar os pontos pendentes de um cliente, por exemplo, após o processamento do pedido (WRITE). Retorna a quantidade de pontos confirmados.
clawbackPointscustomerId: ID!, orderId: ID!, refundAmount: Float!, orderTotal: Float!, refundId: IDEstornar pontos após um reembolso (ADMIN). Retorna a quantidade de pontos estornados.
mintCustomerTokencustomerId: ID!, ttlSeconds: IntGerar um token de curta duração vinculado ao cliente para uso no lado do cliente (WRITE / ADMIN). Retorna um CustomerToken com o campo expiresAt.
ℹ️

awardPointsForOrder recebe um OrderInput com orderId, customerId, customerEmail e orderName opcionais, além de uma lista de lineItems. Cada item pode incluir productId e collectionIds opcionais e lineTotal. Assim, os boosts e as exclusões por produto e coleção são aplicados como nos pedidos nativos do Shopify.

Exemplo de requisição

Consulte o saldo e o nível de um cliente usando uma chave de API no servidor:

curl https://app.gibbond.com/api/v1/graphql \
  -X POST \
  -H "Authorization: Bearer glk_live_xxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "query($id: ID!) { customer(id: $id) { email balance pending lifetime tier { name multiplier } } }",
    "variables": { "id": "gid://shopify/Customer/123456789" }
  }'

Códigos de erro

Os erros seguem a convenção GraphQL: um array errors no nível superior, com cada entrada contendo um code em extensions e o status HTTP correspondente.

CódigoHTTPSignificado
UNAUTHENTICATED401Credencial ausente, malformada ou expirada.
FORBIDDEN403A credencial é válida, mas não tem o escopo necessário para esta operação.
RATE_LIMITED429Limite de requisições excedido; tente novamente após o intervalo indicado em Retry-After.
BAD_USER_INPUT400Argumentos inválidos — GID incorreto, campo obrigatório ausente ou valor fora do intervalo permitido.
NOT_FOUND404O cliente, a recompensa ou outro recurso indicado não existe.