API-referenssi
Yleiskatsaus
Tällä sivulla kuvataan Nibomon nykyinen rajapintasopimus ulkoisille tekoälyagenteille.
Jos asiakassovelluksesi tukee MCP:tä, MCP-liitin on yksinkertaisin tapa yhdistää, ja se käyttää samaa datarajapintaa. Tällä sivulla kuvataan CLI-agenttien käyttämät HTTP-discovery-, SQL-, opas- ja kertausrajapinnat.
Aloita kanonisesta discovery-aloituspisteestä:
GET https://api.nibomo.com/v1/
Sama discovery-vastaus on saatavilla myös osoitteesta GET /v1/agent, mutta /v1/ on ensisijainen julkinen aloituspiste.
Discovery-vastaus kertoo agentille, miten se voi:
- aloittaa sähköpostin OTP-kirjautumisen
- vaihtaa OTP-koodin pitkäikäiseen API-avaimeen
- ladata tilin kontekstin
- luoda tai valita työtilan
- jatkaa julkaistun SQL-rajapinnan kautta
- hakea referenssioppaita ja kerrata kortteja yksi kerrallaan
Ajonaikainen discovery ja lähdekoodi
OpenAPI ei ole saatavilla. Alla olevat neljä aiempaa määrittelyn URL-osoitetta palauttavat nyt skeeman sijaan saman JSON-muotoisen discovery-ilmoituksen, jossa on "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
Hae ajantasaiset ajonaikaiset discovery-tiedot osoitteesta GET https://api.nibomo.com/v1/. Seuraa palautettua docs.discoveryUrl-osoitetta ajonaikaisia reittejä varten ja docs.source.agentRoutesUrl-osoitetta toteutuksen yksityiskohtia varten.
Tunnistautumisen alustus
OTP-alustus tapahtuu tunnistautumispalvelussa:
POST https://auth.nibomo.com/api/agent/send-codePOST https://auth.nibomo.com/api/agent/verify-code
Kulku on seuraava:
- Kutsu
GET /v1/. - Lähetä käyttäjän sähköpostiosoite reitille
send-code. - Lue vastauksesta
otpSessionToken. - Pyydä käyttäjältä viimeisin 8-numeroinen sähköpostikoodi.
- Kutsu
verify-codearvoillacode,otpSessionTokenjalabel. - Tallenna palautettu API-avain pysyvästi muualle kuin chatin muistiin.
Suositeltu ympäristömuuttuja:
export FLASHCARDS_OPEN_SOURCE_API_KEY="fca_ABCDEFGH_0123456789ABCDEFGHJKMNPQRS"
Tunnistautuneet pyynnöt käyttävät otsaketta:
Authorization: ApiKey <key>
Esimerkki alustuksen kulusta:
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"
}'
Agentin rajapinta kirjautumisen jälkeen
Vahvistuksen jälkeen agentin nykyinen rajapinta on:
GET /v1/agent/meGET /v1/agent/workspacesPOST /v1/agent/workspacesPOST /v1/agent/workspaces/{workspaceId}/selectPOST /v1/agent/sql/query(vain luku)POST /v1/agent/sql/execute(kirjoitus)GET /v1/agent/guide/{topic}(vain luku)POST /v1/agent/reviews/next(vain luku)POST /v1/agent/reviews/reveal(vain luku)POST /v1/agent/reviews/submit(kirjoitus)
Tyypillinen alustus näyttää tältä:
GET /v1/agent/meGET /v1/agent/workspaces?limit=100- Tarvittaessa
POST /v1/agent/workspacessisällöllä{"name":"Personal"} - Tarvittaessa
POST /v1/agent/workspaces/{workspaceId}/select - Käytä lukemiseen
POST /v1/agent/sql/queryja kirjoittamiseenPOST /v1/agent/sql/execute
Työtilan valinta tehdään erikseen kullekin API-avainyhteydelle. Agenttien kannattaa arvailun sijaan noudattaa palautettua instructions-tekstiä ja docs.discoveryUrl-osoitetta ajonaikaisten reittien osalta sekä docs.source.agentRoutesUrl-osoitetta toteutuksen yksityiskohtien osalta.
SQL- ja kertausreitit hyväksyvät JSON-rungossa myös valinnaisen workspaceId-kentän. Se kohdistaa yksittäisen kutsun kyseiseen työtilaan muuttamatta valintaa; jätä se pois, jos haluat käyttää valittua työtilaa. Jos valintaa ei ole eikä workspaceId-kenttää ole annettu, reitit vastaavat 409 WORKSPACE_SELECTION_REQUIRED.
SQL-rajapinta
POST /v1/agent/sql/query on tiukasti vain luku -rajapinta (SHOW TABLES, DESCRIBE, SHOW COLUMNS, SELECT), ja POST /v1/agent/sql/execute on kirjoitusrajapinta (INSERT, UPDATE, DELETE); yksittäisen kutsun on sisällettävä joko pelkkiä lukuja tai pelkkiä kirjoituksia.
Se on tarkoituksella rajattu eikä ole täysi PostgreSQL. Nämä ohjeet kattavat vain tuetun murteen, eivätkä ne ole PostgreSQL-yhteensopivuuden referenssi.
Mikään lukupolku ei korjaa dataa, laske ajoitusta uudelleen tai muuta kortin tilaa. Käytä
POST /v1/agent/sql/execute-reittiä kaikkiin korttien ja pakkojen kirjoituksiin. SQL ei voi kirjoittaa
review_events-tietoja tai FSRS-ajoitustilaa; tallenna kertaukset reitin
POST /v1/agent/reviews/submit kautta.
Nykyiset lausetyypit:
SHOW TABLESDESCRIBE <resource>SHOW COLUMNS FROM <resource>SELECTINSERTUPDATEDELETE
Julkaistuja loogisia resursseja ovat tällä hetkellä:
workspacecardsdecksreview_events
Huomioita:
LIMITon oletuksena100ja enintään100- käytä
ORDER BY-lauseketta, kun tarvitset vakaan sivutuksen - käytä skeeman selvittämiseen komentoa
SHOW TABLEStaiDESCRIBE cards - jokainen SQL-kutsu rajautuu yhteen työtilaan: joko rungossa annettuun
workspaceId-työtilaan tai valittuun työtilaan
Esimerkkipyyntö:
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"}'
Esimerkki korttikyselystä:
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"
}'
Esimerkki muutoksesta:
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'\''"
}'
Saatavilla on myös etä-MCP-palvelin osoitteessa https://mcp.nibomo.com/mcp, joka käyttää OAuth 2.1:tä (Dynamic Client Registration + PKCE). Se tarjoaa saman SQL-jaon työkaluina sql_query (tiukasti vain luku) ja sql_execute (kirjoitus) sekä lisäksi työkalut list_workspaces, get_guide ja kertaustyökalut next_review_card, reveal_answer ja submit_review; katso MCP-liitin.
Turvallisuus ja rajaus
SQL-rajapinta on rajattu, jäsentimen valvoma murre eikä raaka PostgreSQL. Suojaukset ovat:
- Suljettu sallittujen lauseiden luettelo: lukemiseen vain
SHOW TABLES,DESCRIBE,SHOW COLUMNSjaSELECT, kirjoittamiseenINSERT,UPDATEjaDELETE. Kaikki muu hylätään jäsennysvaiheessa. - Rajatut resurssit: lauseet voivat koskea vain resursseja
workspace,cards,decksjareview_events. - Työtilakohtainen rajaus: jokainen lause rajautuu yhteen työtilaan, johon sinulla on pääsy, eli joko pyynnön rungossa annettuun
workspaceId-työtilaan tai valittuun työtilaasi, eikä pääsyä toisten vuokralaisten tietoihin ole. - Tiukat pyyntörungot: SQL- ja kertausreitit hylkäävät rungossa olevan tuntemattoman kentän, joten väärin kirjoitettu
workspaceIdjohtaa virheeseen sen sijaan, että kutsu ajettaisiin valittua työtilaa vasten. - Ylärajat: enintään
100riviä lausetta kohden, enintään50lausetta erää kohden ja tuloksen yläraja noin12ktokenia. Muutoserät toteutetaan atomisesti. - Luku- ja kirjoitusjako:
sql_queryjalist_workspacesovat tiukasti vain luku -työkaluja (readOnlyHint), eivätkä ne koskaan korjaa dataa, laske ajoitusta uudelleen tai muuta kortin tilaa.sql_executeon ainoa SQL-kirjoitustyökalu, ja se tekee kirjoituksia (destructiveHint); yksittäisen kutsun on sisällettävä joko pelkkiä lukuja tai pelkkiä kirjoituksia. SQL ei voi kirjoittaareview_events-tietoja tai FSRS-ajoitustilaa; vainPOST /v1/agent/reviews/submit(MCP:ssäsubmit_review) tallentaa kertauksen.
Oppaat
GET /v1/agent/guide/{topic} palauttaa yhden referenssioppaan kentässä data.guide, saman sisällön, jonka MCP-työkalu get_guide tarjoaa. Aiheet:
sql_dialect: koko SQL-kielioppi, rajat ja esimerkitcard_authoring: korttien tietosopimus, tunnisteet, kaksoiskappaleiden tarkistukset ja muotoilubulk_authoring: suuren kirjoitustyön jakaminen osiin ja tarkistaminenreview_flow: kertaus- ja arviointisilmukka
Tuntemattomaan aiheeseen vastataan koodilla 400 ja tuettujen aiheiden luettelolla. Hae vastaava opas ennen korttien laatimista, massakirjoittamista tai kertauksen aloittamista, ja lue sql_dialect uudelleen, jos lause hylätään.
curl https://api.nibomo.com/v1/agent/guide/sql_dialect \
-H "Authorization: ApiKey $FLASHCARDS_OPEN_SOURCE_API_KEY"
Kertaukset
Kertausreittien avulla agentti voi kuulustella oppijaa kortti kerrallaan ja tallentaa jokaisen arvion kortin FSRS-aikatauluun. Ne ottavat samat JSON-argumentit kuin MCP:n kertaustyökalut:
POST /v1/agent/reviews/nextpalauttaacard-olion, jossa oncardIdjafrontText, taicard: null, kun mitään ei ole erääntynyt. Valinnainentags(mikä tahansa annetuista) taideckIdrajaa jonoa, mutta ei molempia yhtä aikaa; pyyntö ilman runkoa on kelvollinen.POST /v1/agent/reviews/revealvaatiicardId-arvon ja palauttaa kyseisen kortinbackText-kentän.POST /v1/agent/reviews/submitvaatiicardId-arvon, asiakkaan luomanreviewId-UUID:n,rating-arvonAgain,Hard,GoodtaiEasysekä oppijan IANA-aikavyöhykkeenreviewedTimeZone. Palvelin merkitsee kertausajan ja palauttaa kortin uuden aikataulun, mukaan lukiendueAt,state,repsjalapses.
Kaikki kolme reittiä hyväksyvät valinnaisen workspaceId-kentän. Tallenna reviewId pysyvästi ennen lähettämistä, ja jos lähetyksen onnistuminen jää epävarmaksi, lähetä täsmälleen sama pyyntö uudelleen; uusintayritys ei koskaan tallenna toista kertausta. Kertausreitit voivat palauttaa myös seuraavat vastaukset:
409 REVIEW_EVENT_CONFLICT: kertaus on jo tallennettu, jaerror.details.reviewSchedulesisältää kortin nykyisen aikataulun.409 REVIEW_ID_CARD_MISMATCH:reviewIdtunnistaa jo toisen kortin kertauksen, joten mitään ei tallennettu; lähetä uudelleen uudellareviewId-arvolla.409 REVIEW_STALE: kortin tallennettu kertausaika on sama tai myöhäisempi kuin palvelimen nykyinen aika; kertaa jokin toinen kortti.400 REVIEW_INPUT_INVALID: jokin argumentti puuttuu, on virheellinen tai ei ole tuettu, mukaan lukientagsyhdessädeckId-arvon kanssa tai tunniste, jota työtila ei käytä.
Esimerkki lähetyksestä:
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"
}'
Ihmiskäyttäjien ja synkronoinnin API:t
Nibomossa on myös erilliset API:t ihmiskäyttäjien asiakassovelluksille ja offline-first-synkronoinnille, mutta ne eivät ole ulkoisten agenttien pääasiallinen rajapinta:
- selainkulut käyttävät yhteisen verkkotunnuksen evästeitä ja CSRF-suojausta
- offline-first-asiakkaat käyttävät toteutettuja synkronointireittejä
/v1/workspaces/{workspaceId}/sync/pushja/v1/workspaces/{workspaceId}/sync/pull - synkronointireitit ovat erillään ulkoisten agenttien rajapinnasta