API حوالہ
جائزہ
یہ صفحہ Nibomo کے لیے بیرونی AI ایجنٹس کے موجودہ معاہدے کی دستاویز ہے۔
اگر آپ کا کلائنٹ MCP استعمال کرتا ہے تو MCP کنیکٹر جڑنے کا سب سے آسان طریقہ ہے اور یہ اسی ڈیٹا سطح کو استعمال کرتا ہے۔ یہ صفحہ CLI ایجنٹس کے استعمال کردہ HTTP ڈسکوری، SQL، رہنما اور دہرائی کے معاہدے کی دستاویز ہے۔
باضابطہ ڈسکوری انٹری پوائنٹ سے شروع کریں:
GET https://api.nibomo.com/v1/
یہی ڈسکوری پے لوڈ GET /v1/agent پر بھی دستیاب ہے، لیکن /v1/ ہی بنیادی عوامی انٹری پوائنٹ ہے۔
ڈسکوری جواب ایجنٹ کو بتاتا ہے کہ کیسے:
- ای میل OTP لاگ اِن شروع کرے
- OTP کے بدلے طویل مدتی API کلید حاصل کرے
- اکاؤنٹ کا سیاق و سباق لوڈ کرے
- ورک اسپیس بنائے یا منتخب کرے
- شائع شدہ SQL سطح کے ذریعے آگے بڑھے
- حوالہ جاتی رہنما حاصل کرے اور کارڈز کی ایک ایک کر کے دہرائی کرے
رن ٹائم ڈسکوری اور سورس
OpenAPI دستیاب نہیں۔ نیچے دیے گئے چار سابقہ اسپیسیفکیشن URLs اب اسکیما کے بجائے "openapiAvailable": false کے ساتھ وہی JSON ڈسکوری نوٹس لوٹاتے ہیں:
https://api.nibomo.com/v1/agent/openapi.jsonhttps://api.nibomo.com/v1/agent/swagger.jsonhttps://api.nibomo.com/v1/openapi.jsonhttps://api.nibomo.com/v1/swagger.json
موجودہ رن ٹائم ڈسکوری کے لیے GET https://api.nibomo.com/v1/ استعمال کریں۔ رن ٹائم روٹس کے لیے لوٹایا گیا docs.discoveryUrl اور نفاذ کی تفصیلات کے لیے docs.source.agentRoutesUrl دیکھیں۔
تصدیق کی ابتدائی تیاری
OTP کے ذریعے ابتدائی تیاری تصدیق کی سروس پر ہوتی ہے:
POST https://auth.nibomo.com/api/agent/send-codePOST https://auth.nibomo.com/api/agent/verify-code
فلو یہ ہے:
GET /v1/کال کریں۔- صارف کی ای میل
send-codeکو بھیجیں۔ - جواب سے
otpSessionTokenپڑھیں۔ - صارف سے ای میل میں آنے والا تازہ ترین 8 ہندسوں کا کوڈ پوچھیں۔
code،otpSessionTokenاورlabelکے ساتھverify-codeکال کریں۔- لوٹائی گئی API کلید کو چیٹ کی یادداشت سے باہر محفوظ کریں۔
تجویز کردہ انوائرمنٹ ویری ایبل:
export FLASHCARDS_OPEN_SOURCE_API_KEY="fca_ABCDEFGH_0123456789ABCDEFGHJKMNPQRS"
تصدیق شدہ درخواستیں یہ استعمال کرتی ہیں:
Authorization: ApiKey <key>
ابتدائی تیاری کی مثال:
curl https://api.nibomo.com/v1/
curl -X POST https://auth.nibomo.com/api/agent/send-code \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com"}'
curl -X POST https://auth.nibomo.com/api/agent/verify-code \
-H "Content-Type: application/json" \
-d '{
"code":"12345678",
"otpSessionToken":"...",
"label":"Codex on MacBook"
}'
لاگ اِن کے بعد ایجنٹ کی سطح
تصدیق کے بعد ایجنٹ کی موجودہ سطح یہ ہے:
GET /v1/agent/meGET /v1/agent/workspacesPOST /v1/agent/workspacesPOST /v1/agent/workspaces/{workspaceId}/selectPOST /v1/agent/sql/query(صرف پڑھنے کے لیے)POST /v1/agent/sql/execute(لکھنے کے لیے)GET /v1/agent/guide/{topic}(صرف پڑھنے کے لیے)POST /v1/agent/reviews/next(صرف پڑھنے کے لیے)POST /v1/agent/reviews/reveal(صرف پڑھنے کے لیے)POST /v1/agent/reviews/submit(لکھنے کے لیے)
عام ابتدائی تیاری اس طرح ہوتی ہے:
GET /v1/agent/meGET /v1/agent/workspaces?limit=100- ضرورت ہو تو
{"name":"Personal"}کے ساتھPOST /v1/agent/workspaces - ضرورت ہو تو
POST /v1/agent/workspaces/{workspaceId}/select - پڑھنے کے لیے
POST /v1/agent/sql/queryاور لکھنے کے لیےPOST /v1/agent/sql/executeاستعمال کریں
ورک اسپیس کا انتخاب ہر API کلید کنکشن کے لیے واضح طور پر کیا جاتا ہے۔ ایجنٹس کو اگلے قدم کا اندازہ لگانے کے بجائے لوٹائے گئے instructions متن، رن ٹائم روٹس کے لیے docs.discoveryUrl اور نفاذ کی تفصیلات کے لیے docs.source.agentRoutesUrl کی پیروی کرنی چاہیے۔
SQL اور دہرائی کے روٹس JSON باڈی میں ایک اختیاری workspaceId بھی قبول کرتے ہیں۔ یہ انتخاب بدلے بغیر ایک کال کے لیے اس ورک اسپیس کو ہدف بناتا ہے؛ منتخب ورک اسپیس استعمال کرنے کے لیے اسے چھوڑ دیں۔ اگر نہ کوئی انتخاب ہو اور نہ workspaceId، تو یہ 409 WORKSPACE_SELECTION_REQUIRED لوٹاتے ہیں۔
SQL سطح
POST /v1/agent/sql/query سختی سے صرف پڑھنے والی سطح ہے (SHOW TABLES، DESCRIBE، SHOW COLUMNS، SELECT) اور POST /v1/agent/sql/execute لکھنے والی سطح ہے (INSERT، UPDATE، DELETE)؛ ایک کال میں یا تو سب پڑھنے کے بیانات ہوں یا سب لکھنے کے۔
یہ جان بوجھ کر محدود ہے اور مکمل PostgreSQL نہیں ہے۔ یہ دستاویزات صرف تعاون یافتہ ڈائلیکٹ کا احاطہ کرتی ہیں، PostgreSQL مطابقت کا حوالہ نہیں ہیں۔
پڑھنے کا کوئی بھی راستہ ڈیٹا کی مرمت نہیں کرتا، شیڈیولنگ کا دوبارہ حساب نہیں لگاتا اور کارڈ کی حالت نہیں بدلتا۔
کارڈز اور ڈیکس میں لکھنے کی ہر کارروائی کے لیے POST /v1/agent/sql/execute استعمال کریں۔ SQL نہ
review_events لکھ سکتا ہے اور نہ FSRS شیڈیولنگ کی حالت؛ دہرائیاں
POST /v1/agent/reviews/submit کے ذریعے درج کریں۔
بیانات کی موجودہ اقسام:
SHOW TABLESDESCRIBE <resource>SHOW COLUMNS FROM <resource>SELECTINSERTUPDATEDELETE
شائع شدہ منطقی وسائل میں فی الحال شامل ہیں:
workspacecardsdecksreview_events
نوٹس:
LIMITکی طے شدہ قدر100ہے اور زیادہ سے زیادہ حد بھی100ہے- مستحکم صفحہ بندی کے لیے
ORDER BYاستعمال کریں - اسکیما جاننے کے لیے
SHOW TABLESیاDESCRIBE cardsاستعمال کریں - ہر SQL کال ایک ورک اسپیس تک محدود ہوتی ہے: باڈی میں دیا گیا
workspaceId، یا منتخب ورک اسپیس
درخواست کی مثال:
curl -X POST https://api.nibomo.com/v1/agent/sql/query \
-H "Content-Type: application/json" \
-H "Authorization: ApiKey $FLASHCARDS_OPEN_SOURCE_API_KEY" \
-d '{"sql":"SHOW TABLES"}'
کارڈز کی کوئری کی مثال:
curl -X POST https://api.nibomo.com/v1/agent/sql/query \
-H "Content-Type: application/json" \
-H "Authorization: ApiKey $FLASHCARDS_OPEN_SOURCE_API_KEY" \
-d '{
"sql":"SELECT card_id, front_text, back_text, tags FROM cards ORDER BY updated_at DESC LIMIT 20 OFFSET 0"
}'
تبدیلی کی مثال:
curl -X POST https://api.nibomo.com/v1/agent/sql/execute \
-H "Content-Type: application/json" \
-H "Authorization: ApiKey $FLASHCARDS_OPEN_SOURCE_API_KEY" \
-d '{
"sql":"UPDATE cards SET back_text = '\''Updated answer'\'' WHERE card_id = '\''50b5b928-7f04-4cc8-878d-6cd0e8b98474'\''"
}'
https://mcp.nibomo.com/mcp پر OAuth 2.1 (Dynamic Client Registration + PKCE) کے ساتھ ایک ریموٹ MCP سرور بھی دستیاب ہے۔ یہ وہی SQL تقسیم sql_query (سختی سے صرف پڑھنے کے لیے) اور sql_execute (لکھنے کے لیے) کی صورت میں فراہم کرتا ہے، ساتھ ہی list_workspaces، get_guide اور دہرائی کے ٹولز next_review_card، reveal_answer اور submit_review بھی؛ دیکھیں MCP کنیکٹر۔
حفاظت اور دائرہ کار
SQL سطح خام PostgreSQL نہیں بلکہ ایک محدود ڈائلیکٹ ہے جس کی پابندی پارسر کرواتا ہے۔ حفاظتی حدود یہ ہیں:
- بیانات کی بند اجازت فہرست: پڑھنے کے لیے صرف
SHOW TABLES،DESCRIBE،SHOW COLUMNSاورSELECT، اور لکھنے کے لیےINSERT،UPDATEاورDELETE۔ اس کے علاوہ ہر چیز پارس کرتے وقت ہی مسترد ہو جاتی ہے۔ - محدود وسائل: بیانات صرف
workspace،cards،decksاورreview_eventsوسائل تک پہنچ سکتے ہیں۔ - فی ورک اسپیس دائرہ: ہر بیان ایک ایسے ورک اسپیس تک محدود ہوتا ہے جس تک آپ کی رسائی ہو، یعنی درخواست کی باڈی میں دیا گیا
workspaceIdیا آپ کا منتخب ورک اسپیس، اور کسی دوسرے ٹیننٹ تک کوئی رسائی نہیں ہوتی۔ - سخت درخواستی باڈیز: SQL اور دہرائی کے روٹس کسی نامعلوم باڈی فیلڈ کو مسترد کر دیتے ہیں، اس لیے غلط ہجے والا
workspaceIdمنتخب ورک اسپیس پر چلنے کے بجائے ناکام ہو جاتا ہے۔ - حدود: فی بیان زیادہ سے زیادہ
100قطاریں، فی بیچ زیادہ سے زیادہ50بیانات، اور نتیجے کی حد تقریباً12kٹوکنز۔ تبدیلی کے بیچ ایٹامک طور پر لاگو ہوتے ہیں۔ - پڑھنے اور لکھنے کی تقسیم:
sql_queryاورlist_workspacesسختی سے صرف پڑھنے کے لیے ہیں (readOnlyHint) اور کبھی ڈیٹا کی مرمت نہیں کرتے، شیڈیولنگ کا دوبارہ حساب نہیں لگاتے اور کارڈ کی حالت نہیں بدلتے۔sql_executeلکھنے والا واحد SQL ٹول ہے اور لکھنے کی کارروائیاں انجام دیتا ہے (destructiveHint)؛ ایک کال میں یا تو سب پڑھنے کے بیانات ہوں یا سب لکھنے کے۔ SQL نہreview_eventsلکھ سکتا ہے اور نہ FSRS شیڈیولنگ کی حالت؛ صرفPOST /v1/agent/reviews/submit(MCP میںsubmit_review) دہرائی درج کرتا ہے۔
رہنما
GET /v1/agent/guide/{topic} ایک حوالہ جاتی رہنما data.guide میں لوٹاتا ہے، وہی متن جو MCP کا get_guide ٹول فراہم کرتا ہے۔ موضوعات:
sql_dialect: مکمل SQL گرامر، حدود اور مثالیںcard_authoring: کارڈ کا معاہدہ، ٹیگز، ڈپلیکیٹس کی جانچ اور فارمیٹنگbulk_authoring: لکھنے کے بڑے کام کو حصوں میں بانٹنا اور اس کی جانچ کرناreview_flow: دہرائی اور درجہ بندی کا سلسلہ
نامعلوم موضوع پر 400 کے ساتھ تعاون یافتہ موضوعات کی فہرست لوٹائی جاتی ہے۔ کارڈز تیار کرنے، بڑی تعداد میں لکھنے یا دہرائی چلانے سے پہلے متعلقہ رہنما حاصل کریں، اور کوئی بیان مسترد ہونے کے بعد sql_dialect دوبارہ پڑھیں۔
curl https://api.nibomo.com/v1/agent/guide/sql_dialect \
-H "Authorization: ApiKey $FLASHCARDS_OPEN_SOURCE_API_KEY"
دہرائیاں
دہرائی کے روٹس ایجنٹ کو سیکھنے والے سے ایک وقت میں ایک کارڈ پوچھنے اور ہر درجہ بندی کو کارڈ کے FSRS شیڈیول میں محفوظ کرنے دیتے ہیں۔ یہ وہی JSON آرگیومنٹس لیتے ہیں جو MCP کے دہرائی کے ٹولز لیتے ہیں:
POST /v1/agent/reviews/nextcardIdاورfrontTextکے ساتھcardلوٹاتا ہے، یا جب کسی کارڈ کی دہرائی باقی نہ ہو توcard: null۔ اختیاریtags(ان میں سے کوئی بھی) یاdeckIdقطار کو محدود کرتا ہے، دونوں ایک ساتھ کبھی نہیں؛ باڈی کے بغیر درخواست بھی درست ہے۔POST /v1/agent/reviews/revealکے لیےcardIdلازمی ہے اور یہ اس کارڈ کاbackTextلوٹاتا ہے۔POST /v1/agent/reviews/submitکے لیےcardId، کلائنٹ کا بنایا ہواreviewIdUUID،Again،Hard،GoodیاEasyمیں سے ایکrating، اور سیکھنے والے کا IANAreviewedTimeZoneلازمی ہیں۔ سرور دہرائی کا وقت درج کرتا ہے اور کارڈ کا نیا شیڈیول لوٹاتا ہے، جس میںdueAt،state،repsاورlapsesشامل ہیں۔
تینوں روٹس اختیاری workspaceId قبول کرتے ہیں۔ جمع کرنے سے پہلے reviewId محفوظ کر لیں، اور اگر جمع ہونے کے بارے میں یقین نہ ہو تو بالکل وہی درخواست دوبارہ بھیجیں؛ اس سے کبھی دوسری دہرائی درج نہیں ہوتی۔ دہرائی کے روٹس یہ جوابات بھی دے سکتے ہیں:
409 REVIEW_EVENT_CONFLICT: دہرائی پہلے ہی درج ہو چکی ہے، اورerror.details.reviewScheduleمیں کارڈ کا موجودہ شیڈیول ہوتا ہے۔409 REVIEW_ID_CARD_MISMATCH: یہreviewIdپہلے ہی کسی دوسرے کارڈ کی دہرائی کی شناخت ہے، اس لیے کچھ محفوظ نہیں ہوا؛ نئےreviewIdکے ساتھ دوبارہ جمع کریں۔409 REVIEW_STALE: کارڈ کا محفوظ شدہ دہرائی کا وقت سرور کے موجودہ وقت کے برابر یا اس کے بعد کا ہے؛ کسی اور کارڈ کی دہرائی کریں۔400 REVIEW_INPUT_INVALID: کوئی آرگیومنٹ غائب، غلط یا غیر تعاون یافتہ ہے، جس میںdeckIdکے ساتھtagsدینا یا ایسا ٹیگ شامل ہے جو ورک اسپیس میں استعمال نہیں ہوتا۔
جمع کرانے کی مثال:
curl -X POST https://api.nibomo.com/v1/agent/reviews/submit \
-H "Content-Type: application/json" \
-H "Authorization: ApiKey $FLASHCARDS_OPEN_SOURCE_API_KEY" \
-d '{
"cardId":"693c4863-28a2-45e8-8f55-9fa31fc95ff2",
"reviewId":"429bb7cc-40fb-49f3-bb50-48a5db2826d1",
"rating":"Good",
"reviewedTimeZone":"Europe/Sofia"
}'
انسانوں اور ہم وقت سازی کے APIs
Nibomo میں انسانی کلائنٹس اور آف لائن فرسٹ ہم وقت سازی کے لیے الگ APIs بھی ہیں، لیکن یہ بیرونی ایجنٹس کے لیے بنیادی معاہدہ نہیں ہیں:
- براؤزر فلوز مشترکہ ڈومین کوکیز کے ساتھ CSRF تحفظ استعمال کرتے ہیں
- آف لائن فرسٹ کلائنٹس
/v1/workspaces/{workspaceId}/sync/pushاور/v1/workspaces/{workspaceId}/sync/pullکے تحت نافذ شدہ ہم وقت سازی کے روٹس استعمال کرتے ہیں - ہم وقت سازی کے روٹس بیرونی ایجنٹ کی سطح سے الگ ہیں