- Unify API: lib/api.ts uses /api/v1, inbox uses /api/inbox (rewrites) - Remove localhost refs: openapi, inbox page - Add rewrites: /api/inbox|tmc -> inbox-server, /api/v1 -> FastAPI - Add stub routes: knowledge/insights, recommendations, search, log-error - Transfer from PAPA: prompts (inspection, tmc), scripts, supabase, data/tmc-requests - Fix inbox-server: ORDER BY created_at, package.json - Remove redundant app/api/inbox/files route (rewrites handle it) - knowledge/ in gitignore (large PDFs) Co-authored-by: Cursor <cursoragent@cursor.com>
4.6 KiB
4.6 KiB
API Документация
Базовый URL
http://localhost:3000/api
Аутентификация
Примечание: Аутентификация будет реализована в будущих версиях. Сейчас все endpoints доступны без авторизации.
Endpoints
GET /api/aircraft
Получение списка воздушных судов.
Ответ:
[
{
"id": "1",
"registrationNumber": "RA-12345",
"serialNumber": "SN-001",
"aircraftType": "Boeing 737-800",
"operator": "Аэрофлот",
"status": "Активен",
"flightHours": 12500
}
]
POST /api/ai-data
Получение данных для ИИ агента.
Тело запроса:
{
"dataType": "aircraft",
"filters": {
"registrationNumber": "RA-12345",
"operator": "Аэрофлот"
}
}
Параметры:
dataType(string, required): Тип данных (aircraft,risks,audits,organizations,checklists,applications,users,documents,regulations,all)filters(object, optional): Фильтры для данных
Ответ:
{
"dataType": "aircraft",
"count": 3,
"data": [...]
}
POST /api/ai-chat
Отправка сообщения ИИ агенту.
Тело запроса:
{
"message": "Сколько ВС у Аэрофлота?",
"history": [
{
"role": "user",
"content": "Привет"
},
{
"role": "assistant",
"content": "Привет! Чем могу помочь?"
}
],
"files": []
}
Ответ:
{
"response": "У Аэрофлота 150 воздушных судов.",
"timestamp": "2025-01-21T10:00:00.000Z"
}
Rate Limit: 50 запросов в минуту
GET /api/regulations
Получение нормативных документов.
Query параметры:
source(string, optional): Фильтр по источнику (ICAO,EASA,FAA,MAK,ARMAC,RUSSIAN_RULES,AIR_CODE)type(string, optional): Фильтр по типу (convention,annex,regulation,rule,code)search(string, optional): Поисковый запрос
Ответ:
{
"documents": [
{
"id": "chicago-convention",
"title": "Конвенция о международной гражданской авиации",
"source": "ICAO",
"type": "convention",
"category": "Основополагающий документ",
"version": "2024",
"lastUpdated": "2025-01-21T00:00:00.000Z",
"content": "...",
"url": "https://www.icao.int/..."
}
],
"total": 19
}
POST /api/regulations/update
Обновление нормативных документов (требует авторизации).
Тело запроса:
{
"source": "ICAO"
}
Ответ:
{
"success": true,
"message": "Нормативные документы успешно обновлены",
"results": {
"timestamp": "2025-01-21T10:00:00.000Z",
"sources": [...]
}
}
Коды ошибок
400- Неверный запрос (ошибка валидации)401- Не авторизован403- Доступ запрещен404- Ресурс не найден429- Превышен лимит запросов500- Внутренняя ошибка сервера
Формат ошибки
{
"error": "Описание ошибки",
"code": "ERROR_CODE",
"details": {}
}
Rate Limiting
/api/ai-chat: 50 запросов в минуту/api/ai-data: 100 запросов в минуту- Остальные endpoints: 200 запросов в минуту
При превышении лимита возвращается статус 429 с заголовками:
X-RateLimit-Limit: Максимальное количество запросовX-RateLimit-Remaining: Оставшееся количествоX-RateLimit-Reset: Время сброса лимита (timestamp)
Валидация данных
Все входные данные валидируются с использованием Zod схем. При ошибке валидации возвращается статус 400 с деталями ошибок.
Версионирование
Текущая версия API: v1
В будущем версионирование будет реализовано через префикс пути: /api/v1/...