docs(i18n): improve Ukrainian (uk-UA) translation quality

Complete translation and terminology improvements for Ukrainian documentation:
- docs/i18n/uk-UA/README.md:  full Ukrainian translation
- docs/i18n/uk-UA/SECURITY.md: full Ukrainian translation
- docs/i18n/uk-UA/docs/A2A-SERVER.md: full Ukrainian translation
- docs/i18n/uk-UA/docs/API_REFERENCE.md: full Ukrainian translation
- docs/i18n/uk-UA/docs/AUTO-COMBO.md: full Ukrainian translation
- docs/i18n/uk-UA/docs/USER_GUIDE.md: complete translation (966 lines)

Changes:
- Translated all English content to Ukrainian
- Preserved all code examples, commands, and technical terms
- Maintained proper Ukrainian orthography with diacritical marks
This commit is contained in:
Andrii Vitiuc
2026-04-20 18:15:41 +02:00
parent 08d0e9f8b4
commit bd5dd7cb21
6 changed files with 1091 additions and 1096 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,159 +1,159 @@
# Security Policy (Українська)
# Політика безпеки
🌐 **Languages:** 🇺🇸 [English](../../../SECURITY.md) · 🇪🇸 [es](../es/SECURITY.md) · 🇫🇷 [fr](../fr/SECURITY.md) · 🇩🇪 [de](../de/SECURITY.md) · 🇮🇹 [it](../it/SECURITY.md) · 🇷🇺 [ru](../ru/SECURITY.md) · 🇨🇳 [zh-CN](../zh-CN/SECURITY.md) · 🇯🇵 [ja](../ja/SECURITY.md) · 🇰🇷 [ko](../ko/SECURITY.md) · 🇸🇦 [ar](../ar/SECURITY.md) · 🇮🇳 [hi](../hi/SECURITY.md) · 🇮🇳 [in](../in/SECURITY.md) · 🇹🇭 [th](../th/SECURITY.md) · 🇻🇳 [vi](../vi/SECURITY.md) · 🇮🇩 [id](../id/SECURITY.md) · 🇲🇾 [ms](../ms/SECURITY.md) · 🇳🇱 [nl](../nl/SECURITY.md) · 🇵🇱 [pl](../pl/SECURITY.md) · 🇸🇪 [sv](../sv/SECURITY.md) · 🇳🇴 [no](../no/SECURITY.md) · 🇩🇰 [da](../da/SECURITY.md) · 🇫🇮 [fi](../fi/SECURITY.md) · 🇵🇹 [pt](../pt/SECURITY.md) · 🇷🇴 [ro](../ro/SECURITY.md) · 🇭🇺 [hu](../hu/SECURITY.md) · 🇧🇬 [bg](../bg/SECURITY.md) · 🇸🇰 [sk](../sk/SECURITY.md) · 🇺🇦 [uk-UA](../uk-UA/SECURITY.md) · 🇮🇱 [he](../he/SECURITY.md) · 🇵🇭 [phi](../phi/SECURITY.md) · 🇧🇷 [pt-BR](../pt-BR/SECURITY.md) · 🇨🇿 [cs](../cs/SECURITY.md) · 🇹🇷 [tr](../tr/SECURITY.md)
---
## Reporting Vulnerabilities
## Повідомлення про вразливості
If you discover a security vulnerability in OmniRoute, please report it responsibly:
Якщо ви виявили вразливість безпеки в OmniRoute, будь ласка, повідомте про це відповідально:
1. **DO NOT** open a public GitHub issue
2. Use [GitHub Security Advisories](https://github.com/diegosouzapw/OmniRoute/security/advisories/new)
3. Include: description, reproduction steps, and potential impact
1. **НЕ** створюйте публічний GitHub issue
2. Використовуйте [GitHub Security Advisories](https://github.com/diegosouzapw/OmniRoute/security/advisories/new)
3. Включіть: опис, кроки відтворення та потенційний вплив
## Response Timeline
## Часові рамки відповіді
| Stage | Target |
| ------------------- | --------------------------- |
| Acknowledgment | 48 hours |
| Triage & Assessment | 5 business days |
| Patch Release | 14 business days (critical) |
| Етап | Цільовий термін |
| --------------------- | ----------------------- |
| Підтвердження | 48 годин |
| Сортування та оцінка | 5 робочих днів |
| Випуск патчу | 14 робочих днів (критичні) |
## Supported Versions
## Підтримувані версії
| Version | Support Status |
| ------- | -------------- |
| 3.6.x | ✅ Active |
| 3.5.x | ✅ Security |
| < 3.5.0 | ❌ Unsupported |
| Версія | Статус підтримки |
| ------- | ---------------- |
| 3.6.x | ✅ Активна |
| 3.5.x | ✅ Безпека |
| < 3.5.0 | ❌ Не підтримується |
---
## Security Architecture
## Архітектура безпеки
OmniRoute implements a multi-layered security model:
OmniRoute реалізує багаторівневу модель безпеки:
```
Request → CORS → API Key Auth → Prompt Injection Guard → Input Sanitizer → Rate Limiter → Circuit Breaker → Provider
Запит → CORS → API Key Auth → Prompt Injection Guard → Input Sanitizer → Rate Limiter → Circuit Breaker → Провайдер
```
### 🔐 Authentication & Authorization
### 🔐 Автентифікація та авторизація
| Feature | Implementation |
| Функція | Реалізація |
| -------------------- | ---------------------------------------------------------- |
| **Dashboard Login** | Password-based auth with JWT tokens (HttpOnly cookies) |
| **API Key Auth** | HMAC-signed keys with CRC validation |
| **OAuth 2.0 + PKCE** | Secure provider auth (Claude, Codex, Gemini, Cursor, etc.) |
| **Token Refresh** | Automatic OAuth token refresh before expiry |
| **Secure Cookies** | `AUTH_COOKIE_SECURE=true` for HTTPS environments |
| **MCP Scopes** | 10 granular scopes for MCP tool access control |
| **Вхід у панель** | Автентифікація на основі пароля з JWT токенами (HttpOnly cookies) |
| **API Key Auth** | HMAC-підписані ключі з CRC валідацією |
| **OAuth 2.0 + PKCE** | Безпечна автентифікація провайдерів (Claude, Codex, Gemini, Cursor тощо) |
| **Оновлення токенів** | Автоматичне оновлення OAuth токенів перед закінченням терміну дії |
| **Безпечні cookies** | `AUTH_COOKIE_SECURE=true` для HTTPS середовищ |
| **MCP Scopes** | 10 детальних областей для контролю доступу до інструментів MCP |
### 🛡️ Encryption at Rest
### 🛡️ Шифрування в стані спокою
All sensitive data stored in SQLite is encrypted using **AES-256-GCM** with scrypt key derivation:
Всі чутливі дані, що зберігаються в SQLite, шифруються за допомогою **AES-256-GCM** з похідною ключа scrypt:
- API keys, access tokens, refresh tokens, and ID tokens
- Versioned format: `enc:v1:<iv>:<ciphertext>:<authTag>`
- Passthrough mode (plaintext) when `STORAGE_ENCRYPTION_KEY` is not set
- API ключі, токени доступу, токени оновлення та ID токени
- Версійний формат: `enc:v1:<iv>:<ciphertext>:<authTag>`
- Режим прямого проходження (plaintext), коли `STORAGE_ENCRYPTION_KEY` не встановлено
```bash
# Generate encryption key:
# Генерація ключа шифрування:
STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32)
```
### 🧠 Prompt Injection Guard
### 🧠 Захист від Prompt Injection
Middleware that detects and blocks prompt injection attacks in LLM requests:
Middleware, який виявляє та блокує атаки prompt injection у запитах до LLM:
| Pattern Type | Severity | Example |
| ------------------- | -------- | ---------------------------------------------- |
| System Override | High | "ignore all previous instructions" |
| Role Hijack | High | "you are now DAN, you can do anything" |
| Delimiter Injection | Medium | Encoded separators to break context boundaries |
| DAN/Jailbreak | High | Known jailbreak prompt patterns |
| Instruction Leak | Medium | "show me your system prompt" |
| Тип шаблону | Серйозність | Приклад |
| ------------------- | ----------- | ---------------------------------------------- |
| Перевизначення системи | Висока | "ignore all previous instructions" |
| Захоплення ролі | Висока | "you are now DAN, you can do anything" |
| Ін'єкція роздільників | Середня | Закодовані роздільники для порушення меж контексту |
| DAN/Jailbreak | Висока | Відомі шаблони jailbreak промптів |
| Витік інструкцій | Середня | "show me your system prompt" |
Configure via dashboard (Settings → Security) or `.env`:
Налаштування через панель (Налаштування → Безпека) або `.env`:
```env
INPUT_SANITIZER_ENABLED=true
INPUT_SANITIZER_MODE=block # warn | block | redact
```
### 🔒 PII Redaction
### 🔒 Редагування PII
Automatic detection and optional redaction of personally identifiable information:
Автоматичне виявлення та опціональне редагування персональної інформації:
| PII Type | Pattern | Replacement |
| Тип PII | Шаблон | Заміна |
| ------------- | --------------------- | ------------------ |
| Email | `user@domain.com` | `[EMAIL_REDACTED]` |
| CPF (Brazil) | `123.456.789-00` | `[CPF_REDACTED]` |
| CNPJ (Brazil) | `12.345.678/0001-00` | `[CNPJ_REDACTED]` |
| Credit Card | `4111-1111-1111-1111` | `[CC_REDACTED]` |
| Phone | `+55 11 99999-9999` | `[PHONE_REDACTED]` |
| SSN (US) | `123-45-6789` | `[SSN_REDACTED]` |
| CPF (Бразилія) | `123.456.789-00` | `[CPF_REDACTED]` |
| CNPJ (Бразилія) | `12.345.678/0001-00` | `[CNPJ_REDACTED]` |
| Кредитна картка | `4111-1111-1111-1111` | `[CC_REDACTED]` |
| Телефон | `+55 11 99999-9999` | `[PHONE_REDACTED]` |
| SSN (США) | `123-45-6789` | `[SSN_REDACTED]` |
```env
PII_REDACTION_ENABLED=true
```
### 🌐 Network Security
### 🌐 Мережева безпека
| Feature | Description |
| ------------------------ | ---------------------------------------------------------------- |
| **CORS** | Configurable origin control (`CORS_ORIGIN` env var, default `*`) |
| **IP Filtering** | Allowlist/blocklist IP ranges in dashboard |
| **Rate Limiting** | Per-provider rate limits with automatic backoff |
| **Anti-Thundering Herd** | Mutex + per-connection locking prevents cascading 502s |
| **TLS Fingerprint** | Browser-like TLS fingerprint spoofing to reduce bot detection |
| **CLI Fingerprint** | Per-provider header/body ordering to match native CLI signatures |
| Функція | Опис |
| ------------------------ | ------------------------------------------------------------ |
| **CORS** | Налаштовуваний контроль походження (`CORS_ORIGIN` env var, за замовчуванням `*`) |
| **Фільтрація IP** | Білий/чорний список діапазонів IP у панелі |
| **Обмеження швидкості** | Обмеження швидкості для кожного провайдера з автоматичним відкатом |
| **Anti-Thundering Herd** | Mutex + блокування на з'єднання запобігає каскадним 502 |
| **TLS Fingerprint** | Підробка TLS відбитка браузера для зменшення виявлення ботів |
| **CLI Fingerprint** | Упорядкування заголовків/тіла для кожного провайдера для відповідності нативним CLI підписам |
### 🔌 Resilience & Availability
### 🔌 Стійкість та доступність
| Feature | Description |
| ----------------------- | ------------------------------------------------------------------ |
| **Circuit Breaker** | 3-state (Closed → Open → Half-Open) per provider, SQLite-persisted |
| **Request Idempotency** | 5-second dedup window for duplicate requests |
| **Exponential Backoff** | Automatic retry with increasing delays |
| **Health Dashboard** | Real-time provider health monitoring |
| Функція | Опис |
| ----------------------- | -------------------------------------------------------------- |
| **Circuit Breaker** | 3-стани (Closed → Open → Half-Open) для кожного провайдера, збережено в SQLite |
| **Ідемпотентність запитів** | 5-секундне вікно дедуплікації для дублікатів запитів |
| **Експоненційний відкат** | Автоматичний повтор зі збільшенням затримок |
| **Панель здоров'я** | Моніторинг здоров'я провайдерів у реальному часі |
### 📋 Compliance
### 📋 Відповідність
| Feature | Description |
| Функція | Опис |
| ------------------ | ----------------------------------------------------------- |
| **Log Retention** | Automatic cleanup after `CALL_LOG_RETENTION_DAYS` |
| **No-Log Opt-out** | Per API key `noLog` flag disables request logging |
| **Audit Log** | Administrative actions tracked in `audit_log` table |
| **MCP Audit** | SQLite-backed audit logging for all MCP tool calls |
| **Zod Validation** | All API inputs validated with Zod v4 schemas at module load |
| **Зберігання логів** | Автоматичне очищення після `CALL_LOG_RETENTION_DAYS` |
| **Відмова від логування** | Прапорець `noLog` для API ключа вимикає логування запитів |
| **Журнал аудиту** | Адміністративні дії відстежуються в таблиці `audit_log` |
| **MCP Audit** | Журнал аудиту на основі SQLite для всіх викликів інструментів MCP |
| **Zod Validation** | Всі API входи валідуються схемами Zod v4 при завантаженні модуля |
---
## Required Environment Variables
## Обов'язкові змінні середовища
All secrets must be set before starting the server. The server will **fail fast** if they are missing or weak.
Всі секрети повинні бути встановлені перед запуском сервера. Сервер **швидко завершиться з помилкою**, якщо вони відсутні або слабкі.
```bash
# REQUIRED — server will not start without these:
JWT_SECRET=$(openssl rand -base64 48) # min 32 chars
API_KEY_SECRET=$(openssl rand -hex 32) # min 16 chars
# ОБОВ'ЯЗКОВО — сервер не запуститься без них:
JWT_SECRET=$(openssl rand -base64 48) # мін 32 символи
API_KEY_SECRET=$(openssl rand -hex 32) # мін 16 символів
# RECOMMENDED — enables encryption at rest:
# РЕКОМЕНДОВАНО — вмикає шифрування в стані спокою:
STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32)
```
The server actively rejects known-weak values like `changeme`, `secret`, or `password`.
Сервер активно відхиляє відомі слабкі значення, такі як `changeme`, `secret` або `password`.
---
## Docker Security
## Безпека Docker
- Use non-root user in production
- Mount secrets as read-only volumes
- Never copy `.env` files into Docker images
- Use `.dockerignore` to exclude sensitive files
- Set `AUTH_COOKIE_SECURE=true` when behind HTTPS
- Використовуйте не-root користувача у продакшені
- Монтуйте секрети як томи тільки для читання
- Ніколи не копіюйте файли `.env` у Docker образи
- Використовуйте `.dockerignore` для виключення чутливих файлів
- Встановіть `AUTH_COOKIE_SECURE=true` при роботі за HTTPS
```bash
docker run -d \
@@ -170,10 +170,10 @@ docker run -d \
---
## Dependencies
## Залежності
- Run `npm audit` regularly
- Keep dependencies updated
- The project uses `husky` + `lint-staged` for pre-commit checks
- CI pipeline runs ESLint security rules on every push
- Provider constants validated at module load via Zod (`src/shared/validation/providerSchema.ts`)
- Регулярно запускайте `npm audit`
- Тримайте залежності оновленими
- Проєкт використовує `husky` + `lint-staged` для перевірок перед комітом
- CI pipeline запускає правила безпеки ESLint при кожному push
- Константи провайдерів валідуються при завантаженні модуля через Zod (`src/shared/validation/providerSchema.ts`)

View File

@@ -1,38 +1,38 @@
# OmniRoute A2A Server Documentation (Українська)
# Документація A2A сервера OmniRoute
🌐 **Languages:** 🇺🇸 [English](../../../../docs/A2A-SERVER.md) · 🇪🇸 [es](../../es/docs/A2A-SERVER.md) · 🇫🇷 [fr](../../fr/docs/A2A-SERVER.md) · 🇩🇪 [de](../../de/docs/A2A-SERVER.md) · 🇮🇹 [it](../../it/docs/A2A-SERVER.md) · 🇷🇺 [ru](../../ru/docs/A2A-SERVER.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/A2A-SERVER.md) · 🇯🇵 [ja](../../ja/docs/A2A-SERVER.md) · 🇰🇷 [ko](../../ko/docs/A2A-SERVER.md) · 🇸🇦 [ar](../../ar/docs/A2A-SERVER.md) · 🇮🇳 [hi](../../hi/docs/A2A-SERVER.md) · 🇮🇳 [in](../../in/docs/A2A-SERVER.md) · 🇹🇭 [th](../../th/docs/A2A-SERVER.md) · 🇻🇳 [vi](../../vi/docs/A2A-SERVER.md) · 🇮🇩 [id](../../id/docs/A2A-SERVER.md) · 🇲🇾 [ms](../../ms/docs/A2A-SERVER.md) · 🇳🇱 [nl](../../nl/docs/A2A-SERVER.md) · 🇵🇱 [pl](../../pl/docs/A2A-SERVER.md) · 🇸🇪 [sv](../../sv/docs/A2A-SERVER.md) · 🇳🇴 [no](../../no/docs/A2A-SERVER.md) · 🇩🇰 [da](../../da/docs/A2A-SERVER.md) · 🇫🇮 [fi](../../fi/docs/A2A-SERVER.md) · 🇵🇹 [pt](../../pt/docs/A2A-SERVER.md) · 🇷🇴 [ro](../../ro/docs/A2A-SERVER.md) · 🇭🇺 [hu](../../hu/docs/A2A-SERVER.md) · 🇧🇬 [bg](../../bg/docs/A2A-SERVER.md) · 🇸🇰 [sk](../../sk/docs/A2A-SERVER.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/A2A-SERVER.md) · 🇮🇱 [he](../../he/docs/A2A-SERVER.md) · 🇵🇭 [phi](../../phi/docs/A2A-SERVER.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/A2A-SERVER.md) · 🇨🇿 [cs](../../cs/docs/A2A-SERVER.md) · 🇹🇷 [tr](../../tr/docs/A2A-SERVER.md)
---
> Agent-to-Agent Protocol v0.3 — OmniRoute as an intelligent routing agent
> Agent-to-Agent Protocol v0.3 — OmniRoute як інтелектуальний агент маршрутизації
## Agent Discovery
## Виявлення агента
```bash
curl http://localhost:20128/.well-known/agent.json
```
Returns the Agent Card describing OmniRoute's capabilities, skills, and authentication requirements.
Повертає Agent Card, що описує можливості OmniRoute, навички та вимоги до автентифікації.
---
## Authentication
## Автентифікація
All `/a2a` requests require an API key via the `Authorization` header:
Всі запити до `/a2a` вимагають API ключ через заголовок `Authorization`:
```
Authorization: Bearer YOUR_OMNIROUTE_API_KEY
```
If no API key is configured on the server, authentication is bypassed.
Якщо на сервері не налаштовано API ключ, автентифікація пропускається.
---
## JSON-RPC 2.0 Methods
## Методи JSON-RPC 2.0
### `message/send` — Synchronous Execution
### `message/send` — Синхронне виконання
Sends a message to a skill and waits for the complete response.
Надсилає повідомлення до навички та чекає на повну відповідь.
```bash
curl -X POST http://localhost:20128/a2a \
@@ -50,7 +50,7 @@ curl -X POST http://localhost:20128/a2a \
}'
```
**Response:**
**Відповідь:**
```json
{
@@ -71,9 +71,9 @@ curl -X POST http://localhost:20128/a2a \
}
```
### `message/stream` — SSE Streaming
### `message/stream` — SSE потокова передача
Same as `message/send` but returns Server-Sent Events for real-time streaming.
Те саме, що й `message/send`, але повертає Server-Sent Events для потокової передачі в реальному часі.
```bash
curl -N -X POST http://localhost:20128/a2a \
@@ -90,7 +90,7 @@ curl -N -X POST http://localhost:20128/a2a \
}'
```
**SSE Events:**
**SSE події:**
```
data: {"jsonrpc":"2.0","method":"message/stream","params":{"task":{"id":"...","state":"working"},"chunk":{"type":"text","content":"..."}}}
@@ -100,7 +100,7 @@ data: {"jsonrpc":"2.0","method":"message/stream","params":{"task":{"id":"...","s
data: {"jsonrpc":"2.0","method":"message/stream","params":{"task":{"id":"...","state":"completed"},"metadata":{...}}}
```
### `tasks/get` — Query Task Status
### `tasks/get` — Запит статусу завдання
```bash
curl -X POST http://localhost:20128/a2a \
@@ -109,7 +109,7 @@ curl -X POST http://localhost:20128/a2a \
-d '{"jsonrpc":"2.0","id":"2","method":"tasks/get","params":{"taskId":"TASK_UUID"}}'
```
### `tasks/cancel` — Cancel a Task
### `tasks/cancel` — Скасування завдання
```bash
curl -X POST http://localhost:20128/a2a \
@@ -120,16 +120,16 @@ curl -X POST http://localhost:20128/a2a \
---
## Available Skills
## Доступні навички
| Skill | Description |
| Навичка | Опис |
| :----------------- | :------------------------------------------------------------------------------------------------------------------------------ |
| `smart-routing` | Routes prompts through OmniRoute's intelligent pipeline. Returns response with routing explanation, cost, and resilience trace. |
| `quota-management` | Answers natural-language queries about provider quotas, suggests free combos, and provides quota rankings. |
| `smart-routing` | Маршрутизує промпти через інтелектуальний конвеєр OmniRoute. Повертає відповідь з поясненням маршрутизації, вартістю та трасуванням стійкості. |
| `quota-management` | Відповідає на запити природною мовою про квоти провайдерів, пропонує безкоштовні комбо та надає рейтинги квот. |
---
## Task Lifecycle
## Життєвий цикл завдання
```
submitted → working → completed
@@ -137,25 +137,25 @@ submitted → working → completed
→ cancelled
```
- Tasks expire after 5 minutes (configurable)
- Terminal states: `completed`, `failed`, `cancelled`
- Event log tracks every state transition
- Завдання закінчуються через 5 хвилин (налаштовується)
- Термінальні стани: `completed`, `failed`, `cancelled`
- Журнал подій відстежує кожен перехід стану
---
## Error Codes
## Коди помилок
| Code | Meaning |
| Код | Значення |
| :----- | :----------------------------- |
| -32700 | Parse error (invalid JSON) |
| -32600 | Invalid request / Unauthorized |
| -32601 | Method or skill not found |
| -32602 | Invalid params |
| -32603 | Internal error |
| -32700 | Помилка парсингу (невалідний JSON) |
| -32600 | Невалідний запит / Неавторизовано |
| -32601 | Метод або навичка не знайдені |
| -32602 | Невалідні параметри |
| -32603 | Внутрішня помилка |
---
## Integration Examples
## Приклади інтеграції
### Python (requests)

View File

@@ -1,24 +1,22 @@
# API Reference (Українська)
# Довідник API
🌐 **Languages:** 🇺🇸 [English](../../../../docs/API_REFERENCE.md) · 🇪🇸 [es](../../es/docs/API_REFERENCE.md) · 🇫🇷 [fr](../../fr/docs/API_REFERENCE.md) · 🇩🇪 [de](../../de/docs/API_REFERENCE.md) · 🇮🇹 [it](../../it/docs/API_REFERENCE.md) · 🇷🇺 [ru](../../ru/docs/API_REFERENCE.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/API_REFERENCE.md) · 🇯🇵 [ja](../../ja/docs/API_REFERENCE.md) · 🇰🇷 [ko](../../ko/docs/API_REFERENCE.md) · 🇸🇦 [ar](../../ar/docs/API_REFERENCE.md) · 🇮🇳 [hi](../../hi/docs/API_REFERENCE.md) · 🇮🇳 [in](../../in/docs/API_REFERENCE.md) · 🇹🇭 [th](../../th/docs/API_REFERENCE.md) · 🇻🇳 [vi](../../vi/docs/API_REFERENCE.md) · 🇮🇩 [id](../../id/docs/API_REFERENCE.md) · 🇲🇾 [ms](../../ms/docs/API_REFERENCE.md) · 🇳🇱 [nl](../../nl/docs/API_REFERENCE.md) · 🇵🇱 [pl](../../pl/docs/API_REFERENCE.md) · 🇸🇪 [sv](../../sv/docs/API_REFERENCE.md) · 🇳🇴 [no](../../no/docs/API_REFERENCE.md) · 🇩🇰 [da](../../da/docs/API_REFERENCE.md) · 🇫🇮 [fi](../../fi/docs/API_REFERENCE.md) · 🇵🇹 [pt](../../pt/docs/API_REFERENCE.md) · 🇷🇴 [ro](../../ro/docs/API_REFERENCE.md) · 🇭🇺 [hu](../../hu/docs/API_REFERENCE.md) · 🇧🇬 [bg](../../bg/docs/API_REFERENCE.md) · 🇸🇰 [sk](../../sk/docs/API_REFERENCE.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/API_REFERENCE.md) · 🇮🇱 [he](../../he/docs/API_REFERENCE.md) · 🇵🇭 [phi](../../phi/docs/API_REFERENCE.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/API_REFERENCE.md) · 🇨🇿 [cs](../../cs/docs/API_REFERENCE.md) · 🇹🇷 [tr](../../tr/docs/API_REFERENCE.md)
---
Complete reference for all OmniRoute API endpoints.
Повний довідник для всіх API endpoints OmniRoute.
---
## Table of Contents
## Зміст
- [Chat Completions](#chat-completions)
- [Embeddings](#embeddings)
- [Image Generation](#image-generation)
- [List Models](#list-models)
- [Compatibility Endpoints](#compatibility-endpoints)
- [Semantic Cache](#semantic-cache)
- [Dashboard & Management](#dashboard--management)
- [Request Processing](#request-processing)
- [Authentication](#authentication)
- [Генерація зображень](#генерація-зображень)
- [Список моделей](#список-моделей)
- [Endpoints сумісності](#endpoints-сумісності)
- [Семантичний кеш](#семантичний-кеш)
- [Панель керування та управління](#панель-керування-та-управління)
- [Обробка запитів](#обробка-запитів)
- [Автентифікація](#автентифікація)
---
@@ -38,22 +36,22 @@ Content-Type: application/json
}
```
### Custom Headers
### Користувацькі заголовки
| Header | Direction | Description |
| Заголовок | Напрямок | Опис |
| ------------------------ | --------- | ------------------------------------------------ |
| `X-OmniRoute-No-Cache` | Request | Set to `true` to bypass cache |
| `X-OmniRoute-Progress` | Request | Set to `true` for progress events |
| `X-Session-Id` | Request | Sticky session key for external session affinity |
| `x_session_id` | Request | Underscore variant also accepted (direct HTTP) |
| `Idempotency-Key` | Request | Dedup key (5s window) |
| `X-Request-Id` | Request | Alternative dedup key |
| `X-OmniRoute-Cache` | Response | `HIT` or `MISS` (non-streaming) |
| `X-OmniRoute-Idempotent` | Response | `true` if deduplicated |
| `X-OmniRoute-Progress` | Response | `enabled` if progress tracking on |
| `X-OmniRoute-Session-Id` | Response | Effective session ID used by OmniRoute |
| `X-OmniRoute-No-Cache` | Запит | Встановіть `true` для обходу кешу |
| `X-OmniRoute-Progress` | Запит | Встановіть `true` для подій прогресу |
| `X-Session-Id` | Запит | Ключ липкої сесії для зовнішньої прив'язки сесії |
| `x_session_id` | Запит | Варіант з підкресленням також приймається (прямий HTTP) |
| `Idempotency-Key` | Запит | Ключ дедуплікації (вікно 5с) |
| `X-Request-Id` | Запит | Альтернативний ключ дедуплікації |
| `X-OmniRoute-Cache` | Відповідь | `HIT` або `MISS` (без потокової передачі) |
| `X-OmniRoute-Idempotent` | Відповідь | `true` якщо дедупліковано |
| `X-OmniRoute-Progress` | Відповідь | `enabled` якщо відстеження прогресу увімкнено |
| `X-OmniRoute-Session-Id` | Відповідь | Ефективний ID сесії, використаний OmniRoute |
> Nginx note: if you rely on underscore headers (for example `x_session_id`), enable `underscores_in_headers on;`.
> Примітка Nginx: якщо ви покладаєтесь на заголовки з підкресленням (наприклад `x_session_id`), увімкніть `underscores_in_headers on;`.
---
@@ -70,16 +68,16 @@ Content-Type: application/json
}
```
Available providers: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, **OpenRouter**, **GitHub Models**.
Доступні провайдери: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, **OpenRouter**, **GitHub Models**.
```bash
# List all embedding models
# Список всіх моделей embeddings
GET /v1/embeddings
```
---
## Image Generation
## Генерація зображень
```bash
POST /v1/images/generations
@@ -93,42 +91,42 @@ Content-Type: application/json
}
```
Available providers: OpenAI (DALL-E, GPT Image 1), xAI (Grok Image), Together AI (FLUX), Fireworks AI, Nebius (FLUX), Hyperbolic, NanoBanana, **OpenRouter**, SD WebUI (local), ComfyUI (local).
Доступні провайдери: OpenAI (DALL-E, GPT Image 1), xAI (Grok Image), Together AI (FLUX), Fireworks AI, Nebius (FLUX), Hyperbolic, NanoBanana, **OpenRouter**, SD WebUI (локальний), ComfyUI (локальний).
```bash
# List all image models
# Список всіх моделей зображень
GET /v1/images/generations
```
---
## List Models
## Список моделей
```bash
GET /v1/models
Authorization: Bearer your-api-key
Returns all chat, embedding, and image models + combos in OpenAI format
Повертає всі моделі чату, embeddings та зображень + комбо у форматі OpenAI
```
---
## Compatibility Endpoints
## Endpoints сумісності
| Method | Path | Format |
| ------ | --------------------------- | ---------------------- |
| POST | `/v1/chat/completions` | OpenAI |
| POST | `/v1/messages` | Anthropic |
| POST | `/v1/responses` | OpenAI Responses |
| POST | `/v1/embeddings` | OpenAI |
| POST | `/v1/images/generations` | OpenAI |
| GET | `/v1/models` | OpenAI |
| POST | `/v1/messages/count_tokens` | Anthropic |
| GET | `/v1beta/models` | Gemini |
| POST | `/v1beta/models/{...path}` | Gemini generateContent |
| POST | `/v1/api/chat` | Ollama |
| Метод | Шлях | Формат |
| ----- | --------------------------- | ---------------------- |
| POST | `/v1/chat/completions` | OpenAI |
| POST | `/v1/messages` | Anthropic |
| POST | `/v1/responses` | OpenAI Responses |
| POST | `/v1/embeddings` | OpenAI |
| POST | `/v1/images/generations` | OpenAI |
| GET | `/v1/models` | OpenAI |
| POST | `/v1/messages/count_tokens` | Anthropic |
| GET | `/v1beta/models` | Gemini |
| POST | `/v1beta/models/{...path}` | Gemini generateContent |
| POST | `/v1/api/chat` | Ollama |
### Dedicated Provider Routes
### Виділені маршрути провайдерів
```bash
POST /v1/providers/{provider}/chat/completions
@@ -136,21 +134,21 @@ POST /v1/providers/{provider}/embeddings
POST /v1/providers/{provider}/images/generations
```
The provider prefix is auto-added if missing. Mismatched models return `400`.
Префікс провайдера додається автоматично, якщо відсутній. Невідповідні моделі повертають `400`.
---
## Semantic Cache
## Семантичний кеш
```bash
# Get cache stats
# Отримати статистику кешу
GET /api/cache/stats
# Clear all caches
# Очистити всі кеші
DELETE /api/cache/stats
```
Response example:
Приклад відповіді:
```json
{
@@ -169,171 +167,171 @@ Response example:
---
## Dashboard & Management
## Панель керування та управління
### Authentication
### Автентифікація
| Endpoint | Method | Description |
| ----------------------------- | ------- | --------------------- |
| `/api/auth/login` | POST | Login |
| `/api/auth/logout` | POST | Logout |
| `/api/settings/require-login` | GET/PUT | Toggle login required |
| Endpoint | Метод | Опис |
| ----------------------------- | ------- | ------------------------- |
| `/api/auth/login` | POST | Вхід |
| `/api/auth/logout` | POST | Вихід |
| `/api/settings/require-login` | GET/PUT | Перемикач обов'язкового входу |
### Provider Management
### Управління провайдерами
| Endpoint | Method | Description |
| Endpoint | Метод | Опис |
| ---------------------------- | --------------------- | ---------------------------------------------- |
| `/api/providers` | GET/POST | List / create providers |
| `/api/providers/[id]` | GET/PUT/DELETE | Manage a provider |
| `/api/providers/[id]/test` | POST | Test provider connection |
| `/api/providers/[id]/models` | GET | List provider models |
| `/api/providers/validate` | POST | Validate provider config |
| `/api/provider-nodes*` | Various | Provider node management |
| `/api/provider-models` | GET/POST/PATCH/DELETE | Custom models (add, update, hide/show, delete) |
| `/api/providers` | GET/POST | Список / створення провайдерів |
| `/api/providers/[id]` | GET/PUT/DELETE | Управління провайдером |
| `/api/providers/[id]/test` | POST | Тест з'єднання провайдера |
| `/api/providers/[id]/models` | GET | Список моделей провайдера |
| `/api/providers/validate` | POST | Валідація конфігурації провайдера |
| `/api/provider-nodes*` | Різні | Управління вузлами провайдера |
| `/api/provider-models` | GET/POST/PATCH/DELETE | Користувацькі моделі (додати, оновити, приховати/показати, видалити) |
### OAuth Flows
### OAuth потоки
| Endpoint | Method | Description |
| -------------------------------- | ------- | ----------------------- |
| `/api/oauth/[provider]/[action]` | Various | Provider-specific OAuth |
| Endpoint | Метод | Опис |
| -------------------------------- | ------ | --------------------------- |
| `/api/oauth/[provider]/[action]` | Різні | OAuth специфічний для провайдера |
### Routing & Config
### Маршрутизація та конфігурація
| Endpoint | Method | Description |
| --------------------- | -------- | ----------------------------- |
| `/api/models/alias` | GET/POST | Model aliases |
| `/api/models/catalog` | GET | All models by provider + type |
| `/api/combos*` | Various | Combo management |
| `/api/keys*` | Various | API key management |
| `/api/pricing` | GET | Model pricing |
| Endpoint | Метод | Опис |
| --------------------- | ------ | ----------------------------- |
| `/api/models/alias` | GET/POST | Псевдоніми моделей |
| `/api/models/catalog` | GET | Всі моделі за провайдером + тип |
| `/api/combos*` | Різні | Управління комбо |
| `/api/keys*` | Різні | Управління API ключами |
| `/api/pricing` | GET | Ціни моделей |
### Usage & Analytics
### Використання та аналітика
| Endpoint | Method | Description |
| --------------------------- | ------ | -------------------- |
| `/api/usage/history` | GET | Usage history |
| `/api/usage/logs` | GET | Usage logs |
| `/api/usage/request-logs` | GET | Request-level logs |
| `/api/usage/[connectionId]` | GET | Per-connection usage |
| Endpoint | Метод | Опис |
| --------------------------- | ----- | ---------------------------- |
| `/api/usage/history` | GET | Історія використання |
| `/api/usage/logs` | GET | Логи використання |
| `/api/usage/request-logs` | GET | Логи на рівні запитів |
| `/api/usage/[connectionId]` | GET | Використання на з'єднання |
### Settings
### Налаштування
| Endpoint | Method | Description |
| ------------------------------- | ------------- | ---------------------- |
| `/api/settings` | GET/PUT/PATCH | General settings |
| `/api/settings/proxy` | GET/PUT | Network proxy config |
| `/api/settings/proxy/test` | POST | Test proxy connection |
| `/api/settings/ip-filter` | GET/PUT | IP allowlist/blocklist |
| `/api/settings/thinking-budget` | GET/PUT | Reasoning token budget |
| `/api/settings/system-prompt` | GET/PUT | Global system prompt |
| Endpoint | Метод | Опис |
| ------------------------------- | ------------- | -------------------------- |
| `/api/settings` | GET/PUT/PATCH | Загальні налаштування |
| `/api/settings/proxy` | GET/PUT | Конфігурація мережевого проксі |
| `/api/settings/proxy/test` | POST | Тест з'єднання проксі |
| `/api/settings/ip-filter` | GET/PUT | Білий/чорний список IP |
| `/api/settings/thinking-budget` | GET/PUT | Бюджет токенів міркування |
| `/api/settings/system-prompt` | GET/PUT | Глобальний системний промпт |
### Monitoring
### Моніторинг
| Endpoint | Method | Description |
| Endpoint | Метод | Опис |
| ------------------------ | ---------- | ---------------------------------------------------------------------------------------------------- |
| `/api/sessions` | GET | Active session tracking |
| `/api/rate-limits` | GET | Per-account rate limits |
| `/api/monitoring/health` | GET | Health check + provider summary (`catalogCount`, `configuredCount`, `activeCount`, `monitoredCount`) |
| `/api/cache/stats` | GET/DELETE | Cache stats / clear |
| `/api/sessions` | GET | Відстеження активних сесій |
| `/api/rate-limits` | GET | Обмеження швидкості на акаунт |
| `/api/monitoring/health` | GET | Перевірка здоров'я + зведення провайдерів (`catalogCount`, `configuredCount`, `activeCount`, `monitoredCount`) |
| `/api/cache/stats` | GET/DELETE | Статистика кешу / очищення |
### Backup & Export/Import
### Резервне копіювання та експорт/імпорт
| Endpoint | Method | Description |
| --------------------------- | ------ | --------------------------------------- |
| `/api/db-backups` | GET | List available backups |
| `/api/db-backups` | PUT | Create a manual backup |
| `/api/db-backups` | POST | Restore from a specific backup |
| `/api/db-backups/export` | GET | Download database as .sqlite file |
| `/api/db-backups/import` | POST | Upload .sqlite file to replace database |
| `/api/db-backups/exportAll` | GET | Download full backup as .tar.gz archive |
| Endpoint | Метод | Опис |
| --------------------------- | ----- | --------------------------------------- |
| `/api/db-backups` | GET | Список доступних резервних копій |
| `/api/db-backups` | PUT | Створити ручну резервну копію |
| `/api/db-backups` | POST | Відновити з конкретної резервної копії |
| `/api/db-backups/export` | GET | Завантажити базу даних як .sqlite файл |
| `/api/db-backups/import` | POST | Завантажити .sqlite файл для заміни бази даних |
| `/api/db-backups/exportAll` | GET | Завантажити повну резервну копію як .tar.gz архів |
### Cloud Sync
### Хмарна синхронізація
| Endpoint | Method | Description |
| ---------------------- | ------- | --------------------- |
| `/api/sync/cloud` | Various | Cloud sync operations |
| `/api/sync/initialize` | POST | Initialize sync |
| `/api/cloud/*` | Various | Cloud management |
| Endpoint | Метод | Опис |
| ---------------------- | ------ | ------------------------- |
| `/api/sync/cloud` | Різні | Операції хмарної синхронізації |
| `/api/sync/initialize` | POST | Ініціалізація синхронізації |
| `/api/cloud/*` | Різні | Управління хмарою |
### Tunnels
### Тунелі
| Endpoint | Method | Description |
| -------------------------- | ------ | ----------------------------------------------------------------------- |
| `/api/tunnels/cloudflared` | GET | Read Cloudflare Quick Tunnel install/runtime status for the dashboard |
| `/api/tunnels/cloudflared` | POST | Enable or disable the Cloudflare Quick Tunnel (`action=enable/disable`) |
| Endpoint | Метод | Опис |
| -------------------------- | ----- | ----------------------------------------------------------------------- |
| `/api/tunnels/cloudflared` | GET | Читання статусу встановлення/виконання Cloudflare Quick Tunnel для панелі |
| `/api/tunnels/cloudflared` | POST | Увімкнути або вимкнути Cloudflare Quick Tunnel (`action=enable/disable`) |
### CLI Tools
### CLI інструменти
| Endpoint | Method | Description |
| ---------------------------------- | ------ | ------------------- |
| `/api/cli-tools/claude-settings` | GET | Claude CLI status |
| `/api/cli-tools/codex-settings` | GET | Codex CLI status |
| `/api/cli-tools/droid-settings` | GET | Droid CLI status |
| `/api/cli-tools/openclaw-settings` | GET | OpenClaw CLI status |
| `/api/cli-tools/runtime/[toolId]` | GET | Generic CLI runtime |
| Endpoint | Метод | Опис |
| ---------------------------------- | ----- | ------------------- |
| `/api/cli-tools/claude-settings` | GET | Статус Claude CLI |
| `/api/cli-tools/codex-settings` | GET | Статус Codex CLI |
| `/api/cli-tools/droid-settings` | GET | Статус Droid CLI |
| `/api/cli-tools/openclaw-settings` | GET | Статус OpenClaw CLI |
| `/api/cli-tools/runtime/[toolId]` | GET | Загальний CLI runtime |
CLI responses include: `installed`, `runnable`, `command`, `commandPath`, `runtimeMode`, `reason`.
Відповіді CLI включають: `installed`, `runnable`, `command`, `commandPath`, `runtimeMode`, `reason`.
### ACP Agents
### ACP агенти
| Endpoint | Method | Description |
| Endpoint | Метод | Опис |
| ----------------- | ------ | -------------------------------------------------------- |
| `/api/acp/agents` | GET | List all detected agents (built-in + custom) with status |
| `/api/acp/agents` | POST | Add custom agent or refresh detection cache |
| `/api/acp/agents` | DELETE | Remove a custom agent by `id` query param |
| `/api/acp/agents` | GET | Список всіх виявлених агентів (вбудовані + користувацькі) зі статусом |
| `/api/acp/agents` | POST | Додати користувацького агента або оновити кеш виявлення |
| `/api/acp/agents` | DELETE | Видалити користувацького агента за параметром запиту `id` |
GET response includes `agents[]` (id, name, binary, version, installed, protocol, isCustom) and `summary` (total, installed, notFound, builtIn, custom).
Відповідь GET включає `agents[]` (id, name, binary, version, installed, protocol, isCustom) та `summary` (total, installed, notFound, builtIn, custom).
### Resilience & Rate Limits
### Стійкість та обмеження швидкості
| Endpoint | Method | Description |
| Endpoint | Метод | Опис |
| ----------------------- | --------- | ------------------------------- |
| `/api/resilience` | GET/PATCH | Get/update resilience profiles |
| `/api/resilience/reset` | POST | Reset circuit breakers |
| `/api/rate-limits` | GET | Per-account rate limit status |
| `/api/rate-limit` | GET | Global rate limit configuration |
| `/api/resilience` | GET/PATCH | Отримати/оновити профілі стійкості |
| `/api/resilience/reset` | POST | Скинути circuit breakers |
| `/api/rate-limits` | GET | Статус обмеження швидкості на акаунт |
| `/api/rate-limit` | GET | Глобальна конфігурація обмеження швидкості |
### Evals
### Оцінки
| Endpoint | Method | Description |
| Endpoint | Метод | Опис |
| ------------ | -------- | --------------------------------- |
| `/api/evals` | GET/POST | List eval suites / run evaluation |
| `/api/evals` | GET/POST | Список наборів оцінок / запуск оцінки |
### Policies
### Політики
| Endpoint | Method | Description |
| --------------- | --------------- | ----------------------- |
| `/api/policies` | GET/POST/DELETE | Manage routing policies |
| Endpoint | Метод | Опис |
| --------------- | --------------- | --------------------------- |
| `/api/policies` | GET/POST/DELETE | Управління політиками маршрутизації |
### Compliance
### Відповідність
| Endpoint | Method | Description |
| --------------------------- | ------ | ----------------------------- |
| `/api/compliance/audit-log` | GET | Compliance audit log (last N) |
| Endpoint | Метод | Опис |
| --------------------------- | ----- | ----------------------------- |
| `/api/compliance/audit-log` | GET | Журнал аудиту відповідності (останні N) |
### v1beta (Gemini-Compatible)
### v1beta (сумісний з Gemini)
| Endpoint | Method | Description |
| -------------------------- | ------ | --------------------------------- |
| `/v1beta/models` | GET | List models in Gemini format |
| `/v1beta/models/{...path}` | POST | Gemini `generateContent` endpoint |
| Endpoint | Метод | Опис |
| -------------------------- | ----- | ----------------------------- |
| `/v1beta/models` | GET | Список моделей у форматі Gemini |
| `/v1beta/models/{...path}` | POST | Endpoint Gemini `generateContent` |
These endpoints mirror Gemini's API format for clients that expect native Gemini SDK compatibility.
Ці endpoints відображають формат API Gemini для клієнтів, які очікують нативної сумісності з Gemini SDK.
### Internal / System APIs
### Внутрішні / системні API
| Endpoint | Method | Description |
| ------------------------ | ------ | ---------------------------------------------------- |
| `/api/init` | GET | Application initialization check (used on first run) |
| `/api/tags` | GET | Ollama-compatible model tags (for Ollama clients) |
| `/api/restart` | POST | Trigger graceful server restart |
| `/api/shutdown` | POST | Trigger graceful server shutdown |
| `/api/system/env/repair` | POST | Repair OAuth provider environment variables |
| `/api/system-info` | GET | Generate system diagnostics report |
| Endpoint | Метод | Опис |
| ------------------------ | ----- | ------------------------------------------------ |
| `/api/init` | GET | Перевірка ініціалізації додатка (використовується при першому запуску) |
| `/api/tags` | GET | Теги моделей сумісні з Ollama (для клієнтів Ollama) |
| `/api/restart` | POST | Запустити плавний перезапуск сервера |
| `/api/shutdown` | POST | Запустити плавне вимкнення сервера |
| `/api/system/env/repair` | POST | Відновити змінні середовища OAuth провайдера |
| `/api/system-info` | GET | Згенерувати звіт системної діагностики |
> **Note:** These endpoints are used internally by the system or for Ollama client compatibility. They are not typically called by end users.
> **Примітка:** Ці endpoints використовуються внутрішньо системою або для сумісності з клієнтами Ollama. Вони зазвичай не викликаються кінцевими користувачами.
### OAuth Environment Repair _(v3.6.1+)_
### Відновлення середовища OAuth _(v3.6.1+)_
```bash
POST /api/system/env/repair
@@ -344,7 +342,7 @@ Content-Type: application/json
}
```
Repairs missing or corrupted OAuth environment variables for a specific provider. Returns:
Відновлює відсутні або пошкоджені змінні середовища OAuth для конкретного провайдера. Повертає:
```json
{
@@ -356,7 +354,7 @@ Repairs missing or corrupted OAuth environment variables for a specific provider
---
## Audio Transcription
## Транскрипція аудіо
```bash
POST /v1/audio/transcriptions
@@ -364,9 +362,9 @@ Authorization: Bearer your-api-key
Content-Type: multipart/form-data
```
Transcribe audio files using Deepgram or AssemblyAI.
Транскрибуйте аудіофайли за допомогою Deepgram або AssemblyAI.
**Request:**
**Запит:**
```bash
curl -X POST http://localhost:20128/v1/audio/transcriptions \
@@ -375,7 +373,7 @@ curl -X POST http://localhost:20128/v1/audio/transcriptions \
-F "model=deepgram/nova-3"
```
**Response:**
**Відповідь:**
```json
{
@@ -386,36 +384,36 @@ curl -X POST http://localhost:20128/v1/audio/transcriptions \
}
```
**Supported providers:** `deepgram/nova-3`, `assemblyai/best`.
**Підтримувані провайдери:** `deepgram/nova-3`, `assemblyai/best`.
**Supported formats:** `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`.
**Підтримувані формати:** `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`.
---
## Ollama Compatibility
## Сумісність з Ollama
For clients that use Ollama's API format:
Для клієнтів, які використовують формат API Ollama:
```bash
# Chat endpoint (Ollama format)
# Endpoint чату (формат Ollama)
POST /v1/api/chat
# Model listing (Ollama format)
# Список моделей (формат Ollama)
GET /api/tags
```
Requests are automatically translated between Ollama and internal formats.
Запити автоматично перекладаються між форматами Ollama та внутрішніми форматами.
---
## Telemetry
## Телеметрія
```bash
# Get latency telemetry summary (p50/p95/p99 per provider)
# Отримати зведення телеметрії затримки (p50/p95/p99 на провайдера)
GET /api/telemetry/summary
```
**Response:**
**Відповідь:**
```json
{
@@ -428,13 +426,13 @@ GET /api/telemetry/summary
---
## Budget
## Бюджет
```bash
# Get budget status for all API keys
# Отримати статус бюджету для всіх API ключів
GET /api/usage/budget
# Set or update a budget
# Встановити або оновити бюджет
POST /api/usage/budget
Content-Type: application/json
@@ -447,13 +445,13 @@ Content-Type: application/json
---
## Model Availability
## Доступність моделей
```bash
# Get real-time model availability across all providers
# Отримати доступність моделей у реальному часі для всіх провайдерів
GET /api/models/availability
# Check availability for a specific model
# Перевірити доступність для конкретної моделі
POST /api/models/availability
Content-Type: application/json
@@ -464,25 +462,25 @@ Content-Type: application/json
---
## Request Processing
## Обробка запитів
1. Client sends request to `/v1/*`
2. Route handler calls `handleChat`, `handleEmbedding`, `handleAudioTranscription`, or `handleImageGeneration`
3. Model is resolved (direct provider/model or alias/combo)
4. Credentials selected from local DB with account availability filtering
5. For chat: `handleChatCore`format detection, translation, cache check, idempotency check
6. Provider executor sends upstream request
7. Response translated back to client format (chat) or returned as-is (embeddings/images/audio)
8. Usage/logging recorded
9. Fallback applies on errors according to combo rules
1. Клієнт надсилає запит до `/v1/*`
2. Обробник маршруту викликає `handleChat`, `handleEmbedding`, `handleAudioTranscription` або `handleImageGeneration`
3. Модель розв'язується (прямий провайдер/модель або псевдонім/комбо)
4. Облікові дані вибираються з локальної БД з фільтрацією доступності акаунта
5. Для чату: `handleChatCore`виявлення формату, переклад, перевірка кешу, перевірка ідемпотентності
6. Виконавець провайдера надсилає запит вище за течією
7. Відповідь перекладається назад у формат клієнта (чат) або повертається як є (embeddings/зображення/аудіо)
8. Використання/логування записується
9. Резервний варіант застосовується при помилках відповідно до правил комбо
Full architecture reference: [`ARCHITECTURE.md`](ARCHITECTURE.md)
Повний довідник архітектури: [`ARCHITECTURE.md`](../../../../docs/ARCHITECTURE.md)
---
## Authentication
## Автентифікація
- Dashboard routes (`/dashboard/*`) use `auth_token` cookie
- Login uses saved password hash; fallback to `INITIAL_PASSWORD`
- `requireLogin` toggleable via `/api/settings/require-login`
- `/v1/*` routes optionally require Bearer API key when `REQUIRE_API_KEY=true`
- Маршрути панелі (`/dashboard/*`) використовують cookie `auth_token`
- Вхід використовує збережений хеш пароля; резервний варіант до `INITIAL_PASSWORD`
- `requireLogin` перемикається через `/api/settings/require-login`
- Маршрути `/v1/*` опціонально вимагають Bearer API ключ, коли `REQUIRE_API_KEY=true`

View File

@@ -1,67 +1,67 @@
# OmniRoute Auto-Combo Engine (Українська)
# Двигун Auto-Combo OmniRoute
🌐 **Languages:** 🇺🇸 [English](../../../../docs/AUTO-COMBO.md) · 🇪🇸 [es](../../es/docs/AUTO-COMBO.md) · 🇫🇷 [fr](../../fr/docs/AUTO-COMBO.md) · 🇩🇪 [de](../../de/docs/AUTO-COMBO.md) · 🇮🇹 [it](../../it/docs/AUTO-COMBO.md) · 🇷🇺 [ru](../../ru/docs/AUTO-COMBO.md) · 🇨🇳 [zh-CN](../../zh-CN/docs/AUTO-COMBO.md) · 🇯🇵 [ja](../../ja/docs/AUTO-COMBO.md) · 🇰🇷 [ko](../../ko/docs/AUTO-COMBO.md) · 🇸🇦 [ar](../../ar/docs/AUTO-COMBO.md) · 🇮🇳 [hi](../../hi/docs/AUTO-COMBO.md) · 🇮🇳 [in](../../in/docs/AUTO-COMBO.md) · 🇹🇭 [th](../../th/docs/AUTO-COMBO.md) · 🇻🇳 [vi](../../vi/docs/AUTO-COMBO.md) · 🇮🇩 [id](../../id/docs/AUTO-COMBO.md) · 🇲🇾 [ms](../../ms/docs/AUTO-COMBO.md) · 🇳🇱 [nl](../../nl/docs/AUTO-COMBO.md) · 🇵🇱 [pl](../../pl/docs/AUTO-COMBO.md) · 🇸🇪 [sv](../../sv/docs/AUTO-COMBO.md) · 🇳🇴 [no](../../no/docs/AUTO-COMBO.md) · 🇩🇰 [da](../../da/docs/AUTO-COMBO.md) · 🇫🇮 [fi](../../fi/docs/AUTO-COMBO.md) · 🇵🇹 [pt](../../pt/docs/AUTO-COMBO.md) · 🇷🇴 [ro](../../ro/docs/AUTO-COMBO.md) · 🇭🇺 [hu](../../hu/docs/AUTO-COMBO.md) · 🇧🇬 [bg](../../bg/docs/AUTO-COMBO.md) · 🇸🇰 [sk](../../sk/docs/AUTO-COMBO.md) · 🇺🇦 [uk-UA](../../uk-UA/docs/AUTO-COMBO.md) · 🇮🇱 [he](../../he/docs/AUTO-COMBO.md) · 🇵🇭 [phi](../../phi/docs/AUTO-COMBO.md) · 🇧🇷 [pt-BR](../../pt-BR/docs/AUTO-COMBO.md) · 🇨🇿 [cs](../../cs/docs/AUTO-COMBO.md) · 🇹🇷 [tr](../../tr/docs/AUTO-COMBO.md)
---
> Self-managing model chains with adaptive scoring
> Самокеровані ланцюги моделей з адаптивним оцінюванням
## How It Works
## Як це працює
The Auto-Combo Engine dynamically selects the best provider/model for each request using a **6-factor scoring function**:
Двигун Auto-Combo динамічно вибирає найкращого провайдера/модель для кожного запиту, використовуючи **6-факторну функцію оцінювання**:
| Factor | Weight | Description |
| :--------- | :----- | :---------------------------------------------- |
| Quota | 0.20 | Remaining capacity [0..1] |
| Health | 0.25 | Circuit breaker: CLOSED=1.0, HALF=0.5, OPEN=0.0 |
| CostInv | 0.20 | Inverse cost (cheaper = higher score) |
| LatencyInv | 0.15 | Inverse p95 latency (faster = higher) |
| TaskFit | 0.10 | Model × task type fitness score |
| Stability | 0.10 | Low variance in latency/errors |
| Фактор | Вага | Опис |
| :--------- | :--- | :---------------------------------------------- |
| Quota | 0.20 | Залишкова ємність [0..1] |
| Health | 0.25 | Circuit breaker: CLOSED=1.0, HALF=0.5, OPEN=0.0 |
| CostInv | 0.20 | Обернена вартість (дешевше = вищий бал) |
| LatencyInv | 0.15 | Обернена p95 затримка (швидше = вище) |
| TaskFit | 0.10 | Оцінка відповідності модель × тип завдання |
| Stability | 0.10 | Низька варіація затримки/помилок |
## Mode Packs
## Пакети режимів
| Pack | Focus | Key Weight |
| Пакет | Фокус | Ключова вага |
| :---------------------- | :----------- | :--------------- |
| 🚀 **Ship Fast** | Speed | latencyInv: 0.35 |
| 💰 **Cost Saver** | Economy | costInv: 0.40 |
| 🎯 **Quality First** | Best model | taskFit: 0.40 |
| 📡 **Offline Friendly** | Availability | quota: 0.40 |
| 🚀 **Ship Fast** | Швидкість | latencyInv: 0.35 |
| 💰 **Cost Saver** | Економія | costInv: 0.40 |
| 🎯 **Quality First** | Краща модель | taskFit: 0.40 |
| 📡 **Offline Friendly** | Доступність | quota: 0.40 |
## Self-Healing
## Самовідновлення
- **Temporary exclusion**: Score < 0.2 → excluded for 5 min (progressive backoff, max 30 min)
- **Circuit breaker awareness**: OPEN → auto-excluded; HALF_OPEN → probe requests
- **Incident mode**: >50% OPEN → disable exploration, maximize stability
- **Cooldown recovery**: After exclusion, first request is a "probe" with reduced timeout
- **Тимчасове виключення**: Оцінка < 0.2 → виключено на 5 хв (прогресивний відкат, макс 30 хв)
- **Усвідомлення circuit breaker**: OPEN → авто-виключено; HALF_OPEN → пробні запити
- **Режим інциденту**: >50% OPEN → вимкнути дослідження, максимізувати стабільність
- **Відновлення після охолодження**: Після виключення перший запит є "пробним" зі зменшеним таймаутом
## Bandit Exploration
## Bandit дослідження
5% of requests (configurable) are routed to random providers for exploration. Disabled in incident mode.
5% запитів (налаштовується) маршрутизуються до випадкових провайдерів для дослідження. Вимкнено в режимі інциденту.
## API
```bash
# Create auto-combo
# Створити auto-combo
curl -X POST http://localhost:20128/api/combos/auto \
-H "Content-Type: application/json" \
-d '{"id":"my-auto","name":"Auto Coder","candidatePool":["anthropic","google","openai"],"modePack":"ship-fast"}'
# List auto-combos
# Список auto-combos
curl http://localhost:20128/api/combos/auto
```
## Task Fitness
## Відповідність завданню
30+ models scored across 6 task types (`coding`, `review`, `planning`, `analysis`, `debugging`, `documentation`). Supports wildcard patterns (e.g., `*-coder` → high coding score).
30+ моделей оцінено за 6 типами завдань (`coding`, `review`, `planning`, `analysis`, `debugging`, `documentation`). Підтримує шаблони з підстановкою (наприклад, `*-coder` → високий бал кодування).
## Files
## Файли
| File | Purpose |
| Файл | Призначення |
| :------------------------------------------- | :------------------------------------ |
| `open-sse/services/autoCombo/scoring.ts` | Scoring function & pool normalization |
| `open-sse/services/autoCombo/taskFitness.ts` | Model × task fitness lookup |
| `open-sse/services/autoCombo/engine.ts` | Selection logic, bandit, budget cap |
| `open-sse/services/autoCombo/selfHealing.ts` | Exclusion, probes, incident mode |
| `open-sse/services/autoCombo/modePacks.ts` | 4 weight profiles |
| `open-sse/services/autoCombo/scoring.ts` | Функція оцінювання та нормалізація пулу |
| `open-sse/services/autoCombo/taskFitness.ts` | Пошук відповідності модель × завдання |
| `open-sse/services/autoCombo/engine.ts` | Логіка вибору, bandit, обмеження бюджету |
| `open-sse/services/autoCombo/selfHealing.ts` | Виключення, проби, режим інциденту |
| `open-sse/services/autoCombo/modePacks.ts` | 4 профілі ваг |
| `src/app/api/combos/auto/route.ts` | REST API |

File diff suppressed because it is too large Load Diff