تخطَّ إلى المحتوى

SDK وCLI

يوزّع exoCortex ثلاثة عملاء لـ REST API v1. تنزّلونها مباشرة من الـ API وتضيفونها إلى مشروعكم:

العميل العنوان المتطلبات
JavaScript https://exocortex-api.ai-exo-cortex.com/sdk/exocortex.js بيئة تشغيل تدعم fetch، مثل Node.js 18 أو أحدث
Python https://exocortex-api.ai-exo-cortex.com/sdk/exocortex.py الحزمة requests
CLI bash https://exocortex-api.ai-exo-cortex.com/sdk/exo-cli curl وjq

تقرأ جميعها مفتاح API الذي تمرّرونه إليها؛ ولا يحفظه أيٌّ منها. وتُنشئ تلقائيًا Idempotency-Key عند فتح تذكرة.

import { ExoClient, ExoApiError } from './exocortex.js';
const exo = new ExoClient({ apiKey: process.env.EXO_API_KEY });
try {
const created = await exo.tickets.create({
subject: 'Printer offline',
description: 'Floor 2, room 204',
priority: 'Medium',
});
const { ticket } = await exo.tickets.get(created.ticket_key);
await exo.tickets.comment(ticket.key, 'Toner replaced.');
} catch (err) {
if (err instanceof ExoApiError && err.code === 'rate_limited') {
// أعيدوا المحاولة بعد err.retryAfter ثانية
} else throw err;
}

يوفّر ExoApiError الخصائص status وcode وretryAfter، ومتن الاستجابة في body.

import os
from exocortex import ExoClient, ExoApiError
exo = ExoClient(api_key=os.environ['EXO_API_KEY'])
try:
created = exo.tickets.create(subject='Printer offline', description='Floor 2, room 204')
ticket = exo.tickets.get(created['ticket_key'])['ticket']
exo.tickets.comment(ticket['key'], 'Toner replaced.')
except ExoApiError as err:
print(err.status, err.code, err.retry_after)
نافذة طرفيّة
curl -fsSL https://exocortex-api.ai-exo-cortex.com/sdk/exo-cli -o exo-cli && chmod +x exo-cli
export EXO_API_KEY='nhk.<keyid>.<secret>'
./exo-cli ticket-create "Printer offline" "Floor 2, room 204" Medium
./exo-cli ticket-get ACME-1042
./exo-cli ticket-comment ACME-1042 "Toner replaced."

باستخدام EXO_BASE_URL توجّهون CLI إلى عنوان آخر للـ API.

الصنفان NHClient وNHError اسمان بديلان مُهمَلان لـ ExoClient وExoApiError. ترسل SDK الجديدة المفتاح في Authorization: Bearer ولم تعد ترسل المستأجر (tenant)، الذي تستنتجه الـ API من المفتاح. وقد أُزيلت الأداتان المساعدتان widgets وmapping.