Справочник API
Обзор
На этой странице описан текущий внешний контракт Flashcards для агентов ИИ.
Начинайте с канонической точки входа discovery:
GET https://api.flashcards-open-source-app.com/v1/
Тот же ответ discovery доступен и по GET /v1/agent, но основная публичная точка входа — именно /v1/.
Ответ discovery подсказывает агенту, как:
- запустить вход по одноразовому коду из письма
- обменять OTP-код на долгоживущий API-ключ
- получить контекст аккаунта
- создать workspace или выбрать существующий
- продолжить работу через опубликованный SQL-интерфейс
Опубликованные спецификации
Основные URL спецификаций для внешнего интерфейса агентов:
https://api.flashcards-open-source-app.com/v1/agent/openapi.jsonhttps://api.flashcards-open-source-app.com/v1/agent/swagger.json
В корне также доступны эквивалентные алиасы:
https://api.flashcards-open-source-app.com/v1/openapi.jsonhttps://api.flashcards-open-source-app.com/v1/swagger.json
Первичная аутентификация
Первичный OTP-поток выполняется через сервис аутентификации:
POST https://auth.flashcards-open-source-app.com/api/agent/send-codePOST https://auth.flashcards-open-source-app.com/api/agent/verify-code
Последовательность выглядит так:
- Вызовите
GET /v1/. - Отправьте email пользователя в
send-code. - Прочитайте
otpSessionTokenиз ответа. - Попросите пользователя сообщить последний 8-значный код из письма.
- Вызовите
verify-code, передавcode,otpSessionTokenиlabel. - Сохраните возвращённый API-ключ вне памяти чата.
Рекомендуемая переменная окружения:
export FLASHCARDS_OPEN_SOURCE_API_KEY="fca_ABCDEFGH_0123456789ABCDEFGHJKMNPQRS"
В аутентифицированных запросах используется заголовок:
Authorization: ApiKey <key>
Пример первичной последовательности:
curl https://api.flashcards-open-source-app.com/v1/
curl -X POST https://auth.flashcards-open-source-app.com/api/agent/send-code \
-H "Content-Type: application/json" \
-d '{"email":"you@example.com"}'
curl -X POST https://auth.flashcards-open-source-app.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
Обычно первичная настройка выглядит так:
GET /v1/agent/meGET /v1/agent/workspaces?limit=100- При необходимости
POST /v1/agent/workspacesс{"name":"Personal"} - При необходимости
POST /v1/agent/workspaces/{workspaceId}/select - Затем используйте
POST /v1/agent/sql
Выбор workspace выполняется явно для каждого подключения по API-ключу. Агентам следует ориентироваться на текст instructions и поле docs.openapiUrl, которые возвращаются в каждом таком ответе, а не пытаться угадывать следующий шаг.
SQL-интерфейс
POST /v1/agent/sql — общий интерфейс чтения и записи для внешних агентов.
Он намеренно ограничен и не является полноценным PostgreSQL.
Сейчас доступны следующие семейства выражений:
SHOW TABLESDESCRIBE <resource>SELECTINSERTUPDATEDELETE
Сейчас опубликованы такие логические ресурсы:
workspacecardsdecksreview_events
Примечания:
- по умолчанию
LIMITравен100, и это же его максимальное значение - если нужна стабильная пагинация, используйте
ORDER BY - для изучения схемы используйте
SHOW TABLESилиDESCRIBE cards - после выбора workspace внешний агентский контракт ограничен этим workspace
Пример запроса:
curl -X POST https://api.flashcards-open-source-app.com/v1/agent/sql \
-H "Content-Type: application/json" \
-H "Authorization: ApiKey $FLASHCARDS_OPEN_SOURCE_API_KEY" \
-d '{"sql":"SHOW TABLES"}'
Пример запроса карточек:
curl -X POST https://api.flashcards-open-source-app.com/v1/agent/sql \
-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.flashcards-open-source-app.com/v1/agent/sql \
-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'\''"
}'
API для пользователей и синхронизации
У Flashcards также есть отдельные API для пользовательских клиентов и offline-first синхронизации, но для внешних агентов это не основной контракт:
- браузерные сценарии используют cookie общего домена и защиту CSRF
- offline-first клиенты используют реализованные маршруты синхронизации
/v1/workspaces/{workspaceId}/sync/pushи/v1/workspaces/{workspaceId}/sync/pull - маршруты синхронизации намеренно не входят во внешний OpenAPI-контракт для агентов