SDK TypeScript
Memasang dan memakai @nyaur/sdk, client bertipe untuk REST API /v1.
@nyaur/sdk adalah client TypeScript untuk API /v1. Tanpa dependency runtime, berjalan di Node 18+, Bun, Deno, Cloudflare Workers, dan browser (tetap simpan token di server).
Instalasi
bun add @nyaur/sdk
# atau
npm install @nyaur/sdkQuickstart
import { createClient, NyaurApiError } from "@nyaur/sdk";
const nyaur = createClient({
baseUrl: "https://api.nyaur.id",
token: process.env.NYAUR_TOKEN!,
});
const product = await nyaur.products.create({
name: "Kelas Copywriting",
status: "active",
prices: [{ type: "fixed", amount: 250_000, recurring: "one_time" }],
});
const checkout = await nyaur.checkouts.create({
productId: product.id,
customerEmail: "pembeli@example.com",
locale: "id",
});
console.log(checkout.total); // rupiah bulat, sudah termasuk PPN
try {
await nyaur.orders.get("ord_tidak_ada");
} catch (error) {
if (error instanceof NyaurApiError) {
console.error(error.status, error.type, error.message);
}
}Resource
| Resource | Method |
|---|---|
products | list, create, get, update, remove (mengarsipkan) |
checkouts | create, get |
orders | list, get |
customers | list, create, get |
webhooks | list, create, get, update, remove, deliveries, process |
events | list, replay |
deliveries | replay |
tokens | create, list, revoke |
Method list menerima { limit, offset } dan mengembalikan { data, meta }. Method lain mengembalikan objeknya langsung.
Webhook
const endpoint = await nyaur.webhooks.create({
url: "https://contoh.id/webhooks/nyaur",
events: ["checkout.paid", "order.paid"],
});
console.log(endpoint.secret); // nyaur_whsec_..., hanya muncul sekaliSDK tidak memverifikasi tanda tangan. Pakai contoh di Webhooks.
Error
Respons non-2xx melempar NyaurApiError dengan status, type, dan message. Pada 429, tunggu sesuai header Retry-After. Batas: 300 permintaan per menit per organisasi.
Mode
Mode (sandbox atau live) mengikuti token. Lihat Sandbox vs live.
Mock fetch
Opsi fetch memungkinkan menyuntikkan implementasi sendiri, misalnya untuk tes:
const nyaur = createClient({
baseUrl: "https://api.nyaur.id",
token: "nyaur_oat_test",
fetch: async () =>
new Response(JSON.stringify({ data: { id: "prd_1" } }), { status: 200 }),
});