عميل صغير بلا اعتماديات لواجهة GREM البرمجية. يعمل في Node 18+ وفي المتصفحات الحديثة (يستخدم fetch العام وWeb Crypto).
التثبيت
هو ملف واحد - بلا خطوة بناء وبلا اعتماديات. نزّله وضعه في مشروعك:
بداية سريعة
import { GremClient } from './grem';
const grem = new GremClient({ apiKey: process.env.GREM_API_KEY });
const { estimate } = await grem.valuation.express({
propertyCategory: 'apartment',
totalArea: 50,
});
console.log(estimate.pricePoint, estimate.currency);
العنوان الأساسي افتراضيا هو https://developers.grem.capital/api/v1. وأنشئ المفتاح في اللوحة: أدوات الذكاء الاصطناعي ← API ← المفاتيح.
المهام في الخلفية
تعيد الأدوات الطويلة قيمة jobId. استعلم عن النتيجة (والاستعلام مجاني):
const { jobId } = await grem.content.generate({ /* ... */ });
const result = await grem.jobs.wait('content/generate', jobId);
الأخطاء
الردود خارج نطاق 2xx ترمي GremError (وفق RFC 7807):
import { GremError } from './grem';
try {
await grem.valuation.express({ propertyCategory: 'apartment' }); // missing totalArea
} catch (e) {
if (e instanceof GremError) console.error(e.status, e.detail, e.requestId);
}
الحياد التكراري
مرر مفتاح حياد تكراري لإعادة محاولة POST بأمان:
await grem.valuation.express(input, crypto.randomUUID());
Webhooks
تحقق من توقيع كل تسليم مقابل الجسم الخام:
import { verifyWebhookSignature } from './grem';
app.post('/grem-hook', express.raw({ type: 'application/json' }), async (req, res) => {
const raw = req.body.toString('utf8');
const ok = await verifyWebhookSignature(process.env.GREM_WEBHOOK_SECRET, req.get('x-grem-signature'), raw);
if (!ok) return res.status(400).send('invalid signature');
const event = JSON.parse(raw);
// handle event.type / event.data ...
res.sendStatus(200);
});
تقابل كل دالة نقطة نهاية واحدة في المستكشف التفاعلي. وانظر الطلبات الأساسية في بداية سريعة وWebhooks.