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

API Requests

After authentication, you can make requests to the Qumra Admin API using GraphQL or REST.

GraphQL Requests​

GraphQL is the primary way to interact with the Qumra Admin API. After authenticating, use the admin.graphql() method to execute queries and mutations.

Simple Query​

export async function loader({ request }: { request: Request }) {
const { admin } = await authenticate.admin(request);

const shop = await admin.graphql(`
query {
shop {
name
email
domain
}
}
`);

return Response.json(shop);
}

Query with Variables​

Pass variables as the second argument to admin.graphql():

const products = await admin.graphql(
`
query GetProducts($first: Int!) {
products(first: $first) {
edges {
node {
id
title
price
}
}
}
}
`,
{ first: 10 }
);

admin.graphql() Signature​

graphql<TResponse = unknown, TVariables = Record<string, unknown>>(
query: string,
variables?: TVariables
): Promise<TResponse>
ParameterTypeDescription
querystringA GraphQL query or mutation string.
variablesTVariablesOptional variables to pass into the query.

REST Requests​

For endpoints not available via GraphQL, you can use Qumra.fetch() to make standard HTTP requests.

GET Request​

import Qumra from "~/qumra.server";

const stores = await Qumra.fetch({
url: "https://api.qumra.cloud/v1/stores",
method: "GET",
headers: {
Authorization: `Bearer ${session.accessToken}`,
},
});

POST Request​

const result = await Qumra.fetch({
url: "https://api.qumra.cloud/v1/orders",
method: "POST",
body: {
items: [{ product_id: "123", quantity: 1 }],
},
headers: {
Authorization: `Bearer ${session.accessToken}`,
},
});

FetchRequestOptions Interface​

interface FetchRequestOptions<TVariables, TBody> {
url?: string;
method?: HttpMethod; // "GET" | "POST" | "PUT" | "PATCH" | "DELETE"
headers?: Record<string, string>;
query?: string;
variables?: TVariables;
body?: TBody;
timeout?: number; // Default: 30000ms
}
FieldTypeDescription
urlstringThe full URL of the API endpoint.
methodHttpMethodHTTP method: GET, POST, PUT, PATCH, DELETE.
headersRecord<string, string>Request headers (e.g. Authorization).
querystringOptional GraphQL query string.
variablesTVariablesOptional variables for the query.
bodyTBodyRequest body for POST, PUT, PATCH requests.
timeoutnumberRequest timeout in milliseconds. Default: 30000.
Prefer GraphQL

Prefer GraphQL over REST for most operations. The GraphQL API provides a strongly-typed schema with better querying capabilities.

Error Handling​

Both admin.graphql() and Qumra.fetch() will throw errors on failure. See the Error Handling guide for details on catching and handling API failures.