API సూచిక
అవలోకనం
ఈ పేజీ Nibomo కోసం ప్రస్తుత బాహ్య AI-ఏజెంట్ కాంట్రాక్ట్ను వివరిస్తుంది.
మీ క్లయింట్ MCP ను సపోర్ట్ చేస్తే, కనెక్ట్ కావడానికి MCP కనెక్టర్ అత్యంత సులభమైన మార్గం; అది ఇదే డేటా ఇంటర్ఫేస్పై ఆధారపడి పనిచేస్తుంది. ఈ పేజీ CLI ఏజెంట్లు వాడే HTTP డిస్కవరీ, SQL, గైడ్, పునశ్చరణ కాంట్రాక్ట్ను వివరిస్తుంది.
అధికారిక డిస్కవరీ ఎంట్రీ పాయింట్ నుంచి మొదలుపెట్టండి:
GET https://api.nibomo.com/v1/
ఇదే డిస్కవరీ పేలోడ్ GET /v1/agent వద్ద కూడా అందుబాటులో ఉంది, కానీ ప్రధాన పబ్లిక్ ఎంట్రీ పాయింట్ /v1/.
డిస్కవరీ రెస్పాన్స్ ఏజెంట్కు ఇవి ఎలా చేయాలో చెబుతుంది:
- ఈమెయిల్ OTP లాగిన్ మొదలుపెట్టడం
- OTP ని దీర్ఘకాల API కీగా మార్చుకోవడం
- ఖాతా సందర్భాన్ని లోడ్ చేయడం
- వర్క్స్పేస్ను సృష్టించడం లేదా ఎంచుకోవడం
- ప్రచురించిన SQL ఇంటర్ఫేస్ ద్వారా కొనసాగడం
- రిఫరెన్స్ గైడ్లను పొందడం, కార్డులను ఒక్కొక్కటిగా పునశ్చరణ చేయడం
రన్టైమ్ డిస్కవరీ, సోర్స్
OpenAPI అందుబాటులో లేదు. కింద ఉన్న నాలుగు పాత స్పెసిఫికేషన్ URLలు ఇప్పుడు స్కీమాకు బదులుగా "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'\''"
}'
OAuth 2.1 (Dynamic Client Registration + PKCE) తో https://mcp.nibomo.com/mcp వద్ద రిమోట్ 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); ఒక కాల్లో అన్నీ రీడ్లే ఉండాలి, లేదా అన్నీ రైట్లే ఉండాలి. SQLreview_eventsను గానీ FSRS షెడ్యూలింగ్ స్థితిని గానీ రాయలేదు;POST /v1/agent/reviews/submit(MCPsubmit_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 షెడ్యూల్లో సేవ్ చేయగలదు. ఇవి MCP పునశ్చరణ టూల్స్ తీసుకునే JSON ఆర్గ్యుమెంట్లనే తీసుకుంటాయి:
POST /v1/agent/reviews/nextఅనేదిcardId,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: ఏదైనా ఆర్గ్యుమెంట్ లేదు, చెల్లదు లేదా దానికి మద్దతు లేదు;tagsనుdeckIdతో కలిపి పంపడం, లేదా వర్క్స్పేస్ వాడని ట్యాగ్ కూడా ఇందులోకే వస్తాయి.
సమర్పణకు ఉదాహరణ:
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"
}'
మనుషుల కోసం, సింక్ కోసం APIలు
Nibomo లో మనుషులు వాడే క్లయింట్ల కోసం, ఆఫ్లైన్-ఫస్ట్ సింక్ కోసం వేర్వేరు APIలు కూడా ఉన్నాయి, కానీ అవి బాహ్య ఏజెంట్లకు ప్రధాన కాంట్రాక్ట్ కాదు:
- బ్రౌజర్ ఫ్లోలు ఉమ్మడి డొమైన్ కుకీలతో పాటు CSRF రక్షణను వాడతాయి
- ఆఫ్లైన్-ఫస్ట్ క్లయింట్లు
/v1/workspaces/{workspaceId}/sync/push,/v1/workspaces/{workspaceId}/sync/pullకింద అమలు చేసిన సింక్ రూట్లను వాడతాయి - సింక్ రూట్లు బాహ్య ఏజెంట్ ఇంటర్ఫేస్ నుంచి వేరుగా ఉంటాయి