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) વાપરતું રિમોટ MCP સર્વર પણ https://mcp.nibomo.com/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(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 શેડ્યૂલમાં સાચવવા દે છે. તે MCP પુનરાવર્તન ટૂલ જેવા જ JSON આર્ગ્યુમેન્ટ લે છે:
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"
}'
લોકો માટેની અને સિંક API
Nibomo માં લોકો વાપરે તેવા ક્લાયન્ટ અને ઑફલાઇન-ફર્સ્ટ સિંક માટે અલગ API પણ છે, પણ તે બાહ્ય એજન્ટ માટેનો મુખ્ય કરાર નથી:
- બ્રાઉઝર ફ્લો સહિયારા ડોમેનની કૂકીઝ અને CSRF સુરક્ષા વાપરે છે
- ઑફલાઇન-ફર્સ્ટ ક્લાયન્ટ
/v1/workspaces/{workspaceId}/sync/pushઅને/v1/workspaces/{workspaceId}/sync/pullહેઠળ અમલમાં મુકાયેલા સિંક રૂટ વાપરે છે - સિંક રૂટ બાહ્ય એજન્ટ ઇન્ટરફેસથી અલગ છે