Requiply
SDK de TypeScript

Uso en el navegador y en el servidor

Qué métodos del SDK puede llamar una tienda online desde el navegador con una clave publicable, cuáles van en un servidor con una clave secreta y cómo conectar ambos en Next.js o Nuxt.

Llamadas desde el navegador y la tienda online

Una clave publicable puede ejecutar estos métodos directamente desde el navegador:

  • org.info()
  • categories.list(), services.list(), inventory.list(), inventory.getGroup()
  • availability.calendar(), availability.items(), pricing.quote()
  • bookings.create({ ..., asRequest: true })
  • saleItems.list(), saleItems.get() y saleLines en los presupuestos y las solicitudes de reserva, mientras la organización vende a los clientes

La API pública acepta peticiones del navegador desde cualquier origen, así que no hay que registrar ningún dominio. Por sí solo, el SDK solo envía las cabeceras Authorization, Accept y Content-Type. Si añades cabeceras personalizadas, los navegadores bloquean la petición; consulta Opciones de petición.

Llamadas desde el servidor

Usa una clave secreta desde un servidor de confianza para:

  • org.summary(), inventory.status()
  • Reservas normales: bookings.create() sin asRequest, bookings.list(), bookings.get(), bookings.addNote()
  • clients.lookup(), clients.create()
  • sales.list(), sales.get(), sales.create()
  • Todos los informes
  • adjustment y allowOutsideWorkingHours en las reservas, y los productos de subalquiler de proveedores

Las claves secretas van en variables de entorno del servidor. No les pongas un prefijo que exponga sus valores a los paquetes del navegador, como NEXT_PUBLIC_ o NUXT_PUBLIC_.

Frameworks

Usa @requiply/api-sdk directamente. Una configuración habitual crea dos clientes:

// lib/requiply.ts
import { RequiplyClient } from '@requiply/api-sdk';

// Safe to ship to the browser.
export const storefront = new RequiplyClient({
  apiKey: 'rq_pk_live_...',
});

// Import only from server code: route handlers, server actions, Nuxt server/ routes.
export const createServerClient = () =>
  new RequiplyClient({ apiKey: process.env.REQUIPLY_SECRET_KEY! });

Pon el cliente de servidor en un módulo que solo importe el código de servidor. Si, aun así, se crea un cliente con clave secreta en un navegador, el SDK lanza un TypeError en lugar de enviar la clave.

Pasarelas de pago

bookings.create() y sales.create() aceptan payOnPickup, stripe, wayforpay, monobank y liqpay. Un método online necesita una integración de pagos activa para esa pasarela; en ese caso, la respuesta incluye un paymentUrl al que enviar al cliente (las reservas también devuelven paymentRedirect, que puede ser un envío de formulario).

supportedPaymentMethods en org.info() y org.summary() lista payOnPickup y las integraciones conectadas de monobank, liqpay y wayforpay, pero no Stripe, aunque esté conectado. El SDK tipa el campo con todos los métodos de pago para que tu código siga funcionando cuando se añada Stripe.
Copyright © 2026