انتقل إلى المحتوى الرئيسي

Qumra SDK

The @qumra/app-sdk is the official SDK for building Qumra apps. It handles authentication, API requests, webhook verification, and session management.

Installation

npm install @qumra/app-sdk

Initialization

Create a server-side module to initialize the SDK. This file should be placed at app/qumra.server.ts:

app/qumra.server.ts
import { prisma } from "prisma/lib/prisma";
import QumraClient from "@qumra/app-sdk";

const Qumra = new QumraClient({
apiKey: process.env.QUMRA_API_KEY as string,
secretKey: process.env.QUMRA_API_SECRET as string,
sessionStorage: prisma,
});

export default Qumra;
export const authenticate = Qumra.authenticate;
Server-only

This file must only be imported on the server side. The .server.ts suffix ensures React Router excludes it from the client bundle.

QumraClient

The QumraClient class is the main entry point for the SDK. It accepts a configuration object with the following options:

const client = new QumraClient({
apiKey: string, // Your app's API key (client_id)
secretKey: string, // Your app's secret key (client_secret)
sessionStorage: SessionStorage, // Prisma client instance
});

Properties

PropertyTypeDescription
apiKeystringYour app's API key, also known as the client_id.
secretKeystringYour app's secret key, also known as client_secret.
sessionStorageSessionStorageA Prisma client instance used to persist sessions.
authenticateobjectObject containing authentication methods.

What the SDK Handles

The SDK takes care of the most common tasks when building a Qumra app:

  • OAuth 2.0 authentication flows -- handles redirects, token exchange, and session creation automatically.
  • GraphQL client creation with access tokens -- provides a pre-authenticated admin.graphql() method.
  • Webhook HMAC signature verification -- validates incoming webhook requests to ensure they originate from Qumra.
  • Session persistence and management -- stores and retrieves sessions using your Prisma database.
  • Request validation (bot detection, iframe verification) -- protects your app from unauthorized access.
  • Error handling with typed exceptions -- provides structured error types for common failure scenarios.

Next Steps