API-Referenz
Ueberblick
Diese Seite dokumentiert den aktuellen externen KI-Agenten-Vertrag fuer Flashcards.
Starte am kanonischen Discovery-Einstiegspunkt:
GET https://api.flashcards-open-source-app.com/v1/
Dieselbe Nutzlast ist auch unter GET /v1/agent verfuegbar, aber /v1/ ist der primaere oeffentliche Einstiegspunkt.
Die Discovery-Antwort sagt einem Agenten, wie er:
- den E-Mail-OTP-Login startet
- das OTP gegen einen langlebigen API-Key tauscht
- Account-Kontext laedt
- einen Workspace erstellt oder auswaehlt
- ueber die veroeffentlichte SQL-Oberflaeche weiterarbeitet
Veroeffentlichte Spezifikationen
Primaere Spezifikations-URLs fuer die externe Agent-Oberflaeche:
https://api.flashcards-open-source-app.com/v1/agent/openapi.jsonhttps://api.flashcards-open-source-app.com/v1/agent/swagger.json
Gleichwertige Root-Aliase existieren ebenfalls:
https://api.flashcards-open-source-app.com/v1/openapi.jsonhttps://api.flashcards-open-source-app.com/v1/swagger.json
Auth-Bootstrap
Der OTP-Bootstrap laeuft ueber den Auth-Service:
POST https://auth.flashcards-open-source-app.com/api/agent/send-codePOST https://auth.flashcards-open-source-app.com/api/agent/verify-code
Der Ablauf:
- Rufe
GET /v1/auf. - Sende die E-Mail des Nutzers an
send-code. - Lies
otpSessionTokenaus der Antwort. - Bitte den Nutzer um den neuesten 8-stelligen Code aus der E-Mail.
- Rufe
verify-codemitcode,otpSessionTokenundlabelauf. - Speichere den zurueckgegebenen API-Key ausserhalb des Chat-Speichers.
Empfohlene Umgebungsvariable:
export FLASHCARDS_OPEN_SOURCE_API_KEY="fca_ABCDEFGH_0123456789ABCDEFGHJKMNPQRS"
Authentifizierte Anfragen nutzen:
Authorization: ApiKey <key>
Agent-Oberflaeche nach dem Login
Nach erfolgreicher Verifikation umfasst die aktuelle Oberflaeche:
GET /v1/agent/meGET /v1/agent/workspacesPOST /v1/agent/workspacesPOST /v1/agent/workspaces/{workspaceId}/selectPOST /v1/agent/sql/query(nur lesend)POST /v1/agent/sql/execute(schreibend)
Ein typischer Bootstrap sieht so aus:
GET /v1/agent/meGET /v1/agent/workspaces?limit=100- Falls noetig
POST /v1/agent/workspacesmit{"name":"Personal"} - Falls noetig
POST /v1/agent/workspaces/{workspaceId}/select - Danach
POST /v1/agent/sql/queryfuer Lesevorgaenge undPOST /v1/agent/sql/executefuer Schreibvorgaenge
Die Workspace-Auswahl ist pro API-Key-Verbindung explizit. Agenten sollten dem zurueckgegebenen Text in instructions und dem Feld docs.openapiUrl folgen, statt den naechsten Schritt zu raten.
SQL-Oberflaeche
POST /v1/agent/sql/query ist die strikt nur lesende Oberflaeche (SHOW TABLES, DESCRIBE, SELECT) und POST /v1/agent/sql/execute ist die Schreib-Oberflaeche (INSERT, UPDATE, DELETE); ein einzelner Aufruf muss entweder ausschliesslich Lese- oder ausschliesslich Schreibvorgaenge enthalten.
Sie ist absichtlich eingeschraenkt und kein vollstaendiges PostgreSQL. Diese Dokumentation beschreibt nur den unterstuetzten Dialekt, keine PostgreSQL-Kompatibilitaetsreferenz.
Kein Lesepfad repariert Daten, berechnet Planung neu oder aendert
Kartenzustand. Verwende POST /v1/agent/sql/execute fuer jeden Schreibvorgang.
Aktuelle Statement-Familien:
SHOW TABLESDESCRIBE <resource>SELECTINSERTUPDATEDELETE
Veroeffentlichte logische Ressourcen sind derzeit:
workspacecardsdecksreview_events
Hinweise:
LIMITist standardmaessig100und maximal100- verwende
ORDER BY, wenn du stabile Pagination brauchst - nutze
SHOW TABLESoderDESCRIBE cardsfuer Schema-Discovery - der externe Agent-Vertrag ist nach der Auswahl auf den Workspace begrenzt
Beispielanfrage:
curl -X POST https://api.flashcards-open-source-app.com/v1/agent/sql/query \
-H "Content-Type: application/json" \
-H "Authorization: ApiKey $FLASHCARDS_OPEN_SOURCE_API_KEY" \
-d '{"sql":"SHOW TABLES"}'
Ein entfernter MCP-Server ist ebenfalls unter https://mcp.flashcards-open-source-app.com/mcp mit OAuth 2.1 (Dynamic Client Registration + PKCE) verfuegbar. Er stellt dieselbe Aufteilung als zwei Tools bereit, sql_query (strikt nur lesend) und sql_execute (schreibend), plus strikt nur lesendes list_workspaces.
Sicherheit und Geltungsbereich
Die SQL-Oberflaeche ist ein abgesicherter, vom Parser erzwungener Dialekt und kein vollstaendiges PostgreSQL. Die Schutzmechanismen sind:
- Geschlossene Anweisungsliste: nur
SHOW TABLES,DESCRIBE,SHOW COLUMNSundSELECTzum Lesen sowieINSERT,UPDATEundDELETEzum Schreiben. Alles andere wird beim Parsen abgelehnt. - Begrenzte Ressourcen: Anweisungen koennen nur die Ressourcen
workspace,cards,decksundreview_eventsbetreffen. - Workspace-Geltungsbereich: jede Anweisung ist auf den ausgewaehlten Workspace beschraenkt, ohne mandantenuebergreifenden Zugriff.
- Grenzwerte: bis zu
100Zeilen pro Anweisung, bis zu50Anweisungen pro Batch und eine Ergebnisgrenze von etwa12kTokens. Mutations-Batches werden atomar angewendet. - Trennung von Lesen und Schreiben:
sql_queryundlist_workspacessind strikt nur lesend (readOnlyHint) und reparieren keine Daten, berechnen keine Planung neu und aendern keinen Kartenzustand.sql_executeist das einzige Schreib-Tool und fuehrt Schreibvorgaenge aus (destructiveHint); ein einzelner Aufruf muss vollstaendig lesend oder vollstaendig schreibend sein.
Menschliche und Sync-APIs
Flashcards enthaelt auch separate APIs fuer menschliche Clients und Offline-First-Sync, aber sie sind nicht der Hauptvertrag fuer externe Agenten:
- Browser-Flows nutzen Shared-Domain-Cookies plus CSRF-Schutz
- Offline-First-Clients verwenden die implementierten Sync-Routen unter
/v1/workspaces/{workspaceId}/sync/pushund/v1/workspaces/{workspaceId}/sync/pull - Sync-Routen liegen absichtlich ausserhalb der externen Agent-OpenAPI-Oberflaeche