Referenca API
Pregled
Ta stran opisuje trenutno pogodbo za zunanje agente AI v Nibomo.
Če vaš odjemalec podpira MCP, je povezovalnik MCP najpreprostejši način povezave in ovija isti podatkovni vmesnik. Ta stran opisuje pogodbo HTTP za odkrivanje, SQL, vodnike in ponavljanje, ki jo uporabljajo agenti CLI.
Začnite pri kanonični vstopni točki za odkrivanje:
GET https://api.nibomo.com/v1/
Isti odgovor za odkrivanje je na voljo tudi na GET /v1/agent, vendar je /v1/ glavna javna vstopna točka.
Odgovor za odkrivanje agentu pove, kako:
- začeti prijavo z enkratno kodo po e-pošti
- zamenjati enkratno kodo za dolgotrajni ključ API
- naložiti kontekst računa
- ustvariti ali izbrati delovni prostor
- nadaljevati prek objavljenega vmesnika SQL
- pridobiti referenčne vodnike in ponavljati kartice eno po eno
Odkrivanje med izvajanjem in izvorna koda
OpenAPI ni na voljo. Štirje nekdanji URL-ji specifikacije spodaj zdaj namesto sheme vrnejo isto obvestilo za odkrivanje v obliki JSON z "openapiAvailable": false:
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
Za trenutno odkrivanje med izvajanjem uporabite GET https://api.nibomo.com/v1/. Za poti med izvajanjem sledite vrnjenemu docs.discoveryUrl, za podrobnosti izvedbe pa docs.source.agentRoutesUrl.
Začetna nastavitev preverjanja pristnosti
Začetna nastavitev z enkratno kodo poteka v storitvi za preverjanje pristnosti:
POST https://auth.nibomo.com/api/agent/send-codePOST https://auth.nibomo.com/api/agent/verify-code
Potek je takšen:
- Pokličite
GET /v1/. - E-poštni naslov uporabnika pošljite na
send-code. - Iz odgovora preberite
otpSessionToken. - Uporabnika prosite za najnovejšo 8-mestno kodo iz e-pošte.
- Pokličite
verify-codescode,otpSessionTokeninlabel. - Vrnjeni ključ API shranite zunaj pomnilnika klepeta.
Priporočena okoljska spremenljivka:
export FLASHCARDS_OPEN_SOURCE_API_KEY="fca_ABCDEFGH_0123456789ABCDEFGHJKMNPQRS"
Zahteve s preverjeno pristnostjo uporabljajo:
Authorization: ApiKey <key>
Primer zaporedja začetne nastavitve:
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"
}'
Vmesnik za agente po prijavi
Po preverjanju je trenutni vmesnik za agente takšen:
GET /v1/agent/meGET /v1/agent/workspacesPOST /v1/agent/workspacesPOST /v1/agent/workspaces/{workspaceId}/selectPOST /v1/agent/sql/query(samo branje)POST /v1/agent/sql/execute(pisanje)GET /v1/agent/guide/{topic}(samo branje)POST /v1/agent/reviews/next(samo branje)POST /v1/agent/reviews/reveal(samo branje)POST /v1/agent/reviews/submit(pisanje)
Običajna začetna nastavitev je videti tako:
GET /v1/agent/meGET /v1/agent/workspaces?limit=100- Po potrebi
POST /v1/agent/workspacesz{"name":"Personal"} - Po potrebi
POST /v1/agent/workspaces/{workspaceId}/select - Za branje uporabite
POST /v1/agent/sql/query, za pisanje paPOST /v1/agent/sql/execute
Izbira delovnega prostora je izrecna za vsako povezavo s ključem API. Agenti naj namesto ugibanja naslednjega koraka sledijo vrnjenemu besedilu instructions in docs.discoveryUrl za poti med izvajanjem ter docs.source.agentRoutesUrl za podrobnosti izvedbe.
Poti za SQL in ponavljanje v telesu JSON sprejmejo tudi neobvezen workspaceId. Z njim posamezen klic usmerite v ta delovni prostor, ne da bi spremenili izbiro; če ga izpustite, se uporabi izbrani delovni prostor. Če delovni prostor ni izbran in workspaceId ni podan, poti odgovorijo s 409 WORKSPACE_SELECTION_REQUIRED.
Vmesnik SQL
POST /v1/agent/sql/query je vmesnik strogo samo za branje (SHOW TABLES, DESCRIBE, SHOW COLUMNS, SELECT), POST /v1/agent/sql/execute pa je vmesnik za pisanje (INSERT, UPDATE, DELETE); en klic mora vsebovati samo branja ali samo pisanja.
Namenoma je omejen in ni celoten PostgreSQL. Ta dokumentacija zajema samo podprto narečje, ni pa referenca za združljivost s PostgreSQL.
Nobena bralna pot ne popravlja podatkov, ne preračunava razporeda in ne spreminja stanja kartic. Za
vsako pisanje kartic in kompletov uporabite POST /v1/agent/sql/execute. SQL ne more pisati v
review_events ali stanje razporejanja FSRS; ponovitve zabeležite prek
POST /v1/agent/reviews/submit.
Trenutno podprte vrste stavkov:
SHOW TABLESDESCRIBE <resource>SHOW COLUMNS FROM <resource>SELECTINSERTUPDATEDELETE
Objavljeni logični viri trenutno vključujejo:
workspacecardsdecksreview_events
Opombe:
LIMITje privzeto100in je omejen na100- uporabite
ORDER BY, kadar potrebujete stabilno ostranjevanje - za odkrivanje sheme uporabite
SHOW TABLESaliDESCRIBE cards - vsak klic SQL je omejen na en delovni prostor:
workspaceIdv telesu ali izbrani delovni prostor
Primer zahteve:
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"}'
Primer poizvedbe po karticah:
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"
}'
Primer spremembe:
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'\''"
}'
Na voljo je tudi oddaljeni strežnik MCP na https://mcp.nibomo.com/mcp, ki uporablja OAuth 2.1 (Dynamic Client Registration + PKCE). Ponuja enako delitev SQL na sql_query (strogo samo branje) in sql_execute (pisanje), poleg tega pa še list_workspaces, get_guide in orodja za ponavljanje next_review_card, reveal_answer in submit_review; oglejte si povezovalnik MCP.
Varnost in obseg
Vmesnik SQL je omejeno narečje, ki ga uveljavlja razčlenjevalnik, in ne neposreden dostop do PostgreSQL. Varovala so:
- Zaprt seznam dovoljenih stavkov: za branje samo
SHOW TABLES,DESCRIBE,SHOW COLUMNSinSELECT, za pisanje paINSERT,UPDATEinDELETE. Vse drugo je zavrnjeno že pri razčlenjevanju. - Omejeni viri: stavki lahko dostopajo samo do virov
workspace,cards,decksinreview_events. - Omejitev na delovni prostor: vsak stavek je omejen na en delovni prostor, do katerega imate dostop, bodisi na
workspaceIdv telesu zahteve bodisi na izbrani delovni prostor, brez dostopa do drugih najemnikov. - Stroga telesa zahtev: poti za SQL in ponavljanje zavrnejo neznano polje v telesu, zato napačno črkovan
workspaceIdpovzroči napako, namesto da bi se stavek izvedel nad izbranim delovnim prostorom. - Omejitve: največ
100vrstic na stavek, največ50stavkov na paket in omejitev rezultata na približno12kžetonov. Paketi sprememb se uveljavijo atomarno. - Ločitev branja in pisanja:
sql_queryinlist_workspacessta strogo samo za branje (readOnlyHint) in nikoli ne popravljata podatkov, ne preračunavata razporeda in ne spreminjata stanja kartic.sql_executeje edino orodje SQL za pisanje in izvaja pisanja (destructiveHint); en klic mora vsebovati samo branja ali samo pisanja. SQL ne more pisati vreview_eventsali stanje razporejanja FSRS; ponovitev zabeleži samoPOST /v1/agent/reviews/submit(v MCPsubmit_review).
Vodniki
GET /v1/agent/guide/{topic} v data.guide vrne en referenčni vodnik, isto vsebino, kot jo vrača orodje MCP get_guide. Teme:
sql_dialect: celotna slovnica SQL, omejitve in primericard_authoring: pogodba za kartice, oznake, preverjanje dvojnikov in oblikovanjebulk_authoring: razdelitev in preverjanje obsežnega opravila pisanjareview_flow: zanka ponavljanja in ocenjevanja
Za neznano temo je odgovor 400 s seznamom podprtih tem. Preden ustvarjate kartice, množično pišete ali začnete ponavljanje, pridobite ustrezni vodnik, po zavrnjenem stavku pa znova preberite sql_dialect.
curl https://api.nibomo.com/v1/agent/guide/sql_dialect \
-H "Authorization: ApiKey $FLASHCARDS_OPEN_SOURCE_API_KEY"
Ponavljanje
Poti za ponavljanje agentu omogočajo, da učenca sprašuje kartico za kartico in vsako oceno shrani v razpored FSRS kartice. Sprejmejo enake argumente JSON kot orodja MCP za ponavljanje:
POST /v1/agent/reviews/nextvrnecardscardIdinfrontTextalicard: null, ko ni na vrsti nobena kartica. Neobveznitags(katera koli od oznak) alideckIdzoži čakalno vrsto, nikoli oba hkrati; zahteva brez telesa je veljavna.POST /v1/agent/reviews/revealzahtevacardIdin vrnebackTextte kartice.POST /v1/agent/reviews/submitzahtevacardId, UUIDreviewId, ustvarjen v odjemalcu,ratingz vrednostjoAgain,Hard,GoodaliEasyin učenčevreviewedTimeZonepo IANA. Strežnik zabeleži čas ponovitve in vrne nov razpored kartice, vključno zdueAt,state,repsinlapses.
Vse tri poti sprejmejo neobvezen workspaceId. Pred oddajo shranite reviewId, oddajo, za katero niste prepričani, ali je uspela, pa ponovite z enako zahtevo; druge ponovitve to nikoli ne zabeleži. Poti za ponavljanje lahko odgovorijo tudi s:
409 REVIEW_EVENT_CONFLICT: ponovitev je že zabeležena,error.details.reviewSchedulepa vsebuje trenutni razpored kartice.409 REVIEW_ID_CARD_MISMATCH:reviewIdže označuje ponovitev druge kartice, zato ni bilo nič shranjeno; oddajte znova z novimreviewId.409 REVIEW_STALE: shranjeni čas ponovitve kartice je enak trenutnemu času strežnika ali poznejši; ponavljajte drugo kartico.400 REVIEW_INPUT_INVALID: argument manjka, je neveljaven ali ni podprt, vključno s primerom, ko statagsindeckIdpodana skupaj, ali z oznako, ki je delovni prostor ne uporablja.
Primer oddaje:
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-ji za ljudi in sinhronizacijo
Nibomo vključuje tudi ločene API-je za človeške odjemalce in sinhronizacijo za delo brez povezave, vendar to ni glavna pogodba za zunanje agente:
- postopki v brskalniku uporabljajo piškotke v skupni domeni in zaščito CSRF
- odjemalci, zasnovani za delo brez povezave, uporabljajo izvedene poti za sinhronizacijo pod
/v1/workspaces/{workspaceId}/sync/pushin/v1/workspaces/{workspaceId}/sync/pull - poti za sinhronizacijo so ločene od vmesnika za zunanje agente