API

Lee y actualiza los datos del programa de fidelización desde tu propio backend con la API GraphQL externa de Gibbond: inscribe a miembros, asigna y canjea puntos, y sincroniza la actividad de cualquier canal.

En esta página
⚡

Requiere el plan Pro. La API externa está disponible con el plan Pro. Para activarla, cambia de plan en Plans & billing, en el panel de administración de Gibbond.

🚀

¿Es la primera vez que usas la API? La guía de integración incluye ejemplos prácticos listos para copiar y pegar: llamadas desde tu backend, integración en una app móvil o web y asignación de puntos desde otro canal de venta. Esta página contiene la referencia completa del esquema.

La API tiene un único endpoint de GraphQL. Envía una solicitud POST con un cuerpo JSON que incluya tu query (o mutación) y, de forma opcional, variables:

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

Todas las marcas de tiempo son cadenas ISO-8601 y todos los ID son GID de Shopify (por ejemplo, gid://shopify/Customer/123), salvo que se indique lo contrario. Los puntos son números enteros.

Autenticación

Cada solicitud incluye una credencial en el encabezado Authorization. Hay dos tipos de credenciales para situaciones distintas.

Claves de API (lado del servidor)

Las claves de API identifican tu backend. Créala en la página API keys del panel de Gibbond y asígnale un ámbito (READ, WRITE o ADMIN). La clave se muestra una sola vez al crearla y tiene un aspecto similar a glk_live_…. Envíala como token bearer:

Authorization: Bearer glk_live_xxxxxxxxxxxxxxxxxxxx
⚠️

Solo en el servidor. Una clave de API puede leer y modificar los datos de todos los miembros; nunca la expongas en un navegador, una app móvil ni en otro cliente que no controles. Guárdala en una variable de entorno del servidor y renuévala desde el panel si queda expuesta.

Tokens de cliente (lado del cliente)

Para llamar a la API desde una interfaz destinada a los clientes, como un widget de la tienda o una aplicación móvil, genera un token de cliente desde tu backend con la mutación mintCustomerToken y pásaselo al cliente. Los tokens de cliente son de corta duración y están vinculados a un único cliente: solo permiten consultar los datos de ese cliente y realizar acciones en su nombre. La consulta me devuelve el cliente asociado al token, y redeemReward permite que ese cliente canjee una recompensa sin una clave de comerciante; por eso, el token se puede enviar al navegador de forma segura.

Authorization: Bearer <customer token>

Permisos

El ámbito de una clave de API determina qué operaciones puede ejecutar. Los permisos son acumulativos.

PermisoPermisos concedidos
READTodas las consultas (saldos, historial, recompensas, niveles y configuración).
WRITETodo lo incluido en READ, más las mutaciones para inscribir miembros, asignar puntos positivos, canjear recompensas, confirmar puntos y crear tokens de cliente.
ADMINTodo lo incluido en WRITE, más la recuperación de puntos (clawbackPoints) y los ajustes negativos mediante awardPoints (un valor negativo en points).
ℹ️

Usa el permiso mínimo necesario: una clave READ para análisis, una WRITE para acumular y canjear puntos, y reserva ADMIN para gestionar reembolsos y correcciones.

Límites de solicitudes

Cada credencial (clave de API o token de cliente) tiene un límite de 600 solicitudes por minuto. Si lo superas, la API devuelve el estado HTTP 429 con un encabezado Retry-After que indica cuántos segundos debes esperar antes de volver a intentarlo.

Consultas

Para realizar consultas, necesitas una clave con permiso READ como mínimo o un token de cliente, que solo puede leer los datos de ese cliente.

ConsultaArgumentosResultado / descripción
me—El cliente asociado a un token de cliente. Devuelve un error si se usa con una clave de API de comerciante.
customerid: ID!Un cliente identificado por su GID.
customersids: [ID!]!Consulta por lotes de clientes mediante sus GID (clave de comerciante, READ).
customerByEmailemail: String!Buscar un cliente por su dirección de correo electrónico (clave de comerciante, READ).
rewards—Catálogo de recompensas canjeables de la tienda.
tiers—Niveles VIP de la tienda (slug, nombre, umbral y multiplicador).
shopConfig—Configuración del programa: nombre, moneda, puntos por unidad de moneda, modo de confirmación, niveles y recompensas.
pointHistorycustomerId: ID!, limit: IntMovimientos de puntos de un cliente, del más reciente al más antiguo.
activeCodescustomerId: ID!Códigos de descuento sin usar de un cliente (canjes y ventajas de nivel).
referralcustomerId: ID!Código de recomendación del cliente y recuento de invitados, recomendaciones válidas y recompensas.
totalLiability—Total de puntos pendientes de canje de toda la tienda, expresado como número entero (clave de comerciante, READ).

Mutaciones

Las mutaciones requieren una clave WRITE, salvo que se indique lo contrario. Las operaciones ADMIN están señaladas.

MutaciónArgumentosResultado / descripción
enrollCustomercustomerId: ID!, email: StringInscribir a un cliente en el programa de fidelización (WRITE). Devuelve CustomerResult.
awardPointscustomerId: ID!, points: Int!, reason: String, idempotencyKey: StringAsignar o ajustar puntos. Un valor negativo de points requiere ADMIN; idempotencyKey evita duplicados al reintentar. Devuelve PointResult.
awardPointsForOrderinput: OrderInput!Asignar puntos por un pedido realizado en otro canal; se aplican el multiplicador de nivel, los boosts y los hitos. orderId permite repetir la solicitud sin duplicar los puntos (WRITE). Devuelve PointResult.
redeemRewardcustomerId: ID!, rewardId: ID!Canjear una recompensa por un código de descuento de un solo uso (WRITE o un token de cliente para ese mismo cliente). Devuelve RedeemResult.
confirmPointscustomerId: ID!, orderId: IDConfirmar los puntos pendientes de un cliente, por ejemplo, tras preparar el pedido (WRITE). Devuelve el total de puntos confirmados.
clawbackPointscustomerId: ID!, orderId: ID!, refundAmount: Float!, orderTotal: Float!, refundId: IDRevertir puntos tras un reembolso (ADMIN). Devuelve el total de puntos revertidos.
mintCustomerTokencustomerId: ID!, ttlSeconds: IntCrear un token de corta duración asociado a un cliente para usar en el lado del cliente (WRITE / ADMIN). Devuelve un CustomerToken con el campo expiresAt.
ℹ️

awardPointsForOrder recibe un OrderInput con orderId, customerId, customerEmail y orderName opcionales, y una lista de lineItems. Cada artículo puede incluir productId y collectionIds opcionales, además de lineTotal. Así, los boosts y las exclusiones por producto y colección se aplican igual que en los pedidos nativos de Shopify.

Ejemplo de solicitud

Consulta el saldo y el nivel de un cliente con una clave de API del lado del 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 error

Los errores siguen la convención de GraphQL: un array errors de nivel superior, con cada entrada incluyendo un code en extensions y el estado HTTP correspondiente.

CódigoHTTPSignificado
UNAUTHENTICATED401Credencial ausente, mal formada o caducada.
FORBIDDEN403La credencial es válida, pero no tiene el permiso necesario para esta operación.
RATE_LIMITED429Límite de solicitudes superado; vuelve a intentarlo después del tiempo indicado en Retry-After.
BAD_USER_INPUT400Argumentos no válidos: GID incorrecto, falta un campo obligatorio o un valor está fuera del rango permitido.
NOT_FOUND404El cliente, la recompensa u otro recurso indicado no existe.