# API Reference (ಕನ್ನಡ) 🌐 **Languages:** 🇺🇸 [English](../../../../reference/API_REFERENCE.md) · 🇪🇹 [am](../../../am/docs/reference/API_REFERENCE.md) · 🇸🇦 [ar](../../../ar/docs/reference/API_REFERENCE.md) · 🇦🇿 [az](../../../az/docs/reference/API_REFERENCE.md) · 🇧🇬 [bg](../../../bg/docs/reference/API_REFERENCE.md) · 🇧🇩 [bn](../../../bn/docs/reference/API_REFERENCE.md) · 🇧🇦 [bs](../../../bs/docs/reference/API_REFERENCE.md) · 🇨🇿 [cs](../../../cs/docs/reference/API_REFERENCE.md) · 🇩🇰 [da](../../../da/docs/reference/API_REFERENCE.md) · 🇩🇪 [de](../../../de/docs/reference/API_REFERENCE.md) · 🇬🇷 [el](../../../el/docs/reference/API_REFERENCE.md) · 🇪🇸 [es](../../../es/docs/reference/API_REFERENCE.md) · 🇪🇪 [et](../../../et/docs/reference/API_REFERENCE.md) · 🇮🇷 [fa](../../../fa/docs/reference/API_REFERENCE.md) · 🇫🇮 [fi](../../../fi/docs/reference/API_REFERENCE.md) · 🇫🇷 [fr](../../../fr/docs/reference/API_REFERENCE.md) · 🇮🇪 [ga](../../../ga/docs/reference/API_REFERENCE.md) · 🇮🇳 [gu](../../../gu/docs/reference/API_REFERENCE.md) · 🇳🇬 [ha](../../../ha/docs/reference/API_REFERENCE.md) · 🇮🇱 [he](../../../he/docs/reference/API_REFERENCE.md) · 🇮🇳 [hi](../../../hi/docs/reference/API_REFERENCE.md) · 🇭🇷 [hr](../../../hr/docs/reference/API_REFERENCE.md) · 🇭🇺 [hu](../../../hu/docs/reference/API_REFERENCE.md) · 🇦🇲 [hy](../../../hy/docs/reference/API_REFERENCE.md) · 🇮🇩 [id](../../../id/docs/reference/API_REFERENCE.md) · 🇳🇬 [ig](../../../ig/docs/reference/API_REFERENCE.md) · 🇮🇹 [it](../../../it/docs/reference/API_REFERENCE.md) · 🇯🇵 [ja](../../../ja/docs/reference/API_REFERENCE.md) · 🇬🇪 [ka](../../../ka/docs/reference/API_REFERENCE.md) · 🇰🇭 [km](../../../km/docs/reference/API_REFERENCE.md) · 🇰🇷 [ko](../../../ko/docs/reference/API_REFERENCE.md) · 🇱🇹 [lt](../../../lt/docs/reference/API_REFERENCE.md) · 🇱🇻 [lv](../../../lv/docs/reference/API_REFERENCE.md) · 🇮🇳 [ml](../../../ml/docs/reference/API_REFERENCE.md) · 🇮🇳 [mr](../../../mr/docs/reference/API_REFERENCE.md) · 🇲🇾 [ms](../../../ms/docs/reference/API_REFERENCE.md) · 🇲🇹 [mt](../../../mt/docs/reference/API_REFERENCE.md) · 🇲🇲 [my](../../../my/docs/reference/API_REFERENCE.md) · 🇳🇵 [ne](../../../ne/docs/reference/API_REFERENCE.md) · 🇳🇱 [nl](../../../nl/docs/reference/API_REFERENCE.md) · 🇳🇴 [no](../../../no/docs/reference/API_REFERENCE.md) · 🇮🇳 [or](../../../or/docs/reference/API_REFERENCE.md) · 🇮🇳 [pa](../../../pa/docs/reference/API_REFERENCE.md) · 🇵🇭 [phi](../../../phi/docs/reference/API_REFERENCE.md) · 🇵🇱 [pl](../../../pl/docs/reference/API_REFERENCE.md) · 🇵🇹 [pt](../../../pt/docs/reference/API_REFERENCE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/API_REFERENCE.md) · 🇷🇴 [ro](../../../ro/docs/reference/API_REFERENCE.md) · 🇷🇺 [ru](../../../ru/docs/reference/API_REFERENCE.md) · 🇱🇰 [si](../../../si/docs/reference/API_REFERENCE.md) · 🇸🇰 [sk](../../../sk/docs/reference/API_REFERENCE.md) · 🇸🇮 [sl](../../../sl/docs/reference/API_REFERENCE.md) · 🇷🇸 [sr](../../../sr/docs/reference/API_REFERENCE.md) · 🇸🇪 [sv](../../../sv/docs/reference/API_REFERENCE.md) · 🇰🇪 [sw](../../../sw/docs/reference/API_REFERENCE.md) · 🇮🇳 [ta](../../../ta/docs/reference/API_REFERENCE.md) · 🇮🇳 [te](../../../te/docs/reference/API_REFERENCE.md) · 🇹🇭 [th](../../../th/docs/reference/API_REFERENCE.md) · 🇹🇷 [tr](../../../tr/docs/reference/API_REFERENCE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/reference/API_REFERENCE.md) · 🇵🇰 [ur](../../../ur/docs/reference/API_REFERENCE.md) · 🇺🇿 [uz](../../../uz/docs/reference/API_REFERENCE.md) · 🇻🇳 [vi](../../../vi/docs/reference/API_REFERENCE.md) · 🇳🇬 [yo](../../../yo/docs/reference/API_REFERENCE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/API_REFERENCE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/reference/API_REFERENCE.md) --- 🌐 **ಭಾಷೆಗಳು:** 🇺🇸 [ಇಂಗ್ಲಿಷ್](./API_REFERENCE.md) | 🇪🇹 [ಅಂಹಾರಿಕ್](../i18n/am/docs/reference/API_REFERENCE.md) | 🇸🇦 [ಅರೇಬಿಕ್](../i18n/ar/docs/reference/API_REFERENCE.md) | 🇦🇿 [ಅಜರ್ಬೈಜಾನಿ](../i18n/az/docs/reference/API_REFERENCE.md) | 🇧🇬 [ಬಲ್ಗೇರಿಯನ್](../i18n/bg/docs/reference/API_REFERENCE.md) | 🇧🇩 [ಬಂಗಾಳಿ](../i18n/bn/docs/reference/API_REFERENCE.md) | 🇧🇦 [ಬೋಸ್ನಿಯನ್](../i18n/bs/docs/reference/API_REFERENCE.md) | 🇨🇿 [ಜೆಕ್](../i18n/cs/docs/reference/API_REFERENCE.md) | 🇩🇰 [ಡ್ಯಾನಿಶ್](../i18n/da/docs/reference/API_REFERENCE.md) | 🇩🇪 [ಜರ್ಮನ್](../i18n/de/docs/reference/API_REFERENCE.md) | 🇬🇷 [ಗ್ರೀಕ್](../i18n/el/docs/reference/API_REFERENCE.md) | 🇪🇸 [ಸ್ಪ್ಯಾನಿಷ್](../i18n/es/docs/reference/API_REFERENCE.md) | 🇪🇪 [ಎಸ್ಟೋನಿಯನ್](../i18n/et/docs/reference/API_REFERENCE.md) | 🇮🇷 [ಪರ್ಷಿಯನ್](../i18n/fa/docs/reference/API_REFERENCE.md) | 🇫🇮 [ಫಿನ್ನಿಷ್](../i18n/fi/docs/reference/API_REFERENCE.md) | 🇫🇷 [ಫ್ರೆಂಚ್](../i18n/fr/docs/reference/API_REFERENCE.md) | 🇮🇪 [ಐರಿಷ್](../i18n/ga/docs/reference/API_REFERENCE.md) | 🇮🇳 [ಗುಜರಾತಿ](../i18n/gu/docs/reference/API_REFERENCE.md) | 🇳🇬 [ಹೌಸಾ](../i18n/ha/docs/reference/API_REFERENCE.md) | 🇮🇱 [ಹೀಬ್ರೂ](../i18n/he/docs/reference/API_REFERENCE.md) | 🇮🇳 [ಹಿಂದಿ](../i18n/hi/docs/reference/API_REFERENCE.md) | 🇭🇷 [ಕ್ರೊಯೇಷಿಯನ್](../i18n/hr/docs/reference/API_REFERENCE.md) | 🇭🇺 [ಹಂಗೇರಿಯನ್](../i18n/hu/docs/reference/API_REFERENCE.md) | 🇦🇲 [ಅರ್ಮೇನಿಯನ್](../i18n/hy/docs/reference/API_REFERENCE.md) | 🇮🇩 [ಇಂಡೋನೇಷಿಯನ್](../i18n/id/docs/reference/API_REFERENCE.md) | 🇳🇬 [ಇಗ್ಬೊ](../i18n/ig/docs/reference/API_REFERENCE.md) | 🇮🇹 [ಇಟಾಲಿಯನ್](../i18n/it/docs/reference/API_REFERENCE.md) | 🇯🇵 [ಜಪಾನೀಸ್](../i18n/ja/docs/reference/API_REFERENCE.md) | 🇬🇪 [ಜಾರ್ಜಿಯನ್](../i18n/ka/docs/reference/API_REFERENCE.md) | 🇰🇭 [ಖಮೇರ್](../i18n/km/docs/reference/API_REFERENCE.md) | 🇮🇳 [ಕನ್ನಡ](../i18n/kn/docs/reference/API_REFERENCE.md) | 🇰🇷 [ಕೊರಿಯನ್](../i18n/ko/docs/reference/API_REFERENCE.md) | 🇱🇹 [ಲಿಥುವೇನಿಯನ್](../i18n/lt/docs/reference/API_REFERENCE.md) | 🇱🇻 [ಲಾಟ್ವಿಯನ್](../i18n/lv/docs/reference/API_REFERENCE.md) | 🇮🇳 [ಮಲಯಾಳಂ](../i18n/ml/docs/reference/API_REFERENCE.md) | 🇮🇳 [ಮರಾಠಿ](../i18n/mr/docs/reference/API_REFERENCE.md) | 🇲🇾 [ಮಲಯ್](../i18n/ms/docs/reference/API_REFERENCE.md) | 🇲🇹 [ಮಾಲ್ಟೀಸ್](../i18n/mt/docs/reference/API_REFERENCE.md) | 🇲🇲 [ಬರ್ಮೀಸ್](../i18n/my/docs/reference/API_REFERENCE.md) | 🇳🇵 [ನೇಪಾಳಿ](../i18n/ne/docs/reference/API_REFERENCE.md) | 🇳🇱 [ಡಚ್](../i18n/nl/docs/reference/API_REFERENCE.md) | 🇳🇴 [ನಾರ್ವೇಜಿಯನ್](../i18n/no/docs/reference/API_REFERENCE.md) | 🇮🇳 [ಒಡಿಯಾ](../i18n/or/docs/reference/API_REFERENCE.md) | 🇮🇳 [ಪಂಜಾಬಿ](../i18n/pa/docs/reference/API_REFERENCE.md) | 🇵🇭 [ಫಿಲಿಪಿನೊ](../i18n/phi/docs/reference/API_REFERENCE.md) | 🇵🇱 [ಪೋಲಿಷ್](../i18n/pl/docs/reference/API_REFERENCE.md) | 🇵🇹 [ಪೋರ್ಚುಗೀಸ್ (ಪೋರ್ಚುಗಲ್)](../i18n/pt/docs/reference/API_REFERENCE.md) | 🇧🇷 [ಪೋರ್ಚುಗೀಸ್ (ಬ್ರೆಜಿಲ್)](../i18n/pt-BR/docs/reference/API_REFERENCE.md) | 🇷🇴 [ರೊಮೇನಿಯನ್](../i18n/ro/docs/reference/API_REFERENCE.md) | 🇷🇺 [ರಷ್ಯನ್](../i18n/ru/docs/reference/API_REFERENCE.md) | 🇱🇰 [ಸಿಂಹಳ](../i18n/si/docs/reference/API_REFERENCE.md) | 🇸🇰 [ಸ್ಲೋವಾಕ್](../i18n/sk/docs/reference/API_REFERENCE.md) | 🇸🇮 [ಸ್ಲೋವೇನಿಯನ್](../i18n/sl/docs/reference/API_REFERENCE.md) | 🇷🇸 [ಸರ್ಬಿಯನ್](../i18n/sr/docs/reference/API_REFERENCE.md) | 🇸🇪 [ಸ್ವೀಡಿಷ್](../i18n/sv/docs/reference/API_REFERENCE.md) | 🇰🇪 [ಸ್ವಾಹಿಲಿ](../i18n/sw/docs/reference/API_REFERENCE.md) | 🇮🇳 [ತಮಿಳು](../i18n/ta/docs/reference/API_REFERENCE.md) | 🇮🇳 [ತೆಲುಗು](../i18n/te/docs/reference/API_REFERENCE.md) | 🇹🇭 [ಥಾಯ್](../i18n/th/docs/reference/API_REFERENCE.md) | 🇹🇷 [ಟರ್ಕಿಷ್](../i18n/tr/docs/reference/API_REFERENCE.md) | 🇺🇦 [ಉಕ್ರೇನಿಯನ್](../i18n/uk-UA/docs/reference/API_REFERENCE.md) | 🇵🇰 [ಉರ್ದು](../i18n/ur/docs/reference/API_REFERENCE.md) | 🇺🇿 [ಉಜ್ಬೇಕ್](../i18n/uz/docs/reference/API_REFERENCE.md) | 🇻🇳 [ವಿಯೆಟ್ನಾಮೀಸ್](../i18n/vi/docs/reference/API_REFERENCE.md) | 🇳🇬 [ಯೊರುಬಾ](../i18n/yo/docs/reference/API_REFERENCE.md) | 🇨🇳 [ಚೈನೀಸ್ (ಸರಳೀಕೃತ)](../i18n/zh-CN/docs/reference/API_REFERENCE.md) | 🇹🇼 [ಚೈನೀಸ್ (ಸಾಂಪ್ರದಾಯಿಕ)](../i18n/zh-TW/docs/reference/API_REFERENCE.md) OmniRoute API ಗಾಗಿ ಪ್ರಮುಖ ಉಲ್ಲೇಖ. ಇದು ಸಾರ್ವಜನಿಕ `/v1` ಮೇಲ್ಮೈ ಮತ್ತು ಹೆಚ್ಚು ಬಳಸಲಾಗುವ ನಿರ್ವಹಣಾ ಅಂತ್ಯಬಿಂದುಗಳನ್ನು ಒಳಗೊಂಡಿದೆ; ಯಂತ್ರ-ಓದಬಹುದಾದ [`docs/openapi.yaml`](../openapi.yaml) ಮತ್ತು `src/app/api/` ಅಡಿಯಲ್ಲಿರುವ ಮಾರ್ಗ ವೃಕ್ಷವು ಸಮಗ್ರ ಮೂಲಗಳಾಗಿವೆ. OpenAI-ಹೊಂದಾಣಿಕೆಯ ನಿರ್ದಿಷ್ಟ ಪ್ರೋಟೋಕಾಲ್ ಮತ್ತು ಪೂರೈಕೆದಾರರ ಸಾಮರ್ಥ್ಯ ಮ್ಯಾಟ್ರಿಕ್ಸ್ಗಾಗಿ, [`OPENAI_COMPATIBILITY.md`](./OPENAI_COMPATIBILITY.md) ನೋಡಿ. --- ## ವಿಷಯ ಸೂಚಿ - [ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳು](#chat-completions) - [ವಿಶೇಷ ನಿರ್ವಹಿತ ಸೆಷನ್ ಲೀಸ್ಗಳು](#exclusive-managed-session-leases) - [ಎಂಬೆಡಿಂಗ್ಗಳು](#embeddings) - [ಚಿತ್ರ ರಚನೆ](#image-generation) - [ಡಾಕ್ಯುಮೆಂಟ್ OCR](#document-ocr) - [ಮಾದರಿಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುವುದು](#list-models) - [ಒದಗಿಸುವವರ ಪ್ಲಗಿನ್ ಮ್ಯಾನಿಫೆಸ್ಟ್](#provider-plugin-manifest) - [ಹೊಂದಾಣಿಕೆ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು](#compatibility-endpoints) - [ಫೈಲ್ಗಳ API](#files-api) - [ಬ್ಯಾಚ್ಗಳ API](#batches-api) - [ಹುಡುಕಾಟ API](#search-api) - [WebSocket ಸ್ಟ್ರೀಮಿಂಗ್](#websocket-streaming) - [ಕೋಟಾಗಳು ಮತ್ತು ಸಮಸ್ಯೆಗಳ ವರದಿ](#quotas--issues-reporting) - [ಸೆಮ್ಯಾಂಟಿಕ್ ಕ್ಯಾಶ್](#semantic-cache) - [ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಮತ್ತು ನಿರ್ವಹಣೆ](#dashboard--management) - [ಕಾಂಬೊ ನಿರ್ವಹಣೆ](#combo-management) - [ವೆಬ್ಹುಕ್ಗಳು](#webhooks) - [ನೋಂದಾಯಿತ ಕೀಗಳು (ಸ್ವಯಂ-ನಿರ್ವಹಣೆ)](#registered-keys-auto-management) - [ಏಜೆಂಟ್ಗಳ ಪ್ರೋಟೋಕಾಲ್](#agents-protocol) - [ನಿರ್ವಹಣಾ ಪ್ರಾಕ್ಸಿಗಳು](#management-proxies) - [ಸ್ಥಿತಿಸ್ಥಾಪಕತ್ವ (ವಿಸ್ತರಿತ)](#resilience-extended) - [ಕೌಶಲ್ಯಗಳು](#skills) - [ಮೆಮೊರಿ](#memory) - [MCP ಸರ್ವರ್](#mcp-server) - [A2A ಸರ್ವರ್](#a2a-server) - [ಕ್ಲೌಡ್, ಮೌಲ್ಯಮಾಪನಗಳು ಮತ್ತು ಪರಿಶೀಲನೆ](#cloud-evals--assess) - [ವಿನಂತಿ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವಿಕೆ](#request-processing) - [ದೃಢೀಕರಣ](#authentication) --- ## ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳು ```bash POST /v1/chat/completions Authorization: Bearer your-api-key Content-Type: application/json { "model": "cc/claude-opus-4-6", "messages": [ {"role": "user", "content": "Write a function to..."} ], "stream": true } ``` ### ಕಸ್ಟಮ್ ಹೆಡರ್ಗಳು | ಹೆಡರ್ | ದಿಕ್ಕು | ವಿವರಣೆ | | ------------------------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `X-OmniRoute-No-Cache` | ವಿನಂತಿ | ಕ್ಯಾಶ್ ಅನ್ನು ಬಿಟ್ಟುಮುಂದುವರಿಯಲು `true` ಎಂದು ಹೊಂದಿಸಿ | | `x-omniroute-no-memory` | ವಿನಂತಿ | ಈ ವಿನಂತಿಗೆ ಮೆಮೊರಿ + ಕೌಶಲ್ಯಗಳ ಇಂಜೆಕ್ಷನ್ ಅನ್ನು ಬಿಟ್ಟುಬಿಡಲು `true` ಎಂದು ಹೊಂದಿಸಿ (ನೋ-ಕ್ಯಾಶ್ನಂತೆಯೇ; ಪ್ರತಿ-ಕರೆ ಟೋಕನ್/ವೆಚ್ಚದ ಹೆಚ್ಚುವರಿ ಹೊರೆಯನ್ನು ತಪ್ಪಿಸುತ್ತದೆ) | | `X-OmniRoute-Progress` | ವಿನಂತಿ | ಪ್ರಗತಿ ಈವೆಂಟ್ಗಳಿಗಾಗಿ `true` ಎಂದು ಹೊಂದಿಸಿ | | `X-Session-Id` | ವಿನಂತಿ | ಬಾಹ್ಯ ಸೆಷನ್ ಅಫಿನಿಟಿಗಾಗಿ ಸ್ಟಿಕಿ ಸೆಷನ್ ಕೀ | | `x_session_id` | ವಿನಂತಿ | ಅಂಡರ್ಸ್ಕೋರ್ ರೂಪಾಂತರವನ್ನೂ ಸ್ವೀಕರಿಸಲಾಗುತ್ತದೆ (ನೇರ HTTP) | | `X-OmniRoute-Session-Id` | ವಿನಂತಿ | ಕರೆ ಮಾಡುವವರು ಒದಗಿಸಿದ ಸೆಷನ್/ಸಂಭಾಷಣೆ ಟ್ಯಾಗ್ (ಮೆಮೊರಿಗೂ ಒದಗಿಸಲಾಗುತ್ತದೆ). ಇದ್ದಾಗ, ಪ್ರತಿ-ಸೆಷನ್ ವೆಚ್ಚದ ಗುಣಲಕ್ಷಣಕ್ಕಾಗಿ `call_logs.session_tag` ಗೆ ಯಥಾವತ್ತಾಗಿ ಉಳಿಸಲಾಗುತ್ತದೆ (#8249) — ಇಲ್ಲದಿದ್ದಾಗ ಎಂದಿಗೂ ಸಂಶ್ಲೇಷಿಸಲಾಗುವುದಿಲ್ಲ | | `Idempotency-Key` | ವಿನಂತಿ | ನಕಲು ನಿವಾರಣಾ ಕೀ (5s ವಿಂಡೋ) | | `X-Request-Id` | ವಿನಂತಿ | ಪರ್ಯಾಯ ನಕಲು ನಿವಾರಣಾ ಕೀ | | `X-OmniRoute-Cache` | ಪ್ರತಿಕ್ರಿಯೆ | `HIT` ಅಥವಾ `MISS` (ಸ್ಟ್ರೀಮಿಂಗ್ ಅಲ್ಲದ) | | `X-OmniRoute-Idempotent` | ಪ್ರತಿಕ್ರಿಯೆ | ನಕಲು ನಿವಾರಿಸಿದ್ದರೆ `true` | | `X-OmniRoute-Progress` | ಪ್ರತಿಕ್ರಿಯೆ | ಪ್ರಗತಿ ಟ್ರ್ಯಾಕಿಂಗ್ ಚಾಲನೆಯಲ್ಲಿದ್ದರೆ `enabled` | | `X-OmniRoute-Session-Id` | ಪ್ರತಿಕ್ರಿಯೆ | OmniRoute ಬಳಸಿದ ಪರಿಣಾಮಕಾರಿ ಸೆಷನ್ ID | | `X-OmniRoute-Request-Id` | ಪ್ರತಿಕ್ರಿಯೆ | ವಿನಂತಿ ಸಹಸಂಬಂಧ ID (ತಿಳಿದಿರುವಾಗ) | | `X-OmniRoute-Version` | ಪ್ರತಿಕ್ರಿಯೆ | OmniRoute ಬಿಲ್ಡ್ ಆವೃತ್ತಿ (ಯಾವಾಗಲೂ ಇರುತ್ತದೆ) | | `X-OmniRoute-Cost-Saved` | ಪ್ರತಿಕ್ರಿಯೆ | HIT ಮೂಲಕ ಕ್ಯಾಶ್ ತಪ್ಪಿಸಿದ USD ವೆಚ್ಚ (ಕ್ಯಾಶ್ ಹಿಟ್ಗಳಿಗೆ ಮಾತ್ರ) | | `X-OmniRoute-Decision` | ಪ್ರತಿಕ್ರಿಯೆ | ರೂಟಿಂಗ್ ಟ್ರೇಸ್: `strategy=; provider=; latency_ms=` (`` ಎಂಬುದು ಕಾಂಬೊ ತಂತ್ರ, ಅಥವಾ ಕಾಂಬೊ ಅಲ್ಲದ ವಿನಂತಿಗೆ `single`) — ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ಪ್ರತಿಕ್ರಿಯೆಗಳಲ್ಲಿ ಯಾವಾಗಲೂ ಇರುತ್ತದೆ | > Nginx ಸೂಚನೆ: ನೀವು ಅಂಡರ್ಸ್ಕೋರ್ ಹೆಡರ್ಗಳನ್ನು ಅವಲಂಬಿಸಿದ್ದರೆ (ಉದಾಹರಣೆಗೆ `x_session_id`), `underscores_in_headers on;` ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ. > **ವೆಚ್ಚದ ಟೆಲಿಮೆಟ್ರಿ ಹೆಡರ್ಗಳು:** ಸ್ಟ್ರೀಮಿಂಗ್ ಅಲ್ಲದ ಯಶಸ್ವಿ ಪ್ರತಿಕ್ರಿಯೆಗಳು `X-OmniRoute-*` ವೆಚ್ಚ-ಟೆಲಿಮೆಟ್ರಿ ಸಮೂಹವನ್ನೂ ಒಳಗೊಂಡಿರುತ್ತವೆ — `X-OmniRoute-Response-Cost` (USD, ನಿಗದಿತ 10 ದಶಮಾಂಶಗಳು; ಉಚಿತ/ಬೆಲೆ ನಿಗದಿಪಡಿಸದವುಗಳಿಗೆ `0.0000000000`), `X-OmniRoute-Tokens-In` / `X-OmniRoute-Tokens-Out`, `X-OmniRoute-Model`, `X-OmniRoute-Provider`, `X-OmniRoute-Latency-Ms`, `X-OmniRoute-Cache-Hit`, ಮತ್ತು `X-OmniRoute-Fallback-Attempts` (> 0 ಆಗಿರುವಾಗ ಮಾತ್ರ), ಜೊತೆಗೆ `X-OmniRoute-Request-Id` ಮತ್ತು `X-OmniRoute-Version`. ಇವುಗಳನ್ನು ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳು, `/v1/responses`, `/v1/messages`, **ಮತ್ತು ಮೀಡಿಯಾ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು** — `/v1/embeddings`, `/v1/images/generations`, `/v1/audio/speech`, `/v1/audio/transcriptions`, `/v1/rerank`, `/v1/videos/generations`, `/v1/music/generations`, ಮತ್ತು `/v1/moderations` (ವೆಚ್ಚ ಯಾವಾಗಲೂ `0`) — ಹೊರಸೂಸುತ್ತವೆ. ಬೆಲೆ ಲಭ್ಯವಿದ್ದಾಗ ಮೀಡಿಯಾ ವೆಚ್ಚವನ್ನು ಪ್ರತಿ ಮಾಡ್ಯಾಲಿಟಿಗೆ (ಪ್ರತಿ-ಚಿತ್ರ, ಪ್ರತಿ-ಸೆಕೆಂಡ್, ಪ್ರತಿ-ಅಕ್ಷರ, ಪ್ರತಿ ಹುಡುಕಾಟ-ಘಟಕ) ಲೆಕ್ಕಹಾಕಲಾಗುತ್ತದೆ; ಇಲ್ಲದಿದ್ದರೆ `0` (ಫೇಲ್-ಓಪನ್). > **ಕ್ಯಾಶ್-ಹಿಟ್ ವೆಚ್ಚದ ಅರ್ಥವ್ಯಾಪ್ತಿ:** ಸೆಮ್ಯಾಂಟಿಕ್-ಕ್ಯಾಶ್ HIT (`X-OmniRoute-Cache-Hit: true`) ನಲ್ಲಿ ಅಪ್ಸ್ಟ್ರೀಮ್ ಕರೆ ಮಾಡಲಾಗುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ `X-OmniRoute-Response-Cost` ಎಂಬುದು `0.0000000000` ಆಗಿರುತ್ತದೆ (ಹಿಟ್ ಅನ್ನು ಒದಗಿಸುವ **ಹೆಚ್ಚುವರಿ** ವೆಚ್ಚ). ಮೂಲ/ಆಗಬಹುದಾಗಿದ್ದ ವೆಚ್ಚವನ್ನು `X-OmniRoute-Cost-Saved` ನಲ್ಲಿ ಪ್ರತ್ಯೇಕವಾಗಿ ವರದಿ ಮಾಡಲಾಗುತ್ತದೆ. ಬಿಲ್ಲಿಂಗ್ ಬಳಕೆದಾರರು `X-OmniRoute-Response-Cost` ಮೊತ್ತವನ್ನು ಕೂಡಿಸಬೇಕು (ಹಿಟ್ಗಳಿಗೆ ಯಾವುದೇ ವೆಚ್ಚವಿಲ್ಲ); ಕ್ಯಾಶ್ ವಿಶ್ಲೇಷಣೆಯು `X-OmniRoute-Cost-Saved` ಅನ್ನು ಒಟ್ಟುಗೂಡಿಸಬಹುದು. ## ಎಕ್ಸ್ಕ್ಲೂಸಿವ್ ಮ್ಯಾನೇಜ್ಡ್ ಸೆಷನ್ ಲೀಸ್ಗಳು ಎಕ್ಸ್ಕ್ಲೂಸಿವ್ ಮ್ಯಾನೇಜ್ಡ್ ಸೆಷನ್ ಲೀಸಿಂಗ್ ಒಂದು ಆಯ್ಕೆ-ಮಾಡುವ, ಕ್ಲೈಂಟ್-ತಟಸ್ಥ ರೂಟಿಂಗ್ ಒಪ್ಪಂದವಾಗಿದೆ: ಒಬ್ಬ ಸಕ್ರಿಯ ಮಾಲೀಕರು ಒಂದು ಅರ್ಹ OmniRoute ಸಂಪರ್ಕವನ್ನು ಹೊಂದಿರುತ್ತಾರೆ. ಇದು ಮಾದರಿಯನ್ನು ಲೀಸ್ ಮಾಡುವುದಿಲ್ಲ, OAuth ಅಗತ್ಯವಿಲ್ಲ, ನಿರ್ದಿಷ್ಟ ಕ್ಲೈಂಟ್ ಅನ್ನು ಗುರುತಿಸುವುದಿಲ್ಲ, ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಪೂರೈಕೆದಾರರನ್ನು ಬಯಸುವುದಿಲ್ಲ. ದೃಢೀಕರಿಸುವ API ಕೀಲಿಯು `lease:exclusive` ಸ್ಕೋಪ್ ಮತ್ತು ಸ್ಪಷ್ಟವಾದ ಖಾಲಿಯಲ್ಲದ `allowedConnections` ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿರಬೇಕು. ಡೇಟಾಬೇಸ್ ಮ್ಯುಟೇಶನ್ ಬೌಂಡರಿ ಕೀ ರಚನೆ ಮತ್ತು ಭಾಗಶಃ ಅಪ್ಡೇಟ್ಗಳಲ್ಲಿ ಎರಡೂ ಕ್ಷೇತ್ರಗಳನ್ನು ಒಟ್ಟಾಗಿ ಜಾರಿಗೊಳಿಸುತ್ತದೆ. ```http POST /api/v1/session-leases Authorization: Bearer Content-Type: application/json X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters> {"action":"acquire","model":"glm/glm-4.6"} ``` ಯಶಸ್ವಿ ಸ್ವಾಧೀನ, ನವೀಕರಣ ಮತ್ತು ಬಿಡುಗಡೆ ಪ್ರತಿಕ್ರಿಯೆಗಳು ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ಗಳು, `state`, ಮತ್ತು ನಿಖರವಾದ ಧನಾತ್ಮಕ `generation` ಅನ್ನು ಬಹಿರಂಗಪಡಿಸುತ್ತವೆ, ಆದರೆ ಆಯ್ಕೆಮಾಡಿದ ಸಂಪರ್ಕ ಅಥವಾ ರುಜುವಾತುಗಳನ್ನು ಎಂದಿಗೂ ಬಹಿರಂಗಪಡಿಸುವುದಿಲ್ಲ. ನವೀಕರಣ ಮತ್ತು ಬಿಡುಗಡೆ JSON ಬಾಡಿಯಲ್ಲಿ ಜನರೇಶನ್ ಅನ್ನು ಒದಗಿಸುತ್ತವೆ: ```json { "action": "renew", "generation": 1 } ``` ```json { "action": "release", "generation": 1, "reason": "OWNER_EXIT" } ``` ಸಕ್ರಿಯ ಲೀಸ್ ಮಾಲೀಕರು ತನ್ನ ಪ್ರಸ್ತುತ ಬೈಂಡಿಂಗ್ಗಾಗಿ ಗೌಪ್ಯತೆ-ಸುರಕ್ಷಿತ ಪ್ರದರ್ಶನ ಮೆಟಾಡೇಟಾವನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ವಿನಂತಿಸಬಹುದು: ```json { "action": "status", "generation": 1 } ``` ```json { "state": "ACTIVE", "generation": 1, "acquiredAt": "2026-08-28T12:00:00.000Z", "renewedAt": "2026-08-28T12:00:30.000Z", "expiresAt": "2026-08-28T12:02:30.000Z", "connection": { "displayName": "Primary Codex", "provider": "codex" } } ``` ಈ ಆಯ್ಕೆ-ಮಾಡುವ ಸ್ಥಿತಿ ಕ್ರಿಯೆಯನ್ನು ಅಪಾರದರ್ಶಕ ಮಾಲೀಕರು, ದೃಢೀಕರಿಸಿದ ನಿರ್ವಹಿಸಿದ API ಕೀ, ಮತ್ತು ಒಂದು ಡೇಟಾಬೇಸ್ ವಹಿವಾಟಿನಲ್ಲಿ ನಿಖರವಾದ ಸಕ್ರಿಯ ಜನರೇಶನ್ ಮೂಲಕ ರಕ್ಷಿಸಲಾಗಿದೆ. `displayName` ಕೇವಲ ಟ್ರಿಮ್ ಮಾಡಿದ ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ ಸಂಪರ್ಕದ ಹೆಸರು; ಯಾವುದೇ ಸುರಕ್ಷಿತ ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ ಹೆಸರು ಇಲ್ಲದಿದ್ದಾಗ ಅದು `null` ಆಗಿರುತ್ತದೆ. OmniRoute ಎಂದಿಗೂ ಇಮೇಲ್ ಅಥವಾ ರಚಿತವಾದ ಖಾತೆ ಗುರುತನ್ನು ಬದಲಿಸುವುದಿಲ್ಲ. ಪೂರೈಕೆದಾರ ಮೌಲ್ಯವು ಸೂಕ್ಷ್ಮವಲ್ಲದ ಪ್ರದರ್ಶನ ಲೇಬಲ್ ಆಗಿದೆ ಮತ್ತು ಎಂದಿಗೂ ರಚಿತವಾದ ಹೊಂದಾಣಿಕೆಯ-ಪೂರೈಕೆದಾರ ಗುರುತಿಸುವಿಕೆಯಲ್ಲ. ರುಜುವಾತುಗಳು, ಟೋಕನ್ಗಳು, ಕುಕೀಗಳು, ಕಚ್ಚಾ ಸಂಪರ್ಕ ಅಥವಾ API ಕೀ ಐಡಿಗಳು, ಮಾಲೀಕರ ಹ್ಯಾಶ್ಗಳು, ಫೆನ್ಸಿಂಗ್ ರಹಸ್ಯಗಳು ಮತ್ತು ಆಂತರಿಕ ರೂಟಿಂಗ್ ಡೇಟಾವನ್ನು ಹೊರತುಪಡಿಸಲಾಗಿದೆ. ತಪ್ಪಾದ-ಕೀ, ತಪ್ಪಾದ-ಮಾಲೀಕ, ಹಳೆಯ-ಜನರೇಶನ್, ಕಾಣೆಯಾದ, ಅವಧಿ ಮೀರಿದ, ಬಿಡುಗಡೆ ಮಾಡಿದ, ಮತ್ತು ಅಮಾನ್ಯಗೊಳಿಸಿದ ಹುಡುಕಾಟಗಳು ಒಂದೇ `409 LEASE_FENCE_STALE` ದೋಷವನ್ನು ಸಂಪರ್ಕ ಮೆಟಾಡೇಟಾ ಇಲ್ಲದೆ ಹಿಂದಿರುಗಿಸುತ್ತವೆ. ಸಾಮರ್ಥ್ಯ-ನಿರೀಕ್ಷೆಯ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಪಡೆದ ಕ್ಲೈಂಟ್ ಪರಿಶೀಲಿಸಲು ಯಾವುದೇ ಸಕ್ರಿಯ ಬೈಂಡಿಂಗ್ ಅನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ. ರೂಟಿಂಗ್ ಸಕ್ರಿಯ ಲೀಸ್ ಅನ್ನು ಪರಿವರ್ತಿಸಿದಾಗ, ಅದೇ ಜನರೇಶನ್ ಮಾನ್ಯವಾಗಿರುತ್ತದೆ ಮತ್ತು ಸ್ಥಿತಿಯು ಹೊಸ ಬೈಂಡಿಂಗ್ ಅನ್ನು ಪರಮಾಣುವಾಗಿ ಹಿಂದಿರುಗಿಸುತ್ತದೆ, ಹಳೆಯದನ್ನು ಎಂದಿಗೂ ಹಿಂದಿರುಗಿಸುವುದಿಲ್ಲ. ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕ್ಲೈಂಟ್ಗಳು ಬದಲಾಗದೆ ಉಳಿಯುತ್ತವೆ ಏಕೆಂದರೆ ಸ್ವಾಧೀನ, ನವೀಕರಣ, ಬಿಡುಗಡೆ, ಮತ್ತು ಕಾಯುವ ಪ್ರತಿಕ್ರಿಯೆಗಳು ತಮ್ಮ ಹಿಂದಿನ ಆಕಾರಗಳನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತವೆ. ಈ ಸರ್ವರ್ ಒಪ್ಪಂದವು ಸ್ಟಾಕ್ OpenAI Codex `/status` ಅನ್ನು ಬದಲಾಯಿಸುವುದಿಲ್ಲ. ಸ್ಟಾಕ್ Codex ಪ್ರಸ್ತುತ ತನ್ನ ಮಾದರಿ ಪೂರೈಕೆದಾರ ಮತ್ತು ಅಂತರ್ನಿರ್ಮಿತ ದೃಢೀಕರಣ/ಖಾತೆ ಸ್ಥಿತಿಯನ್ನು ವರದಿ ಮಾಡುತ್ತದೆ ಆದರೆ ಅನಿಯಂತ್ರಿತ ಕಸ್ಟಮ್ ಪೂರೈಕೆದಾರ ಖಾತೆ ಮೆಟಾಡೇಟಾವನ್ನು ಪ್ರದರ್ಶಿಸುವುದಿಲ್ಲ; ನಂತರದ ಕ್ಲೈಂಟ್ ಇಂಟಿಗ್ರೇಷನ್ ಈ ಕ್ರಿಯೆಯನ್ನು ಕರೆಯಬೇಕು ಮತ್ತು `connection.displayName` ಅನ್ನು ಹೇಗೆ ಪ್ರದರ್ಶಿಸಬೇಕು ಎಂದು ನಿರ್ಧರಿಸಬೇಕು. ಪ್ರತಿ ನಿರ್ವಹಿಸಿದ ಇನ್ಫರೆನ್ಸ್ ವಿನಂತಿಯು ನಂತರ ಎರಡೂ ನಿಯಂತ್ರಣ ಹೆಡರ್ಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ: ```http X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters> X-OmniRoute-Lease-Generation: 1 ``` ನಿಖರವಾದ ಮಾಲೀಕರು, ಜನರೇಶನ್, ಸಕ್ರಿಯ ಸಂಪರ್ಕ, ಮತ್ತು ದೃಢೀಕರಿಸಿದ API ಕೀಲಿಯನ್ನು ಪ್ರತಿ ಬೆಂಬಲಿತ ಅಪ್ಸ್ಟ್ರೀಮ್ ಪ್ರಯತ್ನದ ಮೊದಲು ತಕ್ಷಣವೇ ರಕ್ಷಿಸಲಾಗುತ್ತದೆ. ಇನ್ನೊಂದು ಕೀಲಿಯೊಂದಿಗೆ ಮಾಲೀಕ ಮತ್ತು ಜನರೇಶನ್ ಅನ್ನು ಮರುಪ್ರಸಾರ ಮಾಡುವುದು ವಿಫಲಗೊಳ್ಳುತ್ತದೆ, ಆ ಕೀಲಿಯು ಅದೇ ಸಂಪರ್ಕವನ್ನು ಅನುಮತಿಸಿದರೂ ಸಹ. ಕಚ್ಚಾ ಮಾಲೀಕರನ್ನು ಉಳಿಸಿಕೊಳ್ಳಲಾಗುವುದಿಲ್ಲ, ಲಾಗ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ, ವಿನಂತಿಯ ಸ್ನ್ಯಾಪ್ಶಾಟ್ನಲ್ಲಿ ಉಳಿಸಿಕೊಳ್ಳಲಾಗುವುದಿಲ್ಲ, ಅಥವಾ ಅಪ್ಸ್ಟ್ರೀಮ್ಗೆ ಫಾರ್ವರ್ಡ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ. ತಾತ್ಕಾಲಿಕ ಸ್ಪರ್ಧೆಯು HTTP `429` ಅನ್ನು `Retry-After` ಮತ್ತು ಇದರೊಂದಿಗೆ ಹಿಂದಿರುಗಿಸುತ್ತದೆ: ```json { "state": "WAITING_FOR_CAPACITY", "error": { "type": "lease_error", "code": "LEASE_CAPACITY_UNAVAILABLE" }, "reason": "NO_FREE_ELIGIBLE_CONNECTION", "retryAfter": 30 } ``` ಈ ಪ್ರತಿಕ್ರಿಯೆಯು ಸಾಮಾನ್ಯ ಅರ್ಹ ಸೆಟ್ ಖಾಲಿಯಾಗಿಲ್ಲ ಮತ್ತು ಪ್ರತಿ ಉಚಿತ ಅಭ್ಯರ್ಥಿಯನ್ನು ವಿದೇಶಿ ಸಕ್ರಿಯ ಲೀಸ್ನಿಂದ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಲಾಗಿದೆ ಎಂದು ಮಾತ್ರ ಅರ್ಥೈಸುತ್ತದೆ. ಬೆಂಬಲಿಸದ ಮಾದರಿಗಳು/ಪೂರೈಕೆದಾರರು, ನೀತಿ ಹೊಂದಾಣಿಕೆಯಾಗದಿರುವುದು, ಕೂಲ್ಡೌನ್, ಕೋಟಾ, ಆರೋಗ್ಯ, ಮತ್ತು ಇತರ ಸಾಮಾನ್ಯ ಅರ್ಹತಾ ವೈಫಲ್ಯಗಳು ತಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ OmniRoute ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತವೆ. ### `x-omniroute-compression` ಸಂಕುಚನ ಯೋಜನೆಯ ಪ್ರತಿ-ವಿನಂತಿಯ ಓವರ್ರೈಡ್. ಅತ್ಯುನ್ನತ ಆದ್ಯತೆ — ರೂಟಿಂಗ್-ಕಾಂಬೊ ಓವರ್ರೈಡ್, ಸಕ್ರಿಯ ಪ್ರೊಫೈಲ್, ಸ್ವಯಂ-ಪ್ರಚೋದಕ, ಮತ್ತು ಪ್ಯಾನಲ್ ಡೀಫಾಲ್ಟ್ ಅನ್ನು ಮೀರಿಸುತ್ತದೆ. ಮೌಲ್ಯಗಳು: | ಮೌಲ್ಯ | ಪರಿಣಾಮ | | ------------- | -------------------------------------------------------------------------------------------------------------- | | `off` | ಈ ವಿನಂತಿಗಾಗಿ ಯಾವುದೇ ಸಂಕುಚನವಿಲ್ಲ. | | `default` | ಪ್ಯಾನಲ್-ಪಡೆದ ಡೀಫಾಲ್ಟ್ ಪ್ರೊಫೈಲ್ (ಸಕ್ರಿಯ ಪ್ರೊಫೈಲ್ ಅನ್ನು ನಿರ್ಲಕ್ಷಿಸುತ್ತದೆ). ಲಾಸ್ಸಿ ಎಂಜಿನ್ಗಳನ್ನು ಆಫ್ ಮಾಡಲಾಗುತ್ತದೆ. | | `safe` | ಕೇವಲ ಡೆಡಪ್ ಮತ್ತು ವೈಟ್ಸ್ಪೇಸ್ ಫೋಲ್ಡಿಂಗ್. | | `allow-lossy` | ಸಾರಾಂಶಗಳು ಮತ್ತು ಶೈಲಿಯ ಮರುಬರಹಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ಈ ವಿನಂತಿಗಾಗಿ ಆಪರೇಟರ್ ಯೋಜನೆಯನ್ನು ಇರಿಸಿಕೊಳ್ಳಿ. | | `engine:` | ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ ಒಂದೇ ಎಂಜಿನ್, ಉದಾ. `engine:rtk`. ಆ ಎಂಜಿನ್ಗಾಗಿ ಪ್ರತಿ-ವಿನಂತಿಯ ಆಯ್ಕೆ. | | `` | ಹೆಸರಿನಿಂದ (ಕೇಸ್-ಇನ್ಸೆನ್ಸಿಟಿವ್) ಮೊದಲು, ನಂತರ ಐಡಿಯಿಂದ ಹೊಂದಿಕೆಯಾಗುವ ಹೆಸರಿನ ಕಾಂಬೊ. | ಟಿಪ್ಪಣಿಗಳು: - ಅಜ್ಞಾತ ಮೌಲ್ಯಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಲಾಗುತ್ತದೆ (ವಿನಂತಿಯನ್ನು ಎಂದಿಗೂ ತಿರಸ್ಕರಿಸಲಾಗುವುದಿಲ್ಲ); ರೆಸಲ್ಯೂಶನ್ ಸಾಮಾನ್ಯ ಆಪರೇಟರ್ ಆದ್ಯತೆಗೆ ಬೀಳುತ್ತದೆ. - ಬಹು ಕಾಂಬೊಗಳು ಒಂದೇ ಹೆಸರನ್ನು ಹಂಚಿಕೊಂಡರೆ, ನಿರ್ಣಾಯಕ ಹೊಂದಾಣಿಕೆಗಾಗಿ ಕಾಂಬೊ **id** ಅನ್ನು ಪಾಸ್ ಮಾಡಿ. - `off` ಅಥವಾ `default` ಎಂಬ ಹೆಸರನ್ನು ಹೊಂದಿರುವ ಕಾಂಬೊವನ್ನು ಹೆಸರಿನಿಂದ ಆಯ್ಕೆ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ (ಆ ಕೀವರ್ಡ್ಗಳನ್ನು ಮೊದಲು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗುತ್ತದೆ); ಅಂತಹ ಕಾಂಬೊವನ್ನು ಅದರ ಐಡಿಯಿಂದ ಉಲ್ಲೇಖಿಸಿ. - ಮಾಸ್ಟರ್ ಸಂಕುಚನ ಸ್ವಿಚ್ ಒಂದು ಕಠಿಣ ಗೇಟ್ ಆಗಿದೆ: ಸಂಕುಚನವನ್ನು ಜಾಗತಿಕವಾಗಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದಾಗ, ಈ ಹೆಡರ್ ಅದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಅನ್ವಯಿಸಿದ ಯೋಜನೆಯನ್ನು ಪ್ರತಿಕ್ರಿಯೆ ಹೆಡರ್ನಲ್ಲಿ ಪ್ರತಿಧ್ವನಿಸಲಾಗುತ್ತದೆ: ``` X-OmniRoute-Compression: ; source= ``` ಇಲ್ಲಿ `` ಎಂಬುದು `request-header`, `routing-override`, `active-profile`, `auto-trigger`, `default`, ಅಥವಾ `off` ನಲ್ಲಿ ಒಂದಾಗಿದೆ. --- ## ಎಂಬೆಡಿಂಗ್ಗಳು ```bash POST /v1/embeddings Authorization: Bearer your-api-key Content-Type: application/json { "model": "nebius/Qwen/Qwen3-Embedding-8B", "input": "The food was delicious" } ``` ಲಭ್ಯವಿರುವ ಪೂರೈಕೆದಾರರು: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, **OpenRouter**, Jina AI. ಕ್ಯಾಟಲಾಗ್ ಐಡಿಗಳು `provider/model` ಸ್ವರೂಪದಲ್ಲಿರುತ್ತವೆ (ಉದಾಹರಣೆ: `jina-ai/jina-embeddings-v5-omni-small`). ರಿಜಿಸ್ಟ್ರಿಯಲ್ಲಿ ಕಾಣಿಸುವ ನೇರ Jina ಮಾದರಿ ಐಡಿಗಳೂ (ಉದಾಹರಣೆಗೆ `jina-embeddings-v5-text-small`, `jina-reranker-v3.5`) ಪರಿಹರಿಸಲ್ಪಡುತ್ತವೆ. Jina embed/rerank/classify/segment ಮೊದಲು ಡ್ಯಾಶ್ಬೋರ್ಡ್ನ `jina-ai` ರುಜುವಾತುಗಳನ್ನು ಬಳಸುತ್ತವೆ; ಯಾವುದೇ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಕೀ ಇಲ್ಲದಿದ್ದಾಗ ಮಾತ್ರ `JINA_AI_API_KEY` ಪರ್ಯಾಯವಾಗಿರುತ್ತದೆ. `jina-reader` ಕಾರ್ಡ್ Reader / `r.jina.ai`ಗೆ ಮಾತ್ರ (`POST /v1/web/fetch`) ಮತ್ತು ಅದು ಎಂದಿಗೂ ಎಂಬೆಡಿಂಗ್ಗಳು ಅಥವಾ rerank ಅನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ. ಬಹುಮಾಧ್ಯಮ ಬೆಂಬಲವನ್ನು ಪ್ರಕಟಿಸುವ ರಿಜಿಸ್ಟ್ರಿ ಮಾದರಿಗಳು ಪೂರೈಕೆದಾರ-ತಟಸ್ಥವಾದ ಗರಿಷ್ಠ 32 ರಚನಾತ್ಮಕ ಐಟಂಗಳನ್ನೂ ಸ್ವೀಕರಿಸುತ್ತವೆ. ಮಾಧ್ಯಮ ಐಟಂ ಪ್ರಕಾರಗಳು `text`, `image`, `audio`, `video`, ಮತ್ತು `document`. ಅವುಗಳ ಮಾಧ್ಯಮ `source` `{"type":"url","url":"https://..."}` ಅಥವಾ `{"type":"base64","data":"...","media_type":"..."}` ಆಗಿರುತ್ತದೆ. Jina v5 Omni (`jina-ai/jina-embeddings-v5-omni-small`, `jina-ai/jina-embeddings-v5-omni-nano`, ಮತ್ತು ಫ್ಯಾಮಿಲಿ ಅಲಿಯಾಸ್ `jina-ai/jina-embeddings-v5-omni` → omni-small) Jinaದ ಮೂಲ EmbeddingsV5Request ಡಾಕ್ಯುಮೆಂಟ್ಗಳನ್ನೂ ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು `https://api.jina.ai/v1/embeddings`ಗೆ **ಯಾವುದೇ ಬದಲಾವಣೆಯಿಲ್ಲದೆ ಫಾರ್ವರ್ಡ್ ಮಾಡುತ್ತದೆ**: ```json { "model": "jina-ai/jina-embeddings-v5-omni-small", "task": "retrieval.query", "normalized": true, "input": [ { "text": "a red bicycle" }, { "image": "https://example.com/bike.png" }, { "content": [{ "text": "caption" }, { "image": "data:image/png;base64,..." }] } ] } ``` ಮೂಲ `{ image | audio | video | pdf }` ಮೌಲ್ಯಗಳು ಸಾರ್ವಜನಿಕ HTTPS URL, `data:` URI, ಅಥವಾ ಕಚ್ಚಾ base64 ಆಗಿರಬಹುದು. OmniRoute ಆ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಸ್ಟ್ರಿಂಗ್ ಆಗಿ ಪರಿವರ್ತಿಸುವುದಿಲ್ಲ ಅಥವಾ ಮೂಲ ಇಮೇಜ್ URLಗಳನ್ನು ಪಡೆಯುವುದಿಲ್ಲ — Jina ಸಾರ್ವಜನಿಕ ಮಾಧ್ಯಮವನ್ನು ಸ್ವತಃ ಪಡೆಯುತ್ತದೆ. ಹೆಚ್ಚುವರಿ Jina ಫೀಲ್ಡ್ಗಳನ್ನು (`task`, `normalized`, `truncate`, `embedding_type`) ಫಾರ್ವರ್ಡ್ ಮಾಡಲಾಗುತ್ತದೆ. ಪಠ್ಯ-ಮಾತ್ರದ Jina SKUಗಳು ಇನ್ನೂ ಪಠ್ಯೇತರ ಡಾಕ್ಯುಮೆಂಟ್ಗಳನ್ನು ತಿರಸ್ಕರಿಸುತ್ತವೆ. ಭದ್ರತೆ ಮತ್ತು ಸಾರಿಗೆ ಮಿತಿಗಳು: - ರಿಮೋಟ್ ಮಾಧ್ಯಮ URLಗಳು ಸಾರ್ವಜನಿಕ HTTPS ಆಗಿರಬೇಕು. ಕ್ಯಾನಾನಿಕಲ್ `{type,source:url}` ಐಟಂಗಳನ್ನು ಸರ್ವರ್-ಸೈಡ್ನಲ್ಲಿ ಪಡೆಯಲಾಗುತ್ತದೆ (ರೀಡೈರೆಕ್ಟ್ ಮರುಮೌಲ್ಯಮಾಪನ, ಕಾಲಾವಧಿ ಮಿತಿ, ಗಾತ್ರದ ಮಿತಿಗಳು, ಸಾರ್ವಜನಿಕ DNS, ಸಂಪರ್ಕ ಪಿನ್ನಿಂಗ್) ಮತ್ತು ಪೂರೈಕೆದಾರರ ಕರೆಗೆ ಮೊದಲು ಇನ್ಲೈನ್ ಮಾಡಲಾಗುತ್ತದೆ. Jina-ಮೂಲದ `{image:"https://..."}` ಐಟಂಗಳನ್ನು ಅದೇ ಸಾರ್ವಜನಿಕ-HTTPS ಪರಿಶೀಲನೆಯ ನಂತರ ಇದ್ದಂತೆಯೇ ಫಾರ್ವರ್ಡ್ ಮಾಡಲಾಗುತ್ತದೆ; Jina URL ಅನ್ನು ಪಡೆಯುತ್ತದೆ. - ಇನ್ಲೈನ್ base64 ಮಾಧ್ಯಮವು ಪ್ರತಿ ಐಟಂಗೆ ಡಿಕೋಡ್ ಮಾಡಿದ 8 MiB ಮತ್ತು ವಿನಂತಿಯಾದ್ಯಂತ ಡಿಕೋಡ್ ಮಾಡಿದ 16 MiBಗೆ ಸೀಮಿತವಾಗಿದೆ. ಪೂರೈಕೆದಾರ ಪರಿವರ್ತನೆ (ಕ್ಯಾನಾನಿಕಲ್ ಐಟಂಗಳನ್ನು ಎಂದಿಗೂ ಬದಲಾವಣೆಯಿಲ್ಲದೆ ಫಾರ್ವರ್ಡ್ ಮಾಡುವುದಿಲ್ಲ): - Jina ಬಹುಮಾಧ್ಯಮ ಮಾದರಿಗಳು: ಪ್ರತಿಯೊಂದು ಮೇಲ್ಮಟ್ಟದ ಐಟಂ ಇನ್ಲೈನ್ ಮಾಧ್ಯಮಕ್ಕಾಗಿ data URIಗಳನ್ನು ಬಳಸುವ ಒಂದು ಮಾಧ್ಯಮ-ಕೀ ಹೊಂದಿರುವ ಆಬ್ಜೆಕ್ಟ್ (`text` / `image` / `audio` / `video` / `pdf`) ಆಗುತ್ತದೆ; ಪ್ರತಿ ಮೇಲ್ಮಟ್ಟದ ಐಟಂಗೆ ಒಂದು ವೆಕ್ಟರ್. - Gemini Embedding 2 ಫ್ಯಾಮಿಲಿ: ಒಂದು ಮೇಲ್ಮಟ್ಟದ ಅರೆ `content.parts` (`text` ಅಥವಾ `inline_data`) ಹೊಂದಿರುವ ಒಂದೇ ಮೂಲ `models/{model}:embedContent` ವಿನಂತಿಯಾಗುತ್ತದೆ. - llama.cpp (`llama-cpp/`, ಸ್ಥಳೀಯ ಸರ್ವರ್ ಲೋಡ್ ಮಾಡಿದ ಯಾವುದೇ ಮಾದರಿ): ಕ್ಯಾನಾನಿಕಲ್ `text` ಐಟಂಗಳು ಸರಳ ಸ್ಟ್ರಿಂಗ್ಗಳಾಗುತ್ತವೆ ಮತ್ತು `image` / `audio` / `video` ಪ್ರತಿಯೊಂದೂ ಇನ್ಲೈನ್ ಡೇಟಾದೊಂದಿಗೆ llama-serverನ ಚಾಟ್ ಕಂಟೆಂಟ್ ಭಾಗಗಳನ್ನು (`image_url`, `input_audio` ಜೊತೆಗೆ `wav` / `mp3` / `flac` ಸ್ವರೂಪ, `input_video`) ಬಳಸುವ ಒಂದು `{"content": [part]}` ಆಬ್ಜೆಕ್ಟ್ ಆಗುತ್ತದೆ; ಪ್ರತಿ ಮೇಲ್ಮಟ್ಟದ ಐಟಂಗೆ ಒಂದು ವೆಕ್ಟರ್. ಸರ್ವರ್ ಅನ್ನು `--embedding --mmproj …` ಜೊತೆಗೆ ಚಲಾಯಿಸಬೇಕು; ಪ್ರೊಜೆಕ್ಟರ್ ಇಲ್ಲದಿದ್ದರೆ ಅದು ಮಾಧ್ಯಮವನ್ನು ಸ್ವತಃ ತಿರಸ್ಕರಿಸುತ್ತದೆ. `document`ಗೆ ಬೆಂಬಲವಿಲ್ಲ. - ಸ್ಪಷ್ಟವಾದ ಮಾಧ್ಯಮ ಪ್ರಕಾರದ ಮೆಟಾಡೇಟಾ ಇಲ್ಲದ ಅಜ್ಞಾತ/ಡೈನಾಮಿಕ್ ಮಾದರಿಗಳು ರಚನಾತ್ಮಕ ಇನ್ಪುಟ್ ಅನ್ನು HTTP 400 ಮೂಲಕ ತಿರಸ್ಕರಿಸುತ್ತವೆ. ```json { "model": "jina-ai/jina-embeddings-v5-omni-small", "input": [ { "type": "text", "text": "A red bicycle" }, { "type": "image", "source": { "type": "url", "url": "https://example.com/bicycle.png" } } ], "dimensions": 512, "encoding_format": "float" } ``` ಬೆಂಬಲವಿಲ್ಲದ ಮಾದರಿ/ಮಾಧ್ಯಮ ಪ್ರಕಾರದ ಸಂಯೋಜನೆಗಳು ಐಟಂ ಅನ್ನು ಬಲವಂತವಾಗಿ ಪರಿವರ್ತಿಸುವ ಬದಲು HTTP 400 ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತವೆ. ಹಳೆಯ ಸ್ಟ್ರಿಂಗ್/ಟೋಕನ್ ವಿನಂತಿಗಳಲ್ಲಿನ ಇನ್ಪುಟ್ ಅಲ್ಲದ ವಿಸ್ತರಣಾ ಫೀಲ್ಡ್ಗಳು ಬದಲಾವಣೆಯಿಲ್ಲದೆ ಪಾಸ್ ಆಗುವುದನ್ನು ಮುಂದುವರಿಸುತ್ತವೆ. ```bash # ಎಲ್ಲಾ ಎಂಬೆಡಿಂಗ್ ಮಾದರಿಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ GET /v1/embeddings ``` --- ## ಚಿತ್ರ ರಚನೆ ```bash POST /v1/images/generations Authorization: Bearer your-api-key Content-Type: application/json { "model": "openai/gpt-image-2", "prompt": "ಪರ್ವತಗಳ ಮೇಲಿನ ಸುಂದರ ಸೂರ್ಯಾಸ್ತ", "size": "1024x1024" } ``` ಲಭ್ಯವಿರುವ ಪೂರೈಕೆದಾರರಲ್ಲಿ OpenAI (GPT Image 2), xAI (Grok Image), Together AI (FLUX), Fireworks AI, Nebius (FLUX), Hyperbolic, NanoBanana, **OpenRouter**, **ZenMux**, SD WebUI (ಸ್ಥಳೀಯ), ComfyUI (ಸ್ಥಳೀಯ) ಸೇರಿವೆ. `n`, `data[]` ನಲ್ಲಿ `n` ಚಿತ್ರಗಳನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಪ್ರತಿ ಕರೆಗೆ ಒಂದು ಚಿತ್ರವನ್ನು ಹಿಂತಿರುಗಿಸುವ ಅಪ್ಸ್ಟ್ರೀಮ್ API ಹೊಂದಿರುವ ಪೂರೈಕೆದಾರರಿಗೆ (Black Forest Labs, Stability AI, Leonardo, Ideogram, Haiper, Hyperbolic, Magnific/Freepik, NVIDIA NIM, Cloudflare Workers AI) ಪ್ರತ್ಯೇಕವಾಗಿ `n` ಅಪ್ಸ್ಟ್ರೀಮ್ ಕರೆಗಳನ್ನು ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಒಂದೇ ಸಮಯದಲ್ಲಿ ಗರಿಷ್ಠ 4 ಕರೆಗಳು ಚಾಲನೆಯಲ್ಲಿರುತ್ತವೆ. ಸ್ಥಿರ `seed` ಅನ್ನು ಕರೆ ಸೂಚ್ಯಂಕದ ಆಧಾರದಲ್ಲಿ (`seed`, `seed + 1`, …) ಸರಿಹೊಂದಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಚಿತ್ರಗಳು ವಿಭಿನ್ನವಾಗಿದ್ದರೂ ಮರುಸೃಷ್ಟಿಸಬಹುದಾಗಿ ಉಳಿಯುತ್ತವೆ. `n` ಅನ್ನು ಗರಿಷ್ಠ 10ಕ್ಕೆ ಮಿತಿಗೊಳಿಸಲಾಗಿದೆ. ಯಾವುದೇ ಕರೆ ವಿಫಲವಾದರೆ ಸಂಪೂರ್ಣ ವಿನಂತಿಯೇ ವಿಫಲವಾಗುತ್ತದೆ. ಫ್ಯಾನ್-ಔಟ್ ಸ್ವರೂಪಗಳ ಪಟ್ಟಿ `open-sse/handlers/imageGeneration/fanOut.ts` ನಲ್ಲಿರುವ `SINGLE_IMAGE_FANOUT_FORMATS` ಆಗಿದೆ. ZenMux ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ API-ಕೀ ಸಂಪರ್ಕವನ್ನು ಮರುಬಳಕೆ ಮಾಡುತ್ತದೆ ಮತ್ತು `zenmux/` ಅಥವಾ `zm/` ಪೂರ್ವಪ್ರತ್ಯಯಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ: - `zenmux/openai/gpt-image-2`, ZenMux ನ OpenAI Images API ಅನ್ನು ಬಳಸುತ್ತದೆ. ಆಯ್ಕೆಗಳಲ್ಲಿ `size`, `quality`, `n`, `output_format`, `output_compression`, `background`, ಮತ್ತು `response_format` ಸೇರಿವೆ. - `zm/meta/muse-image-1.0` ನಂತಹ ಇತರ ಪ್ರಕಾಶಕರು ZenMux ನ Vertex AI `:predict` ಎಂಡ್ಪಾಯಿಂಟ್ ಅನ್ನು ಬಳಸುತ್ತಾರೆ. `n`, `sampleCount` ಗೆ; `aspect_ratio`, `aspectRatio` ಗೆ; ಮತ್ತು `image_size` (`1K`, `2K`, `4K`), `sampleImageSize` ಗೆ ಮ್ಯಾಪ್ ಆಗುತ್ತವೆ. ಪಿಕ್ಸೆಲ್ `size` ಕೇವಲ ಆಕಾರಾನುಪಾತವನ್ನು ಒದಗಿಸುತ್ತದೆ, ಖಾತರಿಪಡಿಸಿದ ಪಿಕ್ಸೆಲ್ ಆಯಾಮಗಳನ್ನಲ್ಲ. ಬೆಂಬಲಿತ ಅನುಪಾತಗಳು, ರೆಸಲ್ಯೂಶನ್ಗಳು ಮತ್ತು ಸಂಖ್ಯೆಗಳು ಮಾದರಿಯನ್ನು ಅವಲಂಬಿಸಿ ಬದಲಾಗುತ್ತವೆ. - `zm/inclusionai/ming-image-0.1-design` ತನ್ನ ಆಯಾಮಗಳನ್ನು ತಾನೇ ಆಯ್ಕೆಮಾಡುತ್ತದೆ. `size`, `aspect_ratio`, ಮತ್ತು `image_size` ಅನ್ನು ಬಿಟ್ಟುಬಿಡಿ; ಸ್ಪಷ್ಟ ಮೌಲ್ಯಗಳು HTTP 400 ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತವೆ. `output_format` ಬಳಸಿ PNG, JPEG, ಮತ್ತು WebP ಅನ್ನು ವಿನಂತಿಸಬಹುದು. ಈ ಏಕೀಕರಣವು ಪಠ್ಯದಿಂದ-ಚಿತ್ರ ರಚನೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ, ಉಲ್ಲೇಖ-ಚಿತ್ರ ಸಂಪಾದನೆಯನ್ನಲ್ಲ. Vertex ಔಟ್ಪುಟ್ ಅನ್ನು `data[].b64_json` ಗೆ ಸಾಮಾನ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ; `response_format: "url"` ಅಪ್ಸ್ಟ್ರೀಮ್ HTTPS URL ಅನ್ನು ಅಥವಾ ಚಿತ್ರ ಬೈಟ್ಗಳು ಮಾತ್ರ ಲಭ್ಯವಿರುವಾಗ base64 ಡೇಟಾ URL ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಖಾಲಿ/ಫಿಲ್ಟರ್ ಮಾಡಿದ ಔಟ್ಪುಟ್ಗಳು ಖಾಲಿ ಯಶಸ್ಸಿನ ಬದಲಿಗೆ ದೋಷವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತವೆ. ಮಾದರಿಯ ಪ್ರವೇಶವು ZenMux ಖಾತೆಯನ್ನು ಅವಲಂಬಿಸಿದೆ. [ZenMux ನ Vertex API](https://docs.zenmux.ai/api/vertexai/generate-images) ಮತ್ತು [OpenAI Images API](https://docs.zenmux.ai/api/openai/generate-an-image) ನೋಡಿ. ```bash # ಎಲ್ಲಾ ಚಿತ್ರ ಮಾದರಿಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ GET /v1/images/generations ``` --- ## ಡಾಕ್ಯುಮೆಂಟ್ OCR ```bash POST /v1/ocr Authorization: Bearer your-api-key Content-Type: application/json { "model": "mistral/mistral-ocr-latest", "document": { "type": "document_url", "document_url": "https://example.com/invoice.pdf" } } ``` `model`, `provider/model` ಪೂರ್ವಪ್ರತ್ಯಯದ ಮೂಲಕ OCR ಪೂರೈಕೆದಾರರನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತದೆ; ಕೇವಲ model id (ಉದಾ. `mistral-ocr-latest`) ಅದರ ನೋಂದಾಯಿತ ಪೂರೈಕೆದಾರರಿಗೆ ಪರಿಹರಿಸಲ್ಪಡುತ್ತದೆ ಮತ್ತು `model` ಅನ್ನು ಬಿಟ್ಟರೆ ಅದು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ Mistral (`mistral-ocr-latest`) ಅನ್ನು ಬಳಸುತ್ತದೆ. ನೋಂದಾಯಿತ ಪೂರೈಕೆದಾರರು (`open-sse/config/ocrRegistry.ts`): | ಪೂರೈಕೆದಾರ id | Model id | `model` ಮೌಲ್ಯ | ಟಿಪ್ಪಣಿಗಳು | | ----------------------------- | -------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | | `mistral` | `mistral-ocr-latest` | `mistral/mistral-ocr-latest` (ಅಥವಾ ಕೇವಲ `mistral-ocr-latest`) | ಸಿಂಕ್ರೊನಸ್ — ಒಂದೇ upstream ಕರೆಯಿಂದ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನೇರವಾಗಿ ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ. | | `azure-document-intelligence` | `prebuilt-read` | `azure-document-intelligence/prebuilt-read` | ಅಸಿಂಕ್ರೊನಸ್ upstream (`analyze` + poll) — ಕೆಳಗೆ ನೋಡಿ. | | `vertex-deepseek-ocr` | `deepseek-ocr-maas` | `vertex-deepseek-ocr/deepseek-ocr-maas` | ಸಿಂಕ್ರೊನಸ್, Vertex AI ನ `openapi/chat/completions` ಪಾಲುದಾರ endpoint ಮೂಲಕ — auth/URL ಗಾಗಿ ಕೆಳಗೆ ನೋಡಿ. | ಎಲ್ಲಾ ಮೂರು ಪೂರೈಕೆದಾರರು ಒಂದೇ Mistral-ಆಕಾರದ body ಯಲ್ಲಿ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತಾರೆ: ```json { "pages": [{ "index": 0, "markdown": "# ಹೊರತೆಗೆದ ಪಠ್ಯ..." }], "model": "mistral-ocr-latest", "usage_info": { "pages_processed": 1 } } ``` ### Azure Document Intelligence poll ಹರಿವು Azure Document Intelligence ನ `analyze` API ಅಸಿಂಕ್ರೊನಸ್ ಆಗಿದೆ: ಆರಂಭಿಕ ವಿನಂತಿಯು body ಬದಲಿಗೆ `Operation-Location` header ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ ಮತ್ತು ಫಲಿತಾಂಶಕ್ಕಾಗಿ poll ಮಾಡಬೇಕು. Handler (`open-sse/handlers/ocr.ts`) ಆ URL ಅನ್ನು ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ ಒಮ್ಮೆ, ಗರಿಷ್ಠ 30 ಪ್ರಯತ್ನಗಳವರೆಗೆ poll ಮಾಡುತ್ತದೆ; `ok` ಅಲ್ಲದ poll ಪ್ರತಿಕ್ರಿಯೆ ಅಥವಾ `"failed"` ಸ್ಥಿತಿ ಬಂದರೆ ತಕ್ಷಣ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ (poll ಮಾಡುವುದನ್ನು ಮುಂದುವರಿಸುವುದಿಲ್ಲ) ಮತ್ತು ಪ್ರಯತ್ನಗಳ ಮಿತಿ ಮುಗಿದ ನಂತರವೂ ಕಾರ್ಯಾಚರಣೆ ಚಾಲನೆಯಲ್ಲಿದ್ದರೆ `504` ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಅಂತಿಮ Azure ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕರೆಮಾಡುವವರಿಗೆ ಹಿಂತಿರುಗಿಸುವ ಮೊದಲು Mistral ಬಳಸುವ ಅದೇ `pages`/`markdown` ಆಕಾರಕ್ಕೆ ಸಾಮಾನ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಕ್ಲೈಂಟ್ ಕೋಡ್ನಲ್ಲಿ ಪೂರೈಕೆದಾರರಿಗಾಗಿ ವಿಶೇಷ ನಿರ್ವಹಣೆ ಅಗತ್ಯವಿಲ್ಲ. ### Vertex AI DeepSeek OCR ದೃಢೀಕರಣ ಮತ್ತು endpoint ಪರಿಹಾರ `vertex-deepseek-ocr`, chat/image ಟ್ರಾಫಿಕ್ಗಾಗಿ OmniRoute ಈಗಾಗಲೇ ಬೆಂಬಲಿಸುವ ಅದೇ Vertex AI ದೃಢೀಕರಣವನ್ನು (`open-sse/executors/vertex.ts`) ಮರುಬಳಕೆ ಮಾಡುತ್ತದೆ: ಸಂಪರ್ಕದ API key, Service Account JSON ರುಜುವಾತಾಗಿರುತ್ತದೆ (JWT-bearer ಹರಿವಿನ ಮೂಲಕ ಅಲ್ಪಾವಧಿಯ OAuth access token ಗೆ ವಿನಿಮಯ ಮಾಡಲಾಗುತ್ತದೆ) ಅಥವಾ ಈಗಾಗಲೇ ರಚಿಸಲಾದ OAuth access token ಅನ್ನು ಯಥಾವತ್ತಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. Upstream endpoint URL ಎಂಬುದು Vertex ನ ಸಾಮಾನ್ಯ `openapi/chat/completions` ಪಾಲುದಾರ endpoint ಆಗಿದ್ದು, ಸಂಪರ್ಕದ project ಮತ್ತು region ನಿಂದ ನಿರ್ಮಿಸಲಾಗುತ್ತದೆ — ಸ್ಪಷ್ಟವಾದ `providerSpecificData.project`/`providerSpecificData.region` ಯಾವಾಗಲೂ ಆದ್ಯತೆ ಪಡೆಯುತ್ತದೆ; ಇಲ್ಲದಿದ್ದರೆ project ಅನ್ನು Service Account JSON ನ `project_id` ನಿಂದ ಪಡೆಯಲಾಗುತ್ತದೆ ಮತ್ತು region ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ `us-central1` ಆಗಿರುತ್ತದೆ. ಎರಡೂ ಪರಿಹಾರಗಳು `open-sse/handlers/ocr.ts` (`resolveVertexOcrAccessToken`, `resolveVertexOcrBaseUrl`) ನಲ್ಲಿ ನಡೆಯುತ್ತವೆ ಮತ್ತು `handleOcr` ಗೆ ರವಾನಿಸುವ ಮೊದಲು `src/app/api/v1/ocr/route.ts` ಅವುಗಳನ್ನು ಬಳಸುತ್ತದೆ. --- ## ಮಾದರಿಗಳ ಪಟ್ಟಿ ```bash GET /v1/models Authorization: Bearer your-api-key → OpenAI ಸ್ವರೂಪದಲ್ಲಿ ಎಲ್ಲಾ ಚಾಟ್, ಎಂಬೆಡಿಂಗ್ ಮತ್ತು ಚಿತ್ರ ಮಾದರಿಗಳು + ಕಾಂಬೊಗಳನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ ``` ### ಮಾದರಿ ಐಡಿ ಪೂರ್ವಪ್ರತ್ಯಯಗಳು (`?prefix=`) ಹೆಚ್ಚಿನ ಮಾದರಿಗಳನ್ನು **ಪೂರೈಕೆದಾರ ಪೂರ್ವಪ್ರತ್ಯಯದ** ಅಡಿಯಲ್ಲಿ ಪ್ರಕಟಿಸಲಾಗುತ್ತದೆ. ನಿಮಗೆ ಯಾವ ಪೂರ್ವಪ್ರತ್ಯಯ ಸಿಗುತ್ತದೆ ಎಂಬುದನ್ನು `MODELS_CATALOG_PREFIX_MODE` ವೈಶಿಷ್ಟ್ಯ ಫ್ಲ್ಯಾಗ್ ನಿಯಂತ್ರಿಸುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಪ್ರಶ್ನೆ ಪ್ಯಾರಾಮೀಟರ್ ಮೂಲಕ **ಪ್ರತಿ ವಿನಂತಿಗೆ** ಅತಿಕ್ರಮಿಸಬಹುದು — ಇತರ ಎಲ್ಲರಿಗೂ ಅನ್ವಯಿಸುವ ಸರ್ವರ್-ವ್ಯಾಪಿ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಬದಲಾಯಿಸದೆಯೇ ಸ್ವಚ್ಛವಾದ ಪಟ್ಟಿಯನ್ನು ಬಯಸುವ ಕ್ಲೈಂಟ್ಗೆ ಇದು ಉಪಯುಕ್ತವಾಗಿದೆ: ```bash GET /v1/models?prefix=alias # ಪ್ರತಿ ಮಾದರಿಗೆ ಒಂದು ಐಡಿ — ಚಿಕ್ಕ ಅಲಿಯಾಸ್ ಪೂರ್ವಪ್ರತ್ಯಯ GET /v1/models?prefix=dual # ಎರಡೂ ರೂಪಗಳು (ಸರ್ವರ್ ಡೀಫಾಲ್ಟ್) GET /v1/models?prefix=canonical # ಸಂಪೂರ್ಣ provider-id ಪೂರ್ವಪ್ರತ್ಯಯ ಮಾತ್ರ ``` | ಮೋಡ್ | ಹೊರಸೂಸುವುದು | ಟಿಪ್ಪಣಿಗಳು | | ----------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `dual` | `cc/claude-sonnet-4-6` **ಮತ್ತು** `claude/claude-sonnet-4-6` | **ಡೀಫಾಲ್ಟ್.** ಎರಡೂ ಐಡಿಗಳು ಒಂದೇ ಮಾದರಿಗೆ ರೂಟ್ ಆಗುತ್ತವೆ; ಯಾವುದಾದರೂ ಒಂದು ರೂಪವನ್ನು ಹಾರ್ಡ್ಕೋಡ್ ಮಾಡಿರುವ ಕ್ಲೈಂಟ್ ಕಾನ್ಫಿಗ್ಗಳು ಕಾರ್ಯನಿರ್ವಹಿಸುವುದನ್ನು ಮುಂದುವರಿಸಲು ಇವುಗಳನ್ನು ಉಳಿಸಲಾಗಿದೆ. ಇದು ಕ್ಯಾಟಲಾಗ್ನ ಗಾತ್ರವನ್ನು ಸರಿಸುಮಾರು ದ್ವಿಗುಣಗೊಳಿಸುತ್ತದೆ. | | `alias` | `cc/claude-sonnet-4-6` | ಪ್ರತಿ ಮಾದರಿಗೆ ಒಂದು ನಮೂದು. ಪ್ರತ್ಯೇಕ ಅಲಿಯಾಸ್ ಇಲ್ಲದ ಪೂರೈಕೆದಾರರೂ ತಮ್ಮ ನಮೂದನ್ನು ಹೊರಸೂಸುತ್ತಾರೆ, ಆದ್ದರಿಂದ ಯಾವುದೂ ಕಳೆದುಹೋಗುವುದಿಲ್ಲ. | | `canonical` | `claude/claude-sonnet-4-6` | ಸಂಪೂರ್ಣ provider-id ಪೂರ್ವಪ್ರತ್ಯಯದ ಅಡಿಯಲ್ಲಿ ಪ್ರತಿ ಮಾದರಿಗೆ ಒಂದು ನಮೂದು. ಪ್ರತ್ಯೇಕ ಅಲಿಯಾಸ್ ಇಲ್ಲದ ಪೂರೈಕೆದಾರರೂ (ಉದಾ. `antigravity/…`, `agy/…`) ಇಲ್ಲಿ ತಮ್ಮ ಏಕೈಕ ಐಡಿಯನ್ನು ಹೊರಸೂಸುತ್ತಾರೆ, ಆದ್ದರಿಂದ ಯಾವುದೂ ಕಳೆದುಹೋಗುವುದಿಲ್ಲ. | `dual`-ಮೋಡ್ ಮಿರರ್ ಅನ್ನು ಪ್ರಶ್ನೆ ಪ್ಯಾರಾಮೀಟರ್ ಇಲ್ಲದೆಯೂ ಗುರುತಿಸಬಹುದು: ಅದು ಪ್ರಾಥಮಿಕ ಐಡಿಯನ್ನು ಸೂಚಿಸುವ `parent` ಫೀಲ್ಡ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಮಾದರಿ ಆಯ್ಕೆಕಾರಕವನ್ನು ಪ್ರದರ್ಶಿಸುವ ಕ್ಲೈಂಟ್ಗಳು `?prefix=alias` ಅನ್ನು ವಿನಂತಿಸಬೇಕು — [OmniCopilot VS Code ಎಕ್ಸ್ಟೆನ್ಶನ್](../guides/VSCODE-COPILOT.md) ಇದನ್ನೇ ಮಾಡುತ್ತದೆ. ### ಪ್ರತ್ಯೇಕವಾಗಿ ಮರೆಮಾಡಲಾದ ಚಾಟ್ ಮಾದರಿಗಳು ತನ್ನ ಪೂರೈಕೆದಾರ ಪುಟದಲ್ಲಿ **ಮರೆಮಾಡಲಾಗಿದೆ** ಎಂದು ಗುರುತಿಸಲಾದ ಮಾದರಿಯನ್ನು ಕ್ಯಾಟಲಾಗ್ನಿಂದ ಹೊರಗಿಡಲಾಗುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ವಿನಂತಿಸಿದಾಗ HTTP `404` / `model_not_found` ನೊಂದಿಗೆ ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ. ಈ ಪರಿಶೀಲನೆಯು ಪೂರೈಕೆದಾರ ಅಲಿಯಾಸ್ಗಳು, ಹೊಂದಾಣಿಕೆಯ ಪೂರೈಕೆದಾರ ನೋಡ್ ಪೂರ್ವಪ್ರತ್ಯಯಗಳು ಮತ್ತು ಸಂಪರ್ಕ ಡೀಫಾಲ್ಟ್ಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ಪರಿಹರಿಸಲಾದ ಪೂರೈಕೆದಾರ ಮತ್ತು ಮಾದರಿಯನ್ನು ಬಳಸುತ್ತದೆ. ಕಾಂಬೊ ಮರೆಮಾಡಲಾದ ಗುರಿಗಳನ್ನು ಬಿಟ್ಟುಬಿಡುತ್ತದೆ ಮತ್ತು ಗೋಚರಿಸುವ ಸಹೋದರ ಮಾದರಿಯನ್ನು ಬಳಸಬಹುದು; ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಯಾವುದೇ ಗುರಿ ಉಳಿಯದಿದ್ದಾಗ ಅದು ಅದೇ ದೋಷ ಕೋಡ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಮರೆಮಾಡುವಿಕೆಯನ್ನು ತೆಗೆದುಹಾಕುವುದು ಮುಂದಿನ ವಿನಂತಿಯಿಂದ ಜಾರಿಗೆ ಬರುತ್ತದೆ. ಚಿತ್ರಕ್ಕೆ-ಮಾತ್ರ ಅನ್ವಯಿಸುವ ಗೋಚರತೆ ಅತಿಕ್ರಮಣಗಳು ಅದೇ ಐಡಿ ಹೊಂದಿರುವ ಚಾಟ್ ಮಾದರಿಯನ್ನು ಮರೆಮಾಡುವುದಿಲ್ಲ. ಈ ಪ್ರತ್ಯೇಕ ಮಾದರಿ ಸೆಟ್ಟಿಂಗ್, ಸ್ಪಷ್ಟ ಡಿಸ್ಪ್ಯಾಚ್ ಅನ್ನು ಉಳಿಸಿಕೊಂಡೇ ಕ್ಯಾಟಲಾಗ್ ಪ್ರಕಟಣೆ ಮತ್ತು ಸ್ವಯಂ-ರೂಟಿಂಗ್ ಅಭ್ಯರ್ಥಿಗಳನ್ನು ಫಿಲ್ಟರ್ ಮಾಡುವ [ಮಾದರಿ ಬಹಿರಂಗೀಕರಣ ಅನುಮತಿ/ನಿರಾಕರಣೆ ಪಟ್ಟಿಗಳಿಂದ](../routing/MODEL_EXPOSURE_LIST.md) ಪ್ರತ್ಯೇಕವಾಗಿದೆ. API ಕೀ ಮಾದರಿ ಅನುಮತಿಗಳು ಸ್ವತಂತ್ರವಾಗಿ ಅನ್ವಯಿಸುವುದನ್ನು ಮುಂದುವರಿಸುತ್ತವೆ. ಡೀಫಾಲ್ಟ್ ಕ್ಯಾಟಲಾಗ್ ಪೂರ್ವಪ್ರತ್ಯಯ ಮೋಡ್ `dual` ಆಗಿಯೇ ಉಳಿಯುತ್ತದೆ. ### ಚಿಂತನೆ-ರಹಿತ ಮಾದರಿ ರೂಪಾಂತರಗಳು ಚಿಂತನೆ-ಸಾಮರ್ಥ್ಯವುಳ್ಳ Claude ಮಾದರಿಗಳಿಗಾಗಿ, `/v1/models` ಐಡಿಯು `claude-3-omniroute-no-thinking/` ಪೂರ್ವಪ್ರತ್ಯಯವನ್ನು ಹೊಂದಿರುವ **ಚಿಂತನೆ-ರಹಿತ** ರೂಪಾಂತರವನ್ನೂ ಪ್ರಕಟಿಸುತ್ತದೆ: ``` claude-3-omniroute-no-thinking// ``` ಈ ಐಡಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿದಾಗ (ಉದಾ. ಯಾವಾಗಲೂ `thinking` ಬ್ಲಾಕ್ ಅನ್ನು ಲಗತ್ತಿಸುವ Claude Code ಕಾನ್ಫಿಗ್ನಲ್ಲಿ), ತಾರ್ಕಿಕತೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ ನಿಜವಾದ `/` ಗೆ ಮರಳಿ ಪರಿಹರಿಸಲಾಗುತ್ತದೆ — `/v1/messages` ಪಥದಲ್ಲಿ `thinking:{type:"disabled"}`, ಅಥವಾ `/v1/chat/completions` ಪಥದಲ್ಲಿ `reasoning`/`reasoning_effort` ಫೀಲ್ಡ್ಗಳನ್ನು ಕೈಬಿಡಲಾಗುತ್ತದೆ. ಚಿಂತನೆಯನ್ನು ಬೆಂಬಲಿಸುವ **ಮತ್ತು** `disabled` ಅನ್ನು ಗೌರವಿಸುವ Claude-ಕುಟುಂಬದ ಮಾದರಿಗಳಿಗೆ ಮಾತ್ರ ಈ ರೂಪಾಂತರವನ್ನು ಪಟ್ಟಿಮಾಡಲಾಗುತ್ತದೆ (ಆದ್ದರಿಂದ, ಉದಾ. `disabled` ಅನ್ನು ತಿರಸ್ಕರಿಸುವ adaptive-only ಮಾದರಿಗಳನ್ನು ಹೊರಗಿಡಲಾಗುತ್ತದೆ). ಆಪರೇಟರ್ಗಳು `ModelSpec.noThinkingAlias` ಮೂಲಕ ಪ್ರತಿ ಮಾದರಿಗೆ ಈ ರೂಪಾಂತರವನ್ನು ಬಲವಂತವಾಗಿ ಸಕ್ರಿಯ ಅಥವಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಬಹುದು. --- ## ಪೂರೈಕೆದಾರ ಪ್ಲಗಿನ್ ಮ್ಯಾನಿಫೆಸ್ಟ್ ```bash GET /api/v1/provider-plugin-manifest ``` Bifrost, CLIProxyAPI ಮತ್ತು ಭವಿಷ್ಯದ ಸೈಡ್ಕಾರ್ ರೂಟರ್ಗಳು ಬಳಸುವ JSON-ಸುರಕ್ಷಿತ ಪೂರೈಕೆದಾರ ಪ್ಲಗಿನ್ ಮ್ಯಾನಿಫೆಸ್ಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು TypeScript ಪೂರೈಕೆದಾರ ರಿಜಿಸ್ಟ್ರಿಯಿಂದ ರಚಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ OAuth ಕ್ಲೈಂಟ್ ರಹಸ್ಯಗಳು, ರನ್ಟೈಮ್ ಪರಿಸರ ರೆಸಲ್ಯೂಶನ್, ಎಕ್ಸಿಕ್ಯೂಟರ್ ಫಂಕ್ಷನ್ಗಳು, ವಿನಂತಿ ಹೆಡರ್ಗಳು ಮತ್ತು ಖಾತೆ ಡೇಟಾವನ್ನು ಹೊರತುಪಡಿಸುತ್ತದೆ. ಸೈಡ್ಕಾರ್ ಪ್ರಕ್ರಿಯೆಯ ಹೊರಗೆ ರನ್ ಆಗುತ್ತಿರುವಾಗ ಮತ್ತು `open-sse/config/providerPluginManifestRegistry.ts` ಅನ್ನು ನೇರವಾಗಿ ಇಂಪೋರ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗದಿದ್ದಾಗ ಈ ಎಂಡ್ಪಾಯಿಂಟ್ ಬಳಸಿ. --- ## ಹೊಂದಾಣಿಕೆ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು | ವಿಧಾನ | ಪಥ | ಸ್ವರೂಪ | | ----- | ----------------------------------------- | --------------------------------------------- | | POST | `/v1/chat/completions` | OpenAI | | POST | `/v1/messages` | Anthropic | | POST | `/v1/responses` | OpenAI Responses | | POST | `/v1/embeddings` | OpenAI | | POST | `/v1/images/generations` | OpenAI Images | | POST | `/v1/images/edits` | OpenAI Images (ಸಂಪಾದನೆ/ಇನ್ಪೇಂಟ್) | | POST | `/v1/videos/generations` | OpenAI-ಶೈಲಿಯ ವೀಡಿಯೊ ರಚನೆ | | POST | `/v1/music/generations` | OpenAI-ಶೈಲಿಯ ಸಂಗೀತ ರಚನೆ | | POST | `/v1/audio/transcriptions` | OpenAI Audio (STT) | | POST | `/v1/audio/speech` | OpenAI TTS (ಆಡಿಯೊ ಬಾಡಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ) | | POST | `/v1/rerank` | Cohere/Voyage-ಶೈಲಿಯ ಮರುಶ್ರೇಯಾಂಕ | | POST | `/v1/classify` | Jina ವರ್ಗೀಕರಣ (`api.jina.ai`) | | POST | `/v1/segment` | Jina ಸೆಗ್ಮೆಂಟರ್ (`segment.jina.ai`) | | POST | `/v1/moderations` | OpenAI Moderations | | 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 | | GET | `/api/v1/vscode/{token}/` | OpenAI ಕ್ಯಾಟಲಾಗ್ ಅಲಿಯಾಸ್ | | GET | `/api/v1/vscode/{token}/models` | OpenAI ಮಾದರಿಗಳ ಅಲಿಯಾಸ್ | | POST | `/api/v1/vscode/{token}/chat/completions` | OpenAI ಟೋಕನ್ಯುಕ್ತ ಅಲಿಯಾಸ್ | | POST | `/api/v1/vscode/{token}/responses` | OpenAI Responses ಟೋಕನ್ಯುಕ್ತ ಅಲಿಯಾಸ್ | | POST | `/api/v1/vscode/{token}/api/chat` | Ollama ಟೋಕನ್ಯುಕ್ತ ಅಲಿಯಾಸ್ | | GET | `/api/v1/vscode/{token}/api/tags` | Ollama ಟ್ಯಾಗ್ಗಳ ಟೋಕನ್ಯುಕ್ತ ಅಲಿಯಾಸ್ | ಎಲ್ಲಾ POST ಮಾರ್ಗಗಳು ಒಂದೇ ರಚನೆಯನ್ನು ಅನುಸರಿಸುತ್ತವೆ: `Bearer your-api-key` + Zod-ಮೌಲ್ಯೀಕರಿಸಿದ JSON ಬಾಡಿ (`v1RerankSchema`, `v1ModerationSchema`, `v1AudioSpeechSchema`, ಇತ್ಯಾದಿ; `src/shared/validation/schemas.ts` ನೋಡಿ). ಸ್ಕೀಮಾ ವಿಫಲವಾದಾಗ 4xx ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ. `Authorization: Bearer ...` ಅನ್ನು ಲಗತ್ತಿಸಲು ಸಾಧ್ಯವಾಗದ ಕ್ಲೈಂಟ್ಗಳಿಗಾಗಿ, ಕೆಳಗೆ ದಾಖಲಿಸಿರುವ ಮೀಸಲಾದ `/api/v1/vscode/{token}/...` ಎಂಡ್ಪಾಯಿಂಟ್ಗಳ ಮೂಲಕ ಅಥವಾ ಕ್ವೆರಿ-ಸ್ಟ್ರಿಂಗ್ ಹೊಂದಾಣಿಕೆಯ ಮೂಲಕ (`?token=...`, `?apiKey=...`, `?api_key=...`, `?key=...`) URL ನಲ್ಲಿ API ಕೀಗಳನ್ನು OmniRoute ಸ್ವೀಕರಿಸುತ್ತದೆ. ```bash # ಮರುಶ್ರೇಯಾಂಕ (ಕ್ಲೌಡ್ ರಿಜಿಸ್ಟ್ರಿ ಪೂರೈಕೆದಾರ ಅಥವಾ "/" ರೂಪದಲ್ಲಿರುವ OpenAI-ಹೊಂದಾಣಿಕೆಯ ಪೂರೈಕೆದಾರ ನೋಡ್) POST /v1/rerank { "model": "jina-ai/jina-reranker-v3.5", "query": "...", "documents": ["..."] } # Jina ವರ್ಗೀಕರಣ (Foundation API ರುಜುವಾತುಗಳು) POST /v1/classify { "model": "jina-embeddings-v5-text-small", "input": ["..."], "labels": ["a", "b"] } # Jina ಸೆಗ್ಮೆಂಟರ್ POST /v1/segment { "content": "...", "return_chunks": true } # Jina ಹುಡುಕಾಟ (s.jina.ai; ಪೂರೈಕೆದಾರ ಅಲಿಯಾಸ್ಗಳು: jina-search, jina-ai, jina) POST /v1/search { "query": "...", "provider": "jina-search" } # ಮಾಡರೇಶನ್ಗಳು POST /v1/moderations { "model": "omni-moderation-latest", "input": "..." } # TTS — audio/mpeg (ಅಥವಾ ವಿನಂತಿಸಿದ ಸ್ವರೂಪದ) ಬಾಡಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ POST /v1/audio/speech { "model": "openai/tts-1", "input": "Hello", "voice": "alloy" } # Soniox TTS ಗೆ ಒಂದು ಭಾಷೆ ಮತ್ತು ಧ್ವನಿ ಅಗತ್ಯವಿದೆ: `language` ನ ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯ "en"; ಧ್ವನಿ ಇಲ್ಲದಿದ್ದರೆ # ಅಥವಾ OpenAI ಯ ಸಾಮಾನ್ಯ ಧ್ವನಿ ಹೆಸರು (alloy, nova, …) ಇದ್ದರೆ ಅದು "Adrian" ಆಗುತ್ತದೆ POST /v1/audio/speech { "model": "soniox/tts-rt-v1", "input": "Xin chào", "voice": "Adrian", "language": "vi" } # ಚಿತ್ರ ಸಂಪಾದನೆ (multipart) POST /v1/images/edits -F image=@input.png -F prompt="..." -F mask=@mask.png # ವೀಡಿಯೊ / ಸಂಗೀತ ರಚನೆ (ಪೂರೈಕೆದಾರ-ಪೂರ್ವಪ್ರತ್ಯಯವಿರುವ ಮಾದರಿ ID) POST /v1/videos/generations { "model": "runway/gen-3", "prompt": "..." } POST /v1/music/generations { "model": "kie/suno-v4.0", "prompt": "..." } ``` > **ಮರುಶ್ರೇಯಾಂಕ ಪೂರೈಕೆದಾರ ನೋಡ್ಗಳು:** `POST /v1/rerank` ವಿನಂತಿಗಳನ್ನು `/` ಎಂದು ವಿಳಾಸ ನೀಡಲಾದ OpenAI-ಹೊಂದಾಣಿಕೆಯ ಪೂರೈಕೆದಾರ ನೋಡ್ಗಳಿಗೂ > (ಗೇಟ್ವೇ ಹಿಂದಿರುವ oMLX, vLLM, Infinity, TEI, …) ರೂಟ್ ಮಾಡುತ್ತದೆ. ಲೂಪ್ಬ್ಯಾಕ್ > ನೋಡ್ಗಳು (`localhost`, `127.0.0.1`, `172.16.0.0/12`) ಯಾವಾಗಲೂ ಅರ್ಹವಾಗಿರುತ್ತವೆ; ಹಾಗೆಯೇ ಆಪರೇಟರ್ > `OMNIROUTE_LOCAL_PROVIDER_NODE_HOSTS` ನಲ್ಲಿ ಪಟ್ಟಿ ಮಾಡುವ ಹೋಸ್ಟ್ನೇಮ್ಗಳೂ ಅರ್ಹವಾಗಿರುತ್ತವೆ (ಉದಾ. `http://reranker:8080/v1` ನಂತಹ > Docker/Compose ಸೇವೆಯ ಹೆಸರು; ಇವುಗಳನ್ನು ನೇರವಾಗಿ ಕರೆಮಾಡಲಾಗುತ್ತದೆ, ಎಂದಿಗೂ `HTTP(S)_PROXY` ಅಥವಾ > ಸಂಪರ್ಕದ ಪಿನ್ ಮಾಡಿದ ಪ್ರಾಕ್ಸಿ ಮೂಲಕ ಅಲ್ಲ). ಬೇರೆ ಯಾವುದೇ > ಹೋಸ್ಟ್ನಲ್ಲಿರುವ ನೋಡ್ಗಳು — LAN ಯಂತ್ರ ಅಥವಾ Tailscale ಪೀರ್ — ಆಪರೇಟರ್ > `RERANK_REMOTE_PROVIDER_NODES` ವೈಶಿಷ್ಟ್ಯ ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ **ಮತ್ತು** ನೋಡ್ನ ಮೂಲ URL ಪೂರೈಕೆದಾರರ > ಹೊರಹೋಗುವ URL ನೀತಿಯನ್ನು (`OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS` / `OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS`) ಪೂರೈಸಿದಾಗ ಮಾತ್ರ ಅರ್ಹವಾಗುತ್ತವೆ. > ಮೆಮೊರಿ ಎಂಜಿನ್ನ ಮರುಶ್ರೇಯಾಂಕ ಹಂತವು ಈ ಮಾರ್ಗವನ್ನು > ಲೂಪ್ಬ್ಯಾಕ್ ಮೂಲಕ ಕರೆಮಾಡುತ್ತದೆ; ಆದ್ದರಿಂದ Memory ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿನ `rerankProviderModel` ಗೂ ಇದೇ ನಿಯಮ ಅನ್ವಯಿಸುತ್ತದೆ. > > **ಸ್ಥಳೀಯ ಸರ್ವರ್ ರಚನೆಗಳು:** ನೋಡ್ ಅನ್ನು `/v1/rerank` ನಲ್ಲಿ ಮತ್ತು 404 ಬಂದರೆ `/rerank` > (Infinity, TEI) ನಲ್ಲಿ ಕರೆಮಾಡಲಾಗುತ್ತದೆ. ಅಪ್ಸ್ಟ್ರೀಮ್ ಬಾಡಿಯು Cohere/OpenAI ಕಾಗುಣಿತ (`documents`, > `return_documents`) ಮತ್ತು TEI ಕಾಗುಣಿತ (`texts`, `return_text`) ಎರಡನ್ನೂ ಒಳಗೊಂಡಿರುತ್ತದೆ; ಅಪ್ಸ್ಟ್ರೀಮ್ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು > Cohere ಎನ್ವಲಪ್ಗೆ ಸಾಮಾನ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ: TEI ಯ ಸರಳ `[{index, score, text}]`, ತೆಳುವಾದ ಗೇಟ್ವೇಗಳಿಂದ ಬರುವ > `{results: [{index, score}]}`, ಮತ್ತು Voyage-ಶೈಲಿಯ `{data: [...]}` ಇವೆಲ್ಲವೂ ಕ್ಲೈಂಟ್ಗೆ > `{results: [{index, relevance_score, document?}]}` ರೂಪದಲ್ಲಿ ಹಿಂತಿರುಗುತ್ತವೆ; ಸ್ಕೋರ್ ಪ್ರಕಾರ ವಿಂಗಡಿಸಿ `top_n` ಗೆ ಮಿತಿಗೊಳಿಸಲಾಗುತ್ತದೆ. > **ಪ್ರೊವೈಡರ್-ನೋಡ್ ಅನ್ವೇಷಣೆ:** OpenAI-ಹೊಂದಾಣಿಕೆಯ ಪ್ರೊವೈಡರ್ ನೋಡ್ನಲ್ಲಿರುವ ಮಾದರಿಗಳು ನೋಡ್ ಪೂರ್ವಪ್ರತ್ಯಯದ ಅಡಿಯಲ್ಲಿ `GET /v1/models` ನಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ. > ಯಾವುದೇ ಎಂಡ್ಪಾಯಿಂಟ್ ಮೆಟಾಡೇಟಾವನ್ನು ಹೊಂದಿರದ ಸಾಲುಗಳು (ಸ್ಥಳೀಯ `/v1/models` ಪಟ್ಟಿಗಳಲ್ಲಿ ಸಾಮಾನ್ಯ) > ನೋಡ್ನ `apiType` ಅನ್ನು ಆನುವಂಶಿಕವಾಗಿ ಪಡೆಯುತ್ತವೆ; ಆದ್ದರಿಂದ `embeddings` ನೋಡ್ನ ಮಾದರಿಗಳು ಚಾಟ್ಗೆ ಡೀಫಾಲ್ಟ್ ಆಗುವ ಬದಲು `type: "embedding"` ಆಗಿರುತ್ತವೆ ಮತ್ತು > `rerank` ನೋಡ್ನ ಮಾದರಿಗಳು `type: "rerank"` ಆಗಿರುತ್ತವೆ; ಸಿಂಕ್ ಮಾಡಿದ ಅಥವಾ ಹಸ್ತಚಾಲಿತವಾಗಿ ಸೇರಿಸಿದ ಸಾಲಿನಲ್ಲಿರುವ ಸ್ಪಷ್ಟ > `supportedEndpoints` ಇನ್ನೂ ಆದ್ಯತೆ ಪಡೆಯುತ್ತದೆ. ### ಮೀಸಲಾದ ಪ್ರೊವೈಡರ್ ರೂಟ್ಗಳು ```bash POST /v1/providers/{provider}/chat/completions POST /v1/providers/{provider}/embeddings POST /v1/providers/{provider}/images/generations ``` ಪ್ರೊವೈಡರ್ ಪೂರ್ವಪ್ರತ್ಯಯವು ಇಲ್ಲದಿದ್ದರೆ ಅದನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸೇರಿಸಲಾಗುತ್ತದೆ. ಹೊಂದಿಕೆಯಾಗದ ಮಾದರಿಗಳು `400` ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತವೆ. --- ## ಫೈಲ್ಗಳ API ಬ್ಯಾಚ್ ಇನ್ಪುಟ್/ಔಟ್ಪುಟ್ ಮತ್ತು ಫೈಲ್-ಉದ್ದೇಶದ ಅಪ್ಲೋಡ್ಗಳಿಗಾಗಿ OpenAI-ಹೊಂದಾಣಿಕೆಯ ಫೈಲ್ಗಳ ಎಂಡ್ಪಾಯಿಂಟ್. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ------------------------ | -------------------------------------------------------------------------------------------------------------------- | | POST | `/v1/files` | ಫೈಲ್ ಅಪ್ಲೋಡ್ ಮಾಡಿ (multipart: `file`, `purpose`, `expires_after[anchor]`, `expires_after[seconds]`) — ಗರಿಷ್ಠ 512 MiB | | GET | `/v1/files` | ದೃಢೀಕರಿಸಲಾದ API ಕೀಗಾಗಿ ಫೈಲ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | GET | `/v1/files/[id]` | ಫೈಲ್ನ ಮೆಟಾಡೇಟಾವನ್ನು ಹಿಂಪಡೆಯಿರಿ | | DELETE | `/v1/files/[id]` | ಫೈಲ್ ಅಳಿಸಿ | | GET | `/v1/files/[id]/content` | ಕಚ್ಚಾ ಫೈಲ್ನ ವಿಷಯವನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡಿ ಮರಳಿ ಕಳುಹಿಸಿ | **ದೃಢೀಕರಣ:** ಬೇರರ್ API ಕೀ — `getApiKeyRequestScope` ಮೂಲಕ ಫೈಲ್ಗಳ ವ್ಯಾಪ್ತಿಯನ್ನು ಪ್ರತಿ-API-ಕೀಗೆ ಸೀಮಿತಗೊಳಿಸಲಾಗಿದೆ. ಒಂದು ಕೀ ತನ್ನದೇ ಫೈಲ್ಗಳನ್ನು ಮಾತ್ರ ನೋಡುತ್ತದೆ, ಡೌನ್ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅಳಿಸುತ್ತದೆ; ಕೀ ಇಲ್ಲದ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಸೆಷನ್ ಸಂಪೂರ್ಣ ಇನ್ಸ್ಟಾನ್ಸ್ ಅನ್ನು ಓದುತ್ತದೆ; ಮಾಲೀಕರಿಲ್ಲದ ಫೈಲ್ಗೆ (ಅನಾಮಧೇಯ ಅಥವಾ ಡ್ಯಾಶ್ಬೋರ್ಡ್-ಸೆಷನ್ ಅಪ್ಲೋಡ್) ಪ್ರತಿ ಸೆಷನ್-ಅಲ್ಲದ ಕಾಲರ್ಗೆ ಪ್ರವೇಶ ನಿರಾಕರಿಸಲಾಗುತ್ತದೆ. `GET /v1/files` ಅನಾಮಧೇಯ ಕಾಲರ್ ಅನ್ನು — ಮತ್ತು ಗುರುತಿಸಲಾಗದ ಪ್ರಸ್ತುತಪಡಿಸಿದ ಕೀಯನ್ನು — `REQUIRE_API_KEY=false` ಆಗಿದ್ದರೂ ಸಹ, ಪ್ರತಿ ಟೆನೆಂಟ್ನ ಫೈಲ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುವ ಬದಲು `401` ನೊಂದಿಗೆ ತಿರಸ್ಕರಿಸುತ್ತದೆ (GHSA-m3hp-hq9g-fpmv, GHSA-2jm2-mpx8-6523). --- ## ಬ್ಯಾಚ್ಗಳ API OpenAI-ಹೊಂದಾಣಿಕೆಯ ಬ್ಯಾಚ್ ಪ್ರಕ್ರಿಯೆ. | ವಿಧಾನ | ಮಾರ್ಗ | ವಿವರಣೆ | | ------ | ------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | POST | `/v1/batches` | ಬ್ಯಾಚ್ ರಚಿಸಿ — ವಿನಂತಿಯ ಭಾಗವನ್ನು `v1BatchCreateSchema` (`input_file_id`, `endpoint`, `completion_window`) ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ | | GET | `/v1/batches` | ಬ್ಯಾಚ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | GET | `/v1/batches/[id]` | ಬ್ಯಾಚ್ ಸ್ಥಿತಿ + `request_counts` ಹಿಂಪಡೆಯಿರಿ | | DELETE | `/v1/batches/[id]` | ಪೂರ್ಣಗೊಂಡ/ವಿಫಲವಾದ ಬ್ಯಾಚ್ ಅನ್ನು ಅಳಿಸಿ | | POST | `/v1/batches/[id]/cancel` | ಪ್ರಗತಿಯಲ್ಲಿರುವ ಬ್ಯಾಚ್ ಅನ್ನು ರದ್ದುಗೊಳಿಸಿ | **ದೃಢೀಕರಣ:** Bearer API ಕೀ. ಫೈಲ್ಗಳಿಗೆ ಅನ್ವಯಿಸುವ ಅದೇ ತ್ರಿಮುಖ ನಿಯಮದ ಅಡಿಯಲ್ಲಿ ಬ್ಯಾಚ್ಗಳ ವ್ಯಾಪ್ತಿಯನ್ನು ಪ್ರತಿ-API-ಕೀಗೆ ಸೀಮಿತಗೊಳಿಸಲಾಗಿದೆ: ಸ್ವಂತ ಕೀಗೆ ಮಾತ್ರ, ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಸೆಷನ್ಗೆ ಇನ್ಸ್ಟೆನ್ಸ್-ವ್ಯಾಪಿ ಪ್ರವೇಶ, ಮತ್ತು null-owner ದಾಖಲೆಗಳಿಗೆ ಸೆಷನ್ ಅಲ್ಲದ ಪ್ರತಿಯೊಬ್ಬ ಕರೆಗಾರನಿಗೂ ಪ್ರವೇಶ ನಿರಾಕರಿಸಲಾಗುತ್ತದೆ (ಹಿಂಪಡೆಯುವಿಕೆ, ಅಳಿಸುವಿಕೆ, ರದ್ದುಗೊಳಿಸುವಿಕೆ ಮತ್ತು ರಚಿಸುವಾಗಿನ `input_file_id` ಪರಿಶೀಲನೆ). `REQUIRE_API_KEY=false` ಆಗಿದ್ದರೂ ಸಹ `GET /v1/batches` ಅನಾಮಧೇಯ ಕರೆಗಾರನನ್ನು `401` ನೊಂದಿಗೆ ತಿರಸ್ಕರಿಸುತ್ತದೆ. --- ## ಸರ್ಚ್ API ವೆಬ್/ಹುಡುಕಾಟ ಪೂರೈಕೆದಾರ ಅಮೂರ್ತೀಕರಣ (Tavily, Brave, Exa, Serper, ಇತ್ಯಾದಿ). | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | ---------------------- | --------------------------------------------------------------------------------------------------------------------- | | GET | `/v1/search` | ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ಹುಡುಕಾಟ ಪೂರೈಕೆದಾರರು + ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | POST | `/v1/search` | ಹುಡುಕಾಟ ಕ್ವೆರಿಯನ್ನು ಚಲಾಯಿಸಿ — ಬಾಡಿಯನ್ನು `v1SearchSchema` ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ, ಕ್ಯಾಶಿಂಗ್/ಕೋಅಲೆಸಿಂಗ್ ಬೆಂಬಲಿಸುತ್ತದೆ | | GET | `/v1/search/analytics` | ಪ್ರತಿ-ಪೂರೈಕೆದಾರ ಹಿಟ್/ಲೇಟೆನ್ಸಿ/ಕ್ಯಾಶ್ ಅಂಕಿಅಂಶಗಳು | **ದೃಢೀಕರಣ:** ಬೇರರ್ API ಕೀ (`extractApiKey` + `isValidApiKey`). ಹುಡುಕಾಟ ನೀತಿಯನ್ನು `enforceApiKeyPolicy` ಮೂಲಕ ಜಾರಿಗೊಳಿಸಲಾಗುತ್ತದೆ. --- ## Web Fetch API ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ವೆಬ್-ಫೆಚ್ ಪೂರೈಕೆದಾರರ (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract) ಮೂಲಕ URL ಒಂದರಿಂದ ವಿಷಯವನ್ನು ಹೊರತೆಗೆಯಿರಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | --------------- | ----------------------------------------------------------------------------------------- | | POST | `/v1/web/fetch` | URL ಅನ್ನು ಫೆಚ್/ಸ್ಕ್ರೇಪ್ ಮಾಡುತ್ತದೆ — ಬಾಡಿಯನ್ನು `v1WebFetchSchema` ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ | **ದೃಢೀಕರಣ:** Bearer API ಕೀ (`extractApiKey` + `isValidApiKey`). ನೀತಿಯನ್ನು `enforceApiKeyPolicy` ಮೂಲಕ ಜಾರಿಗೊಳಿಸಲಾಗುತ್ತದೆ. **ಕೋಟಾ-ಅರಿವಿನ ಫಾಲ್ಬ್ಯಾಕ್ (#8297):** ಸ್ಪಷ್ಟವಾದ `provider` ನೀಡದಿದ್ದಾಗ, ಪೂಲ್ (`firecrawl` → `jina-reader` → `tavily-search` → `tinyfish` → `nimble-search`) ಅನ್ನು ನಿಗದಿತ ಆದ್ಯತೆಯ ಕ್ರಮದಲ್ಲಿ (ಮೊದಲು ಭರ್ತಿ ಮಾಡುವ ವಿಧಾನದಲ್ಲಿ) ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ — ದರ-ಮಿತಿಗೊಳಿಸಲ್ಪಟ್ಟಿದ್ದರೂ ಕಾನ್ಫಿಗರ್ ಆಗಿರುವ ಪೂರೈಕೆದಾರನು ವಿನಂತಿಯನ್ನು ತಕ್ಷಣವೇ ಸ್ಥಗಿತಗೊಳಿಸುವ ಬದಲು ಬಿಟ್ಟುಹೋಗಲಾಗುತ್ತದೆ, ಮತ್ತು ಮರುಪ್ರಯತ್ನಿಸಬಹುದಾದ/ಕೋಟಾ ಸಂಬಂಧಿತ ಅಪ್ಸ್ಟ್ರೀಮ್ ವೈಫಲ್ಯವು (HTTP 429 ಯಾವಾಗಲೂ; Firecrawl/Tavily/TinyFish ಕೋಟಾ-ಶೈಲಿಯ ಉಚಿತ ಶ್ರೇಣಿಗಳಿಗೆ 402/403 — Jina Reader ಗೆ ಅಲ್ಲ, ಮತ್ತು ಸಾಮಾನ್ಯ 400 ತಪ್ಪಾದ ವಿನಂತಿಗೆ ಎಂದಿಗೂ ಅಲ್ಲ) ವಿನಂತಿಯ ಸಮಯದಲ್ಲಿ ಇನ್ನೂ ಪ್ರಯತ್ನಿಸದ ಕ್ರೆಡೆನ್ಶಿಯಲ್ ಹೊಂದಿರುವ ಮುಂದಿನ ಪೂರೈಕೆದಾರನಿಗೆ ಮುಂದುವರಿಯುತ್ತದೆ. ಪೂಲ್ನಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಪೂರೈಕೆದಾರವೂ ಮುಗಿದಾಗ, ಹಿಂದಿನ ಸಾಮಾನ್ಯ `400` ಬದಲು ಎಂಡ್ಪಾಯಿಂಟ್ ಒಂದೇ `429` ಅನ್ನು (`Retry-After` ಹೆಡರ್ನೊಂದಿಗೆ) ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ಸ್ಪಷ್ಟವಾದ `provider` ಅನ್ನು ವಿನಂತಿಸಿದಾಗ, **ಯಾವುದೇ** ಮೌನ ಫಾಲ್ಬ್ಯಾಕ್ ಇರುವುದಿಲ್ಲ — ದರ-ಮಿತಿಗೊಳಿಸಲ್ಪಟ್ಟ ಅಥವಾ ವಿಫಲವಾದ ಸ್ಪಷ್ಟ ಪೂರೈಕೆದಾರನು ತನ್ನದೇ ದೋಷವನ್ನು ತೋರಿಸುತ್ತಾನೆ (ದರ-ಮಿತಿಗೊಳಿಸಲ್ಪಟ್ಟಿದ್ದರೆ `429`, ಇಲ್ಲದಿದ್ದರೆ ಅಪ್ಸ್ಟ್ರೀಮ್ ಸ್ಥಿತಿ). --- ## WebSocket ಸ್ಟ್ರೀಮಿಂಗ್ ```bash GET /v1/ws?handshake=1 ``` WebSocket ಅಪ್ಗ್ರೇಡ್ ಹ್ಯಾಂಡ್ಶೇಕ್ ಅನ್ನು ಮೌಲ್ಯೀಕರಿಸಿ, ವೈರ್ ಪ್ರೋಟೋಕಾಲ್ ಉದಾಹರಣೆ ಸಂದೇಶಗಳನ್ನು (`request`, `cancel`) ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ನಿಜವಾದ WS ಫ್ರೇಮ್ಗಳನ್ನು Next.js ರೂಟ್ ಟೇಬಲ್ನ ಹೊರಗಿರುವ ಬಂಡಲ್ ಮಾಡಲಾದ WS ಸರ್ವರ್ ನಿರ್ವಹಿಸುತ್ತದೆ. **ದೃಢೀಕರಣ:** ಹ್ಯಾಂಡ್ಶೇಕ್ ಸಮಯದಲ್ಲಿ Bearer API ಕೀ. ### WebSocket ಮೂಲಕ Responses API (codex ಮಾತ್ರ) ```bash # HTTP API ಯಂತೆಯೇ ಅದೇ host:port (ಡೀಫಾಲ್ಟ್ 20128); ಸಂಪರ್ಕವನ್ನು ಅಪ್ಗ್ರೇಡ್ ಮಾಡಿ: wscat -c "ws://localhost:20128/v1/responses?api_key=" # (ಅಥವಾ: -H "Authorization: Bearer ") # ಮೊದಲ ಫ್ರೇಮ್ response.create ಆಗಿಯೇ ಇರಬೇಕು: { "type": "response.create", "model": "gpt-5.5", "input": [ { "role": "user", "content": "hi" } ] } ``` Responses-API-over-WebSocket ಪ್ರಾಕ್ಸಿಯನ್ನು **ಪ್ರತ್ಯೇಕವಾಗಿ `codex` ಗೆ ಮಾತ್ರ** (ChatGPT ಬ್ಯಾಕೆಂಡ್) ಸಂಪರ್ಕಿಸಲಾಗಿದೆ. ಇದು API/ಡ್ಯಾಶ್ಬೋರ್ಡ್ನಂತೆಯೇ ಅದೇ ಪೋರ್ಟ್ನಲ್ಲಿ `/v1/responses`, `/responses`, ಮತ್ತು `/api/v1/responses` ಪಥಗಳಲ್ಲಿ ಆಲಿಸುತ್ತದೆ. ಮೊದಲ `response.create` ಫ್ರೇಮ್ನಲ್ಲಿ ಇದು ಆಂತರಿಕ `codex-responses-ws` ಬ್ರಿಡ್ಜ್ ಮೂಲಕ ದೃಢೀಕರಿಸಿ + ಸಿದ್ಧಪಡಿಸುತ್ತದೆ, codex OAuth ಸಂಪರ್ಕವನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತದೆ ಮತ್ತು `wreq-js` ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್ ಮೂಲಕ `wss://chatgpt.com/backend-api/codex/responses` ಗೆ ಟನಲ್ ಮಾಡುತ್ತದೆ. **codex ಅಲ್ಲದ ಮಾಡೆಲ್ಗಳನ್ನು ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ** (`codex_ws_provider_required`). ಕೋಟಾ-ಹಂಚಿಕೆ ರೂಟಿಂಗ್ಗಾಗಿ `model: "qtSd//codex/"` ಬಳಸಿ. ಇದನ್ನು `app/server-ws.mjs` + `scripts/dev/responses-ws-proxy.mjs` + `src/app/api/internal/codex-responses-ws/route.ts` ನಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿದೆ. **ದೃಢೀಕರಣ:** ಹ್ಯಾಂಡ್ಶೇಕ್ ಸಮಯದಲ್ಲಿ Bearer API ಕೀ. ಬಂಡಲ್ ಮಾಡಲಾದ HTTP ಸರ್ವರ್ (`server-ws.mjs`) ಸಕ್ರಿಯ ಎಂಟ್ರಿಪಾಯಿಂಟ್ ಆಗಿರಬೇಕು (`app/server-ws.mjs` ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದಾಗ, ಡೀಫಾಲ್ಟ್ ಆಗಿ ಅದೇ ಸಕ್ರಿಯವಾಗಿರುತ್ತದೆ). #### ಮಾಡೆಲ್ id: ಮೂಲ ChatGPT id ಬಳಸಿ (`codex/` ಪ್ರಿಫಿಕ್ಸ್ ಇಲ್ಲದೆ) `supports_websockets = true` ಆಗಿರುವಾಗ OpenAI **Codex CLI** ಕ್ಲೈಂಟ್ ಬದಿಯಲ್ಲೇ ಮಾಡೆಲ್ ಹೆಸರನ್ನು ಮೌಲ್ಯೀಕರಿಸುತ್ತದೆ ಮತ್ತು `codex/gpt-5.5` ನಂತಹ **ಪೂರೈಕೆದಾರ-ಪ್ರಿಫಿಕ್ಸ್ ಹೊಂದಿರುವ id ಗಳನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ** (`The 'codex/gpt-5.5' model is not supported when using Codex with a ChatGPT account`). **ಮೂಲ** id ಅನ್ನು ಕಳುಹಿಸಿ (ಉದಾ. `gpt-5.5`). OmniRoute ನ ಬ್ರಿಡ್ಜ್ codex ಗೆ ಮಾತ್ರ ಸೀಮಿತವಾಗಿರುವುದರಿಂದ, ಅಪ್ಸ್ಟ್ರೀಮ್ಗೆ ಟನಲ್ ಮಾಡುವ ಮೊದಲು ಅದು ಮೂಲ id ಅನ್ನು codex ಮಾಡೆಲ್ ಆಗಿ (`resolveCodexWsModelInfo`) ಪುನಃ ಪರಿಹರಿಸುತ್ತದೆ — ಮೂಲ `gpt-5.5` HTTP ಮೂಲಕ ಇಲ್ಲದಿದ್ದರೆ ಬೇರೆ ಪೂರೈಕೆದಾರನಿಗೆ ರೂಟ್ ಆಗುತ್ತಿದ್ದರೂ ಸಹ. #### OpenAI Codex CLI ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು `~/.codex/config.toml` ಗೆ WebSocket ಬೆಂಬಲವಿರುವ ಕಸ್ಟಮ್ ಪೂರೈಕೆದಾರನನ್ನು ಸೇರಿಸುವ ಮೂಲಕ Codex CLI ಅನ್ನು OmniRoute ಕಡೆಗೆ ಸೂಚಿಸಿ (ಈಗಿರುವ ಕಾನ್ಫಿಗ್ಗೆ ಬದಲಾವಣೆ ಆಗದಂತೆ ಪ್ರತ್ಯೇಕ `CODEX_HOME` ಬಳಸಿ): ```toml model = "gpt-5.5" # ಮೂಲ id — "codex/gpt-5.5" ಅಲ್ಲ model_provider = "omniroute" [model_providers.omniroute] name = "OmniRoute (WS)" base_url = "http://localhost:20128/v1" # ಕೊನೆಯಲ್ಲಿ ಸ್ಲ್ಯಾಶ್ ಇರಬಾರದು; WS URL ಅನ್ನು ವ್ಯುತ್ಪನ್ನಗೊಳಿಸಲಾಗುತ್ತದೆ (ಪ್ರೊಡಕ್ಷನ್ನಲ್ಲಿ https/wss ಬಳಸಿ) wire_api = "responses" # Feb 2026 ರಿಂದ ಬೆಂಬಲಿತವಾಗಿರುವ ಏಕೈಕ ಮೌಲ್ಯ supports_websockets = true # Responses-over-WS ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ env_key = "OMNIROUTE_API_KEY" # OmniRoute API ಕೀಯನ್ನು ಹೊಂದಿರುತ್ತದೆ (Bearer) ``` ```bash export OMNIROUTE_API_KEY=sk-... # OmniRoute API ಕೀ (REQUIRE_API_KEY=false ಆಗಿದ್ದರೆ ಯಾವುದೇ ಕೀ) codex exec "Responda apenas: PONG" ``` CLI, `base_url + /responses` ಅನ್ನು WebSocket ಗೆ ಅಪ್ಗ್ರೇಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು OmniRoute ಅದನ್ನು ಆಯ್ಕೆಮಾಡಿದ codex OAuth ಸಂಪರ್ಕಕ್ಕೆ ಟನಲ್ ಮಾಡುತ್ತದೆ. ಸ್ಥಳೀಯ ಸರ್ವರ್ ವಿರುದ್ಧ ಎಂಡ್-ಟು-ಎಂಡ್ ಆಗಿ ಮೌಲ್ಯೀಕರಿಸಲಾಗಿದೆ: ChatGPT `codex.rate_limits` + `response.created` ಅನ್ನು ಹಿಂದಿರುಗಿಸಿ, ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಯನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡುತ್ತದೆ. --- ## ಕೋಟಾಗಳು ಮತ್ತು ಸಮಸ್ಯೆಗಳ ವರದಿಗೊಳಿಸುವಿಕೆ | ವಿಧಾನ | ಮಾರ್ಗ | ವಿವರಣೆ | | ----- | ------------------- | ------------------------------------------------------------------------------------------ | | GET | `/v1/quotas/check` | ನೋಂದಾಯಿತ ಕೀ ನೀಡುವ ಮೊದಲು `provider` + `accountId` ಗಾಗಿ ಕೋಟಾವನ್ನು ಪೂರ್ವ-ಮೌಲ್ಯೀಕರಿಸಿ | | POST | `/v1/issues/report` | ಕೋಟಾ/ಕೀ ನೀಡುವಿಕೆಯ ವೈಫಲ್ಯವನ್ನು GitHub ಗೆ ವರದಿ ಮಾಡಿ (`GITHUB_ISSUES_REPO` + ಟೋಕನ್ ಅಗತ್ಯವಿದೆ) | **ದೃಢೀಕರಣ:** Bearer API ಕೀ (`isAuthenticated`). --- ## ಸ್ವಯಂ-ಸೇವಾ ಬಳಕೆ (`/api/usage/om-usage`) ಯಾವುದೇ API ಕೀ ತನ್ನ **ಸ್ವಂತ** ಬಳಕೆ ಮತ್ತು ಕೋಟಾಗಳನ್ನು ಓದಬಹುದು — ನಿರ್ವಹಣಾ ದೃಢೀಕರಣದ ಅಗತ್ಯವಿಲ್ಲ. ಕೀ ಹೊಂದಿರುವವರಿಗೆ ಅವರ ವೆಚ್ಚವನ್ನು ತೋರಿಸಲು ಕ್ಲೈಂಟ್ (CLI, OmniCopilot ಪ್ಯಾನೆಲ್) ಬಳಸುವ ಎಂಡ್ಪಾಯಿಂಟ್ ಇದು. ```bash # ಪಠ್ಯ ರೂಪ (ಐತಿಹಾಸಿಕ ಒಪ್ಪಂದ — ಟರ್ಮಿನಲ್ಗಾಗಿ ಸರಳ ಪಠ್ಯ) curl -H "Authorization: Bearer " \ http://localhost:20128/api/usage/om-usage # ರಚನಾತ್ಮಕ ರೂಪ — UI ಬಳಸುವುದು curl -H "Authorization: Bearer " \ "http://localhost:20128/api/usage/om-usage?format=json" ``` ಕೀಗಾಗಿ **`allowUsageCommand`** ಸಕ್ರಿಯಗೊಳಿಸಿರಬೇಕು (ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ನಿಷ್ಕ್ರಿಯ — ಡ್ಯಾಶ್ಬೋರ್ಡ್ನ API-ಕೀ ನಿರ್ವಾಹಕವು ಪ್ರತಿ ಕೀಗೂ ಇದನ್ನು ಟಾಗಲ್ ಮಾಡುತ್ತದೆ). ಇದು ಇಲ್ಲದಿದ್ದರೆ ಎಂಡ್ಪಾಯಿಂಟ್ `403` ಎಂದು ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತದೆ. `?format=json` ಒಂದು ವಿಭೇದಿತ ರಚನೆಯನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಕರೆ ಮಾಡುವವರು ನಿರಾಕರಣೆಯೊಂದರಿಂದ ಡೇಟಾ ಕ್ಷೇತ್ರವನ್ನು ಎಂದಿಗೂ ಓದುವುದಿಲ್ಲ. ಯಶಸ್ವಿಯಾದಾಗ: ```jsonc { "allowed": true, // ಕೀ ಪ್ರತಿ-ಕೀ ಬಳಕೆಯ ಮಿತಿಗಳನ್ನು (ದೈನಂದಿನ/ವಾರದ USD) ಆಯ್ಕೆ ಮಾಡಿಕೊಂಡಾಗ ಮಾತ್ರ ಇರುತ್ತದೆ: "personal": { "dailySpentUsd": 1.25, "dailyLimitUsd": 5, "dailyResetAtIso": "…", "weeklySpentUsd": 8, "weeklyLimitUsd": 20, "weeklyResetAtIso": "…" /* … */, }, // ಆಯ್ಕೆಮಾಡಿದ ಪೂರೈಕೆದಾರರ ಕೋಟಾ ಸ್ನ್ಯಾಪ್ಶಾಟ್, ಅಥವಾ ಇನ್ನೂ ಯಾವುದೂ ಕ್ಯಾಶ್ ಆಗದಿದ್ದರೆ null: "provider": { "connectionId": "…", "provider": "claude", "plan": "…", "quotas": {/* … */}, }, // ಪ್ರತಿಯೊಂದು ಸಂಪರ್ಕದ ಸ್ನ್ಯಾಪ್ಶಾಟ್, ಆದ್ದರಿಂದ UI ಹಲವು ಪೂರೈಕೆದಾರರನ್ನು ಅಕ್ಕಪಕ್ಕದಲ್ಲಿ ಪ್ರದರ್ಶಿಸಬಹುದು: "providers": [ { "connectionId": "…", "provider": "claude" /* … */ }, { "provider": "codex" /* … */ }, ], } ``` ನಿರಾಕರಣೆಯಾದಾಗ (`401` ತಪ್ಪಾದ ಕೀ / `403` ಅನುಮತಿಸಲಾಗಿಲ್ಲ), ಅದೇ ಮಾರ್ಗವು `{ "allowed": false, "error": { "message": "…" } }` ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ — ಇರುವುದಾದರೂ ಖಾಲಿಯಾಗಿರುವ `personal`/`provider` (ಕೀಗೆ ಅನುಮತಿ ಇದೆ, ಇನ್ನೂ ಏನನ್ನೂ ತಿಳಿದುಕೊಂಡಿಲ್ಲ) ನಿರಾಕರಣೆಗಿಂತ ವಿಭಿನ್ನ ಸ್ಥಿತಿಯಾಗಿದೆ, ಮತ್ತು JSON ರೂಪ ಮಾತ್ರ ಅವುಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸುತ್ತದೆ. **ದೃಢೀಕರಣ:** ಕರೆ ಮಾಡುವವರ ಸ್ವಂತ Bearer API ಕೀ, `isValidApiKey` ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ — ಇದು `requireManagementAuth` ಹಿಂದೆಯೇ ಉಳಿಯುವ ನಿರ್ವಹಣಾ ಮೇಲ್ಮೈ (`/api/keys/…`) _ಅಲ್ಲ_. ### ಕಚ್ಚಾ ಮತ್ತು ಕಟ್ಆಫ್ಗೆ ಹೊಂದಿಸಲಾದ ಕೋಟಾ ಶೇಕಡಾವಾರುಗಳು `/api/usage/om-usage` ಬಳಸುವಾಗ, ಕರೆ ಮಾಡುವವರು **ಸರಳ-ಪಠ್ಯ ಔಟ್ಪುಟ್** ಮತ್ತು ರಚನಾತ್ಮಕ **JSON ಔಟ್ಪುಟ್** ಪ್ರಸ್ತುತಪಡಿಸುವ ಶೇಕಡಾವಾರುಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು ಗಮನಿಸಬೇಕು: | ಅಂಶ | ಸರಳ-ಪಠ್ಯ ಸ್ವರೂಪ (`/api/usage/om-usage` / `@@om-usage`) | JSON ಸ್ವರೂಪ (`?format=json`) | | :------------------- | :----------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------- | | **ಔಟ್ಪುಟ್ ಕ್ಷೇತ್ರ** | `NN% left` (ಉದಾ., `20% left`) | `provider.quotas` / `providers[].quotas` | | **ಮಾಪನ** | **ಕಟ್ಆಫ್ಗೆ ಹೊಂದಿಸಲಾದ ಬಳಸಬಹುದಾದ ಪ್ರಮಾಣ**: ಕಟ್ಆಫ್ ಮಿತಿಗಿಂತ ಮೇಲಿನ ಉಳಿದ ಸಾಮರ್ಥ್ಯ | **ಕಚ್ಚಾ ಅಪ್ಸ್ಟ್ರೀಮ್ ಕೋಟಾ**: ಹೊಂದಿಸದ ಪೂರೈಕೆದಾರರ ಮಾಪನ | | **ಕಟ್ಆಫ್ ಸ್ಕೇಲಿಂಗ್** | ಸಂರಕ್ಷಿತ ಮೀಸಲು `0% left` ಎಂದು ಕಾಣುವಂತೆ `effectiveRemainingPercent()` ಮೂಲಕ ಸ್ಕೇಲ್ ಮಾಡಲಾಗಿದೆ | ಯಾವುದೂ ಇಲ್ಲ (ಪೂರೈಕೆದಾರರು ವರದಿ ಮಾಡಿದಂತೆಯೇ ಕಚ್ಚಾ ಸ್ನ್ಯಾಪ್ಶಾಟ್ ಮೌಲ್ಯಗಳು) | | **ಮಿತಿ ಡೇಟಾ** | ಪ್ರದರ್ಶಿಸಲಾದ ಶೇಕಡಾವಾರಿನಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ | ಪ್ರತಿ ಸಂಪರ್ಕಕ್ಕೆ `quotaWindowThresholds`ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ (ಅಥವಾ ಸರ್ವರ್ ಪೂರ್ವನಿಯೋಜಿತಗಳು) | | **ಪ್ರಾಥಮಿಕ ಬಳಕೆದಾರ** | ಸಂವಾದಾತ್ಮಕ CLIಗಳು, ಟರ್ಮಿನಲ್ ಪ್ರಾಂಪ್ಟ್ಗಳು, ಮಾನವ ನಿರ್ವಾಹಕರು | ಪ್ರೋಗ್ರಾಮ್ಯಾಟಿಕ್ ಏಕೀಕರಣಗಳು, ಡ್ಯಾಶ್ಬೋರ್ಡ್ಗಳು, ವಿಶ್ಲೇಷಣೆ, ಬಿಲ್ಲಿಂಗ್ ಟ್ರ್ಯಾಕರ್ಗಳು | #### ಕಟ್ಆಫ್ ಹೊಂದಾಣಿಕೆಯ ಸೂತ್ರ ಅಪ್ಸ್ಟ್ರೀಮ್ ಖಾಲಿಯಾಗುವುದನ್ನು ತಡೆಯಲು OmniRoute ಪೂರ್ವಭಾವಿ ಕೋಟಾ ಕಟ್ಆಫ್ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ (ಸಂಪರ್ಕದ `quotaWindowThresholds`, ಪೂರೈಕೆದಾರರ ಪೂರ್ವನಿಯೋಜಿತಗಳು, ಅಥವಾ ಜಾಗತಿಕ ಸ್ಥಿತಿಸ್ಥಾಪಕತೆ ಸೆಟ್ಟಿಂಗ್ಗಳ ಮೂಲಕ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗುತ್ತದೆ). ಕೋಟಾ ವಿಂಡೋದಲ್ಲಿ ಕಟ್ಆಫ್ ಮಿತಿ (ಉದಾ., `cutoff = 25%`) ಸಕ್ರಿಯವಾಗಿರುವಾಗ, ಪಠ್ಯ ರೆಂಡರರ್ ಉಳಿದ ಪ್ರಮಾಣವನ್ನು ಹೀಗೆ ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತದೆ: - `remaining <= cutoff` ಆಗಿದ್ದರೆ: `0%` ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ. - `remaining > cutoff` ಆಗಿದ್ದರೆ: `((remaining - cutoff) / (100 - cutoff)) * 100` ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ಸ್ವರೂಪಗೊಳಿಸಿದ ಪಠ್ಯ ಔಟ್ಪುಟ್ ಇದನ್ನು ಸಮೀಪದ ಪೂರ್ಣಾಂಕಕ್ಕೆ ರೌಂಡ್ ಮಾಡುತ್ತದೆ (`Math.round(...)`). #### ವಿವರಣಾತ್ಮಕ ಉದಾಹರಣೆ **60% ಕಚ್ಚಾ ಬಳಕೆ** (ಹೀಗಾಗಿ **40% ಕಚ್ಚಾ ಉಳಿದ ಕೋಟಾ**) ಮತ್ತು ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ **25% ಉಳಿದ-ಕೋಟಾ ಕಟ್ಆಫ್** ಮಿತಿ ಹೊಂದಿರುವ ಪೂರೈಕೆದಾರರ ವಿಂಡೋವನ್ನು ಪರಿಗಣಿಸಿ: | ನಿರೂಪಣೆ | ಲೆಕ್ಕಾಚಾರ | ಉಳಿದಿರುವುದು | ಸೂಚಿತ ಬಳಕೆ | | :------------------------------ | :------------------------------------------------- | :---------: | :-------------------------------------: | | **ಕಚ್ಚಾ JSON (`?format=json`)** | ಅಪ್ಸ್ಟ್ರೀಮ್ ಸ್ನ್ಯಾಪ್ಶಾಟ್ (`quotas[window]`) | **40%** | **60%** | | **ಪಠ್ಯ ಸ್ವರೂಪ (`NN% left`)** | `((40 - 25) / (100 - 25)) * 100 = (15 / 75) * 100` | **20%** | **80%** (`100 - remaining` ಲೆಕ್ಕಿಸಿದರೆ) | - **ಪಠ್ಯವು 20% ಉಳಿದಿದೆ ಎಂದು ಏಕೆ ತೋರಿಸುತ್ತದೆ:** ಖಾತೆಯಲ್ಲಿ ಭೌತಿಕವಾಗಿ ಉಳಿದಿರುವ 40% ಕೋಟಾದಲ್ಲಿ, 25% ಅನ್ನು ಕಟ್ಆಫ್ ನೀತಿಯು ಮೀಸಲಿಟ್ಟಿದೆ. ರೂಟರ್ ಈ ಸಂಪರ್ಕಕ್ಕೆ ರೂಟಿಂಗ್ ಮಾಡುವುದನ್ನು ನಿಲ್ಲಿಸುವ ಮೊದಲು, ಕರೆ ಮಾಡುವವರಿಗೆ ಬಳಸಬಹುದಾದ 75% ಹೆಡ್ರೂಮ್ನಲ್ಲಿ ಕೇವಲ 15% ಮಾತ್ರ ಉಳಿದಿದೆ. ರೂಟಿಂಗ್ ನಿಲ್ಲುವ ನಿಖರ ಕ್ಷಣದಲ್ಲೇ ಸಂಪರ್ಕವು ಖಾಲಿಯಾಗಿದೆ (`0% left`) ಎಂದು ಸೂಚಿಸುವುದನ್ನು ಸ್ಕೇಲಿಂಗ್ ಖಚಿತಪಡಿಸುತ್ತದೆ. - **JSON ಕಚ್ಚಾ ಮೌಲ್ಯಗಳನ್ನು ಏಕೆ ಉಳಿಸುತ್ತದೆ:** JSON ಪೇಲೋಡ್ ನಿಖರವಾದ ಪೂರೈಕೆದಾರರ ಸ್ನ್ಯಾಪ್ಶಾಟ್ (`UsageSnapshot`) ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ, ಇದರಿಂದ ಬಾಹ್ಯ ಪರಿಕರಗಳು ಸರ್ವರ್-ಬದಿಯ ನಷ್ಟಕಾರಿ ಸ್ಕೇಲಿಂಗ್ ಇಲ್ಲದೆ ನೈಜ ಅಪ್ಸ್ಟ್ರೀಮ್ ಬಳಕೆ ಮತ್ತು ಸಂಪರ್ಕ-ಮಟ್ಟದ `quotaWindowThresholds`ಗೆ ಪ್ರವೇಶ ಪಡೆಯುತ್ತವೆ. #### ಬಳಕೆದಾರರ ವಲಸೆ ಮಾರ್ಗದರ್ಶನ ಬಾಹ್ಯ ಏಕೀಕರಣವೊಂದು (ಎಡಿಟರ್ ಪ್ಲಗಿನ್ ಅಥವಾ ಏಜೆಂಟ್ ಎಕ್ಸ್ಟೆನ್ಶನ್ನಂತಹುದು) ಹಿಂದೆ ಪಠ್ಯ ಎಂಡ್ಪಾಯಿಂಟ್ (`NN% left`) ಅನ್ನು ಸ್ಕ್ರೇಪ್ ಮಾಡಿ, ಬಳಸಿದ ಶೇಕಡಾವಾರನ್ನು `100 - NN` ಎಂದು ಲೆಕ್ಕಾಚಾರ ಮಾಡುತ್ತಿದ್ದರೆ, `?format=json`ಗೆ ವಲಸೆ ಹೋಗುವುದು ಎಂದರೆ: - ಕಚ್ಚಾ JSON ಮೌಲ್ಯಗಳನ್ನು ಓದುವುದು **ವಾಸ್ತವಿಕ ಅಪ್ಸ್ಟ್ರೀಮ್ ಬಳಕೆಯನ್ನು** ಪ್ರತಿಬಿಂಬಿಸುತ್ತದೆ (ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ 60% ಬಳಸಲಾಗಿದೆ). - ಏಕೀಕರಣವು ಪಠ್ಯ ಎಂಡ್ಪಾಯಿಂಟ್ನ ಬಳಸಬಹುದಾದ-ಪ್ರಮಾಣದ ಅರ್ಥವ್ಯಾಪ್ತಿಯನ್ನು ಉಳಿಸಿಕೊಳ್ಳಲು ಬಯಸಿದರೆ, ಸಂಪರ್ಕ-ಮಟ್ಟದ ಅತಿಕ್ರಮಣಗಳಿಗಾಗಿ `quotaWindowThresholds` ಬಳಸಿ ಕ್ಲೈಂಟ್-ಬದಿಯಲ್ಲಿ ಪರಿಣಾಮಕಾರಿ ಉಳಿಕೆ ಸೂತ್ರವನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದು. --- ## ಅರ್ಥಾತ್ಮಕ ಕ್ಯಾಶ್ ```bash # ಕ್ಯಾಶ್ ಅಂಕಿಅಂಶಗಳನ್ನು ಪಡೆಯಿರಿ GET /api/cache/stats # ಎಲ್ಲಾ ಕ್ಯಾಶ್ಗಳನ್ನು ತೆರವುಗೊಳಿಸಿ DELETE /api/cache/stats ``` ಪ್ರತಿಕ್ರಿಯೆಯ ಉದಾಹರಣೆ: ```json { "semanticCache": { "memorySize": 42, "memoryMaxSize": 500, "dbSize": 128, "hitRate": 0.65 }, "idempotency": { "activeKeys": 3, "windowMs": 5000 } } ``` ### ವಿಳಂಬದ ಪರಿಣಾಮ ಅರ್ಥಾತ್ಮಕ ಕ್ಯಾಶ್ HIT ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು **ಅಪ್ಸ್ಟ್ರೀಮ್ ಕರೆ ಇಲ್ಲದೆ** ಕ್ಯಾಶ್ನಿಂದ ಒದಗಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ವರದಿಯಾದ `X-OmniRoute-Response-Latency` ಬಹುತೇಕ ಶೂನ್ಯವಾಗಿರುತ್ತದೆ (ಮೂಲ ಅಪ್ಸ್ಟ್ರೀಮ್ ವಿಳಂಬ ಎಷ್ಟೇ ಇದ್ದರೂ). ವಿಳಂಬದ ಕುರಿತು ಸೂಕ್ಷ್ಮವಾಗಿರುವ ಕ್ಲೈಂಟ್ಗಳು (ಬೆಂಚ್ಮಾರ್ಕಿಂಗ್, p50/p99 ಮೇಲ್ವಿಚಾರಣೆ) `X-OmniRoute-Cache-Latency` ಪ್ರತಿಕ್ರಿಯೆ ಹೆಡರ್ ಅನ್ನು ಪರಿಶೀಲಿಸಬೇಕು: | ಮೌಲ್ಯ | ಅರ್ಥ | | ----------- | ------------------------------------------------------------------------ | | `synthetic` | ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕ್ಯಾಶ್ನಿಂದ ಒದಗಿಸಲಾಗಿದೆ; ವಿಳಂಬವು ನೈಜ ಅಪ್ಸ್ಟ್ರೀಮ್ ಸಮಯವಲ್ಲ | | _(ಇಲ್ಲ)_ | ನೈಜ ಅಪ್ಸ್ಟ್ರೀಮ್ ಕರೆಯಿಂದ ಬಂದ ಪ್ರತಿಕ್ರಿಯೆ | ### ಪ್ರತಿ-ಕೀ ಕ್ಯಾಶ್ ಬೈಪಾಸ್ API ಕೀಗಳು `cacheDefaultMode` ಮೂಲಕ ಅರ್ಥಾತ್ಮಕ ಕ್ಯಾಶ್ ಓದುವಿಕೆಯಿಂದ ಹೊರಗುಳಿಯಬಹುದು: | ಮೌಲ್ಯ | ವರ್ತನೆ | | -------- | ------------------------------------------------------------------------------- | | `legacy` | ಸಾಮಾನ್ಯ ಕ್ಯಾಶ್ ವರ್ತನೆ (ಪೂರ್ವನಿಯೋಜಿತ) | | `bypass` | ಕ್ಯಾಶ್ ಹುಡುಕಾಟವನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಬಿಟ್ಟುಬಿಡಿ; ಯಾವಾಗಲೂ ಅಪ್ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಿ | ಕೀ ರಚಿಸುವಾಗ (`POST /api/keys`) ಹೊಂದಿಸಿ ಅಥವಾ (`PATCH /api/keys/[id]`) ನವೀಕರಿಸಿ: ```json { "cacheDefaultMode": "bypass" } ``` ### ಪ್ರತಿ-ವಿನಂತಿಯ ಬೈಪಾಸ್ ಕೀ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಲೆಕ್ಕಿಸದೆ ಯಾವುದೇ ವಿನಂತಿಯು ಕ್ಯಾಶ್ ಅನ್ನು ಬೈಪಾಸ್ ಮಾಡಬಹುದು: ``` X-OmniRoute-No-Cache: true ``` --- ## ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಮತ್ತು ನಿರ್ವಹಣೆ ನಿರ್ವಹಣಾ ಮಾರ್ಗಗಳು (`/api/*`, ಸಾರ್ವಜನಿಕ ದೃಢೀಕರಣ/ಲಾಗಿನ್ ಹೊರತುಪಡಿಸಿ) ಸಾಮಾನ್ಯ ಇನ್ಫರೆನ್ಸ್ API ಕೀಲಿಗಳಿಂದ **ಅಧಿಕೃತಗೊಳಿಸಲ್ಪಡುವುದಿಲ್ಲ**. ರುಜುವಾತು ಕುಟುಂಬಗಳು, ವ್ಯಾಪ್ತಿಗಳು ಮತ್ತು curl ಉದಾಹರಣೆಗಳಿಗಾಗಿ ನೋಡಿ: [ನಿರ್ವಹಣಾ ದೃಢೀಕರಣ](../guides/MANAGEMENT-AUTH.md). ### ದೃಢೀಕರಣ | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | ----------------------------- | ------- | ---------------------------- | | `/api/auth/login` | POST | ಲಾಗಿನ್ | | `/api/auth/logout` | POST | ಲಾಗ್ಔಟ್ | | `/api/settings/require-login` | GET/PUT | ಲಾಗಿನ್ ಅಗತ್ಯವನ್ನು ಟಾಗಲ್ ಮಾಡಿ | ### ಪೂರೈಕೆದಾರರ ನಿರ್ವಹಣೆ | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | --------------------------------------- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `/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/providers/bulk` | POST | ಒಂದು ಪೂರೈಕೆದಾರರಿಗಾಗಿ API ಕೀಲಿಗಳನ್ನು ದೊಡ್ಡ ಪ್ರಮಾಣದಲ್ಲಿ ಸೇರಿಸಿ | | `/api/providers/import` | POST | ಪಾರ್ಸ್ ಮಾಡಿದ CSV/JSON ಫೈಲ್ನಿಂದ ವೈವಿಧ್ಯಮಯ ಪೂರೈಕೆದಾರರ ಪಟ್ಟಿಯನ್ನು ಆಮದು ಮಾಡಿ (#6836); ಪ್ರತಿ ಸಾಲಿನ ಭಾಗಶಃ-ವೈಫಲ್ಯ ಫಲಿತಾಂಶಗಳು | | `/api/provider-nodes*` | ವಿವಿಧ | ಪೂರೈಕೆದಾರ ನೋಡ್ ನಿರ್ವಹಣೆ | | `/api/provider-models` | GET/POST/PUT/PATCH/DELETE | ಕಸ್ಟಮ್ ಮಾದರಿಗಳು ಮತ್ತು ಪ್ರತಿ-ಮಾದರಿಯ ಅತಿಕ್ರಮಣಗಳು (ಸೇರಿಸಿ, ನವೀಕರಿಸಿ, ಮರೆಮಾಡಿ/ತೋರಿಸಿ, ಅಳಿಸಿ) | | `/api/provider-models/validate-and-add` | POST | ನಿರ್ವಹಣೆಯಿಂದ ದೃಢೀಕರಿಸಲಾದ, ಆಯ್ಕಾಧಾರಿತ ಕಟ್ಟುನಿಟ್ಟಿನ ಸಂಪರ್ಕ ಮೌಲ್ಯೀಕರಣ ಮತ್ತು ಪರಮಾಣುಸ್ವರೂಪದ ಕಸ್ಟಮ್-ಮಾದರಿ ನೋಂದಣಿ; [ಮಾದರಿ ಮೌಲ್ಯೀಕರಣ](../guides/MODEL-VALIDATION.md) ನೋಡಿ | ಸಿಂಕ್ ಮಾಡಿದ/ಆಮದು ಮಾಡಿದ ಮಾದರಿಗಳಿಗೆ, `PUT /api/provider-models` ಎಂಬುದು `provider`, `modelId`, ಮತ್ತು `maxOutputTokenOverride` ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ: ಧನಾತ್ಮಕ ಪೂರ್ಣಾಂಕವು ಕೈಯಾರೆ ನಿಗದಿಪಡಿಸಿದ ಔಟ್ಪುಟ್-ಟೋಕನ್ ಮಿತಿಯನ್ನು ಹೊಂದಿಸುತ್ತದೆ ಮತ್ತು `null` ಅದನ್ನು ತೆರವುಗೊಳಿಸಿ ಡೀಫಾಲ್ಟ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸುತ್ತದೆ. `GET /api/provider-models?provider=` ಈ ಮೌಲ್ಯಗಳನ್ನು `modelOutputOverrides` ನಲ್ಲಿ ಹಿಂದಿರುಗಿಸುತ್ತದೆ; ಇದರಲ್ಲಿ ಕಸ್ಟಮ್-ಮಾದರಿ ಸಾಲಿಲ್ಲದ ಮಾದರಿಗಳೂ ಸೇರಿವೆ. ಅತಿಕ್ರಮಣವು ರನ್ಟೈಮ್ `max_output_tokens` ಸಾಮರ್ಥ್ಯವನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಮಾದರಿಯನ್ನು ಮರು-ಸಿಂಕ್ ಮಾಡಿದ ನಂತರವೂ ಉಳಿಯುತ್ತದೆ. OpenAI-ಹೊಂದಾಣಿಕೆಯ ಪೂರೈಕೆದಾರರ ಪುಟವು ಅದೇ ಸಂಪಾದನೆ/ತೆರವು ನಿಯಂತ್ರಣಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ ಮತ್ತು ಸ್ಪಷ್ಟ ವಿಷನ್ ಬೆಂಬಲವಿರುವ ಮಾದರಿಗಳನ್ನು ಗುರುತಿಸುತ್ತದೆ. ಕಸ್ಟಮ್ Chat Completions ನೋಡ್ಗಳು ಸ್ಪಷ್ಟ ರೀಸನಿಂಗ್ ಆಯ್ಕೆಯಿಂದ ಹೊರಗುಳಿಯುವಿಕೆಗಳನ್ನು ಅಪ್ಸ್ಟ್ರೀಮ್ ಬ್ಯಾಕೆಂಡ್ಗೆ ಹೊಂದಿಸುತ್ತವೆ. ಯಶಸ್ವಿಯಾದ ಸಂಪರ್ಕ ಪರೀಕ್ಷೆಯು, `/models` ನಮೂದು ಗುರುತಿಸಲಾದ `owned_by` ಮೌಲ್ಯವನ್ನು ಸಾಬೀತುಪಡಿಸುವ ಪ್ರತಿಯೊಂದು ನಿಖರ ಮಾದರಿ ID ಗಾಗಿ ಚಾಟ್-ಟೆಂಪ್ಲೇಟ್ ನಿಯಂತ್ರಣಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆಯ್ಕೆಮಾಡುತ್ತದೆ: `vllm`, `sglang`, ಅಥವಾ `llamacpp`. ಪಾರದರ್ಶಕ OpenAI-ಹೊಂದಾಣಿಕೆಯ ರ್ಯಾಪರ್ಗಳು ಮೂಲ ಮಾದರಿ ನಮೂದನ್ನು ನೆಸ್ಟೆಡ್ `openai` ಆಬ್ಜೆಕ್ಟ್ನೊಳಗೆ ಉಳಿಸಬಹುದು; ಪತ್ತೆಹಚ್ಚುವಿಕೆಯು ಇಂತಹ ಗರಿಷ್ಠ ಮೂರು ಎನ್ವೆಲಪ್ಗಳನ್ನು ಅನುಸರಿಸುತ್ತದೆ. ಮಾಲೀಕತ್ವವು ಕಾಣೆಯಾಗಿರುವ, ಅಜ್ಞಾತವಾಗಿರುವ ಅಥವಾ ಪರಸ್ಪರ ವಿರೋಧವಾಗಿರುವ ಮಾದರಿಗಳು ಸಾಮಾನ್ಯ OpenAI ನಡವಳಿಕೆಯನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತವೆ. ಪತ್ತೆಹಚ್ಚುವಿಕೆಯು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕ್ಯಾಟಲಾಗ್ ವಿನಂತಿಯನ್ನು ಮರುಬಳಸುತ್ತದೆ, ಯಾವುದೇ ಕಂಪ್ಲೀಷನ್ ಟೋಕನ್ಗಳನ್ನು ರಚಿಸುವುದಿಲ್ಲ ಮತ್ತು ಸಂಪರ್ಕ ಎಂಡ್ಪಾಯಿಂಟ್ ಬದಲಾದಾಗ ಅಮಾನ್ಯಗೊಳ್ಳುತ್ತದೆ. ಆ ಮೆಟಾಡೇಟಾವನ್ನು ಬಹಿರಂಗಪಡಿಸದ ಬ್ಯಾಕೆಂಡ್ಗಾಗಿ ಈ ನಡವಳಿಕೆಯನ್ನು ಸ್ಥಿರಗೊಳಿಸಲು, ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಭಾಗಶಃ ಪೂರೈಕೆದಾರ ನವೀಕರಣ API ಅನ್ನು ಬಳಸಿ: ```json { "providerSpecificData": { "reasoningControl": "chat-template" } } ``` ಆ ಬಾಡಿಯನ್ನು `PUT /api/providers/` ಜೊತೆಗೆ ಕಳುಹಿಸಿ. ಆ ಸಂಪರ್ಕದಲ್ಲಿ, `none` ಎಂಬ ಸ್ಪಷ್ಟ ರೀಸನಿಂಗ್ ಎಫರ್ಟ್ ಅನ್ನು `chat_template_kwargs.thinking=false` ಮತ್ತು `chat_template_kwargs.enable_thinking=false` ಆಗಿ ಕಳುಹಿಸಲಾಗುತ್ತದೆ. ಸರ್ವರ್-ಸೈಡ್ ರೀಸನಿಂಗ್ ನಿಯಮವು ಎಫರ್ಟ್ ಅನ್ನು ಬಲವಂತಪಡಿಸದ ಹೊರತು, ಸ್ಪಷ್ಟ ನೇಟಿವ್ ಟೆಂಪ್ಲೇಟ್ ಮೌಲ್ಯಗಳೇ ಅಧಿಕೃತವಾಗಿರುತ್ತವೆ. ಕಸ್ಟಮ್ OpenAI-ಹೊಂದಾಣಿಕೆಯ ಸಂಪರ್ಕವು Chat Completions ಬಾಡಿಯನ್ನು ಡಿಸ್ಪ್ಯಾಚ್ ಮಾಡಿದಾಗ ಮಾತ್ರ ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ವಯಿಸುತ್ತದೆ; Responses ವಿನಂತಿಗಳು ಮತ್ತು ಸಾಮಾನ್ಯ ಪೂರೈಕೆದಾರರು ತಮ್ಮ ನೇಟಿವ್ ವಿನಂತಿ ಆಕಾರವನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತಾರೆ. ಸಾಮಾನ್ಯ OpenAI `reasoning_effort` ಪಾಸ್ಥ್ರೂ ಅನ್ನು ಬಲವಂತಪಡಿಸಲು `reasoningControl` ಅನ್ನು `openai` ಗೆ ಹೊಂದಿಸಿ, ಅಥವಾ ಸ್ವಯಂಚಾಲಿತ ಪತ್ತೆಹಚ್ಚುವಿಕೆಯನ್ನು ಬಳಸಲು ಅದನ್ನು ಬಿಟ್ಟುಬಿಡಿ/`null` ಗೆ ಹೊಂದಿಸಿ. Claude Code auto-mode ವರ್ಗೀಕಾರಕ ವಿನಂತಿಗಳಲ್ಲಿ ಯಾವುದೇ ಸ್ಪಷ್ಟ reasoning ನಿಯಂತ್ರಣಗಳು ಇಲ್ಲದಿದ್ದಾಗ, ಡೀಫಾಲ್ಟ್ native thinking ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ. ಪತ್ತೆಹಚ್ಚುವಿಕೆಯು Claude-format ವಿನಂತಿಗಳಲ್ಲಿನ ವರ್ಗೀಕಾರಕದ system marker ಅನ್ನು ಬಳಸುತ್ತದೆ; model ಹೆಸರುಗಳು ಅಥವಾ completion ಮಿತಿಗಳನ್ನು ಅಲ್ಲ. ಸ್ಪಷ್ಟ body ನಿಯಂತ್ರಣಗಳು, ಬೆಂಬಲಿತ effort/thinking headers, routing ನಿಯಮಗಳು ಮತ್ತು ನಿರ್ಧರಿಸಲಾದ model effort ತಮ್ಮ ಪ್ರಸ್ತುತ ಆದ್ಯತೆಯನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತವೆ. ಎರಡೂ ವರ್ಗೀಕಾರಕ ಹಂತಗಳು ತಮ್ಮ prompts, completion ಮಿತಿಗಳು, stop sequences ಮತ್ತು ನೈಜ upstream ಅನುಮತಿ ತೀರ್ಪುಗಳನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತವೆ; ಎರಡನೇ ಹಂತವು ಇನ್ನೂ ತನ್ನ ವಿನಂತಿಸಲಾದ ಗೋಚರ reasoning ಅನ್ನು ಸಾಮಾನ್ಯ ಪಠ್ಯವಾಗಿ ಉತ್ಪಾದಿಸಬಹುದು. ### OAuth ಹರಿವುಗಳು | Endpoint | ವಿಧಾನ | ವಿವರಣೆ | | -------------------------------- | ----- | ------------------------ | | `/api/oauth/[provider]/[action]` | ವಿವಿಧ | Provider-ನಿರ್ದಿಷ್ಟ OAuth | ### Routing ಮತ್ತು Config | Endpoint | ವಿಧಾನ | ವಿವರಣೆ | | --------------------- | -------- | ---------------------------------- | | `/api/models/alias` | GET/POST | Model aliases | | `/api/models/catalog` | GET | Provider + type ಪ್ರಕಾರ ಎಲ್ಲ models | | `/api/combos*` | ವಿವಿಧ | Combo ನಿರ್ವಹಣೆ | | `/api/keys*` | ವಿವಿಧ | API key ನಿರ್ವಹಣೆ | | `/api/pricing` | GET | Model ಬೆಲೆ ನಿಗದಿ | ### ಬಳಕೆ ಮತ್ತು Analytics | Endpoint | ವಿಧಾನ | ವಿವರಣೆ | | -------------------------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `/api/usage/history` | GET | ಬಳಕೆಯ ಇತಿಹಾಸ | | `/api/usage/logs` | GET | ಬಳಕೆಯ logs | | `/api/usage/request-logs` | GET | ವಿನಂತಿ-ಮಟ್ಟದ logs | | `/api/usage/[connectionId]` | GET | ಪ್ರತಿ-connection ಬಳಕೆ | | `/api/usage/token-limits` | GET/POST/DELETE | ಪ್ರತಿ-API-key token-limit budgets | | `/api/usage/model-latency-stats` | GET | ಚಲಿಸುವ ಪ್ರತಿ-provider/model latency ಸಮಗ್ರ ಅಂಕಿಅಂಶ (avg/p50/p95/p99, ಯಶಸ್ಸಿನ ದರ); filters: `windowHours`/`minSamples`/`maxRows`/`provider`/`model` (#6873) | | `/api/usage/cache-health` | GET | `call_logs` ಮೇಲಿನ prompt-cache ಆರೋಗ್ಯ ಸಾರಾಂಶ — write/read ಅನುಪಾತ, p50/p90/p99 write-size ವಿತರಣೆ, heavy-write ಕೇಂದ್ರೀಕರಣ, ಪ್ರತಿ-model ವಿಭಜನೆ ಮತ್ತು `healthy`/`degraded`/`thrash`/`no-data` ತೀರ್ಪು; query params `range` (`1h`\|`24h`\|`7d`\|`30d`, ಡೀಫಾಲ್ಟ್ `24h`) ಮತ್ತು ಐಚ್ಛಿಕ `model` (#8827) | ### API key ಅನುಮತಿಗಳು `PATCH /api/keys/{id}` ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ key-ಯ ಅನುಮತಿಗಳನ್ನು ನವೀಕರಿಸುತ್ತದೆ. ಪ್ರತಿಯೊಂದು `/api/keys*` route ರೀತಿಯಲ್ಲೇ, ಇದಕ್ಕೆ management authorization ಅಗತ್ಯವಿದೆ ([Management Authentication](../guides/MANAGEMENT-AUTH.md) ನೋಡಿ), inference key ಅಲ್ಲ. ನೀವು ಬದಲಾಯಿಸಲು ಬಯಸುವ fields ಅನ್ನು ಮಾತ್ರ ಕಳುಹಿಸಿ; ಅವುಗಳಲ್ಲಿ ಯಾವುದೂ ಇಲ್ಲದ ವಿನಂತಿಯನ್ನು `No valid fields to update` ದೋಷದೊಂದಿಗೆ ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ. ಅಂಗೀಕರಿಸಲಾದ fields ಅನ್ನು `src/shared/validation/schemas/keys.ts` ನಲ್ಲಿರುವ `updateKeyPermissionsSchema` ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. | ಕ್ಷೇತ್ರ | ಪ್ರಕಾರ | ಟಿಪ್ಪಣಿಗಳು | | ------------------------------------------- | -------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | ಸ್ಟ್ರಿಂಗ್, 1-200 ಅಕ್ಷರಗಳು | | | `isActive` | ಬೂಲಿಯನ್ | | | `isBanned` | ಬೂಲಿಯನ್ | | | `expiresAt` | ISO 8601 ದಿನಾಂಕ-ಸಮಯ ಅಥವಾ `null` | `null` ಅವಧಿ ಮುಕ್ತಾಯವನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ | | `modelAccessMode` | `all` \| `restricted` | ಮೋಡ್ `all` ಆಗಿರುವಾಗ `allowedModels` ಖಾಲಿಯಾಗಿರಬೇಕು | | `allowedModels`, `blockedModels` | ಸ್ಟ್ರಿಂಗ್ಗಳ ಅರೇ, ಗರಿಷ್ಠ 1000 | | | `allowedCombos` | ಸ್ಟ್ರಿಂಗ್ಗಳ ಅರೇ, ಗರಿಷ್ಠ 500 | ಕೀ ಯಾವ ಕಾಂಬೊಗಳನ್ನು ಕರೆ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ನಿಯಂತ್ರಿಸುತ್ತದೆ; ನೇರ ಮಾಡೆಲ್ಗಳನ್ನು `modelAccessMode` / `allowedModels` ನಿಯಂತ್ರಿಸುತ್ತವೆ | | `connectionAccessMode` | `all` \| `restricted` | `restricted` ಆಗಿರುವಾಗ `allowedConnections` ಖಾಲಿಯಾಗಿರಬಾರದು ಮತ್ತು `all` ಆಗಿರುವಾಗ ಖಾಲಿಯಾಗಿರಬೇಕು | | `allowedConnections` | UUIDಗಳ ಅರೇ, ಗರಿಷ್ಠ 100 | | | `allowAutoCombos` | ಬೂಲಿಯನ್ | `false` ಈ ಕೀಲಿಯೊಂದಿಗೆ `auto/*` ಮಾಡೆಲ್ಗಳ ವಿನಂತಿಗಳನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ; ಇದನ್ನು ಎಂದಿಗೂ ಹೊಂದಿಸದ ಕೀಗಳಿಗೆ ಅನುಮತಿ ನೀಡಲಾಗುತ್ತದೆ | | `catalogScope` | `all` \| `combos` \| `models` | ಈ ಕೀಲಿಗಾಗಿ `GET /v1/models` ಯಾವುದನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ (ಕೇವಲ ಕಾಂಬೊಗಳು, ಕೇವಲ ಮಾಡೆಲ್ಗಳು ಅಥವಾ ಎರಡೂ); ಕೀ ಯಾವುದನ್ನು ಕರೆ ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ಇದು ಬದಲಾಯಿಸುವುದಿಲ್ಲ | | `noLog`, `autoResolve` | ಬೂಲಿಯನ್ | | | `throttleDelayMs` | ಪೂರ್ಣಾಂಕ, 0-300000 | | | `maxSessions` | ಪೂರ್ಣಾಂಕ, 0-10000 | | | `rateLimits` | `{ limit, window }` ಅರೇ (ಧನಾತ್ಮಕ ಪೂರ್ಣಾಂಕಗಳು, ಗರಿಷ್ಠ 50) ಅಥವಾ `null` | `null` ಮಿತಿಗಳನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ | | `accessSchedule` | ವೇಳಾಪಟ್ಟಿ ಆಬ್ಜೆಕ್ಟ್ ಅಥವಾ `null` | `null` ವೇಳಾಪಟ್ಟಿಯನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ | | `scopes` | ಸ್ಟ್ರಿಂಗ್ಗಳ ಅರೇ, ಗರಿಷ್ಠ 32 | | | `allowedEndpoints` | ಸ್ಟ್ರಿಂಗ್ಗಳ ಅರೇ, ಗರಿಷ್ಠ 20 | | | `streamDefaultMode` | `legacy` \| `json` | | | `cacheDefaultMode` | `legacy` \| `bypass` | [ಪ್ರತಿ-ಕೀ ಕ್ಯಾಶ್ ಬೈಪಾಸ್](#per-key-cache-bypass) ನೋಡಿ | | `compressionEnabled` | ಬೂಲಿಯನ್ | | | `codexServiceMode` | Codex ಸೇವಾ ಮೋಡ್ಗಳಲ್ಲಿ ಒಂದು | | | `disableNonPublicModels` | ಬೂಲಿಯನ್ | | | `allowUsageCommand` | boolean | | | `usageLimitEnabled` | boolean | | | `dailyUsageLimitUsd`, `weeklyUsageLimitUsd` | number >= 0 ಅಥವಾ `null` | | | `chaosModeEnabled` | boolean | | ```bash curl -X PATCH "$OMNIROUTE_URL/api/keys/$KEY_ID" \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "allowAutoCombos": false, "catalogScope": "combos" }' ``` ### ಸೆಟ್ಟಿಂಗ್ಗಳು | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | ------------------------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `/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 | ಚಿಂತನೆ/ತಾರ್ಕಿಕತೆಯ **ವಿನಂತಿ** ಮರುಬರೆಯುವಿಕೆ ಮೋಡ್ (ಯಥಾವತ್ತಾಗಿ ರವಾನಿಸುವುದು / ಸ್ವಯಂ-ತೆಗೆದುಹಾಕುವುದು / ಕಸ್ಟಮ್ / ಹೊಂದಾಣಿಕೆ). ಕಂಪ್ರೆಷನ್ನಿಂದ ಸ್ವತಂತ್ರವಾಗಿದೆ. [THINKING_BUDGET.md](../guides/THINKING_BUDGET.md) ನೋಡಿ. | | `/api/settings/system-prompt` | GET/PUT | ಜಾಗತಿಕ ಸಿಸ್ಟಮ್ ಪ್ರಾಂಪ್ಟ್ | | `/api/settings/compression` | GET/PUT | ಜಾಗತಿಕ ಕಂಪ್ರೆಷನ್ ಕಾನ್ಫಿಗರೇಶನ್ | | `/api/settings/purge-request-history` | POST | ವಿನಂತಿ ಲಾಗ್ ಸಾಲುಗಳು ಮತ್ತು ಸ್ಥಳೀಯ ಕರೆ-ಲಾಗ್ ಆರ್ಟಿಫ್ಯಾಕ್ಟ್ಗಳನ್ನು ತೆರವುಗೊಳಿಸಿ | ### ಕಾಂಟೆಕ್ಸ್ಟ್ ಮತ್ತು ಕಂಪ್ರೆಷನ್ | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | -------------------------------------- | -------------- | ----------------------------------------------------------------------------------------- | | `/api/compression/preview` | POST | ಆಫ್/ಲೈಟ್/ಸ್ಟ್ಯಾಂಡರ್ಡ್/ಅಗ್ರೆಸಿವ್/ಅಲ್ಟ್ರಾ/RTK/ಸ್ಟ್ಯಾಕ್ಡ್ ಕಂಪ್ರೆಷನ್ನ ಪೂರ್ವವೀಕ್ಷಣೆ | | `/api/compression/language-packs` | GET | ಲಭ್ಯವಿರುವ Caveman ಭಾಷಾ ಪ್ಯಾಕ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | `/api/compression/rules` | GET | Caveman ನಿಯಮದ ಮೆಟಾಡೇಟಾವನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | `/api/context/caveman/config` | GET/PUT | Caveman-ನಿರ್ದಿಷ್ಟ ಸೆಟ್ಟಿಂಗ್ಗಳ ಪರ್ಯಾಯ ಹೆಸರು | | `/api/context/rtk/config` | GET/PUT | ಕಸ್ಟಮ್ ಫಿಲ್ಟರ್ಗಳು ಮತ್ತು ಕಚ್ಚಾ-ಔಟ್ಪುಟ್ ಉಳಿಸಿಕೊಳ್ಳುವಿಕೆ ಸೇರಿದಂತೆ RTK-ನಿರ್ದಿಷ್ಟ ಸೆಟ್ಟಿಂಗ್ಗಳು | | `/api/context/rtk/filters` | GET | RTK ಫಿಲ್ಟರ್ ಕ್ಯಾಟಲಾಗ್ ಮತ್ತು ಕಸ್ಟಮ್-ಫಿಲ್ಟರ್ ಡಯಾಗ್ನೋಸ್ಟಿಕ್ಸ್ | | `/api/context/rtk/test` | POST | ಪಠ್ಯ ಪೇಲೋಡ್ ವಿರುದ್ಧ RTK ಪೂರ್ವವೀಕ್ಷಣೆ/ಪರೀಕ್ಷೆಯನ್ನು ರನ್ ಮಾಡಿ | | `/api/context/rtk/raw-output/[id]` | GET | ಪಾಯಿಂಟರ್ id ಮೂಲಕ ಉಳಿಸಿಕೊಂಡಿರುವ ಪರಿಷ್ಕೃತ ಕಚ್ಚಾ ಔಟ್ಪುಟ್ ಅನ್ನು ಓದಿ | | `/api/context/combos` | GET/POST | ಕಂಪ್ರೆಷನ್ ಕಾಂಬೊಗಳ ಪಟ್ಟಿ/ರಚನೆ | | `/api/context/combos/[id]` | GET/PUT/DELETE | ಕಂಪ್ರೆಷನ್ ಕಾಂಬೊ ವಿವರ/ನವೀಕರಣ/ಅಳಿಸುವಿಕೆ | | `/api/context/combos/[id]/assignments` | GET/PUT | ರೂಟಿಂಗ್ ಕಾಂಬೊಗಳಿಗೆ ಕಂಪ್ರೆಷನ್ ಕಾಂಬೊಗಳನ್ನು ನಿಯೋಜಿಸಿ | | `/api/context/analytics` | GET | ಕಂಪ್ರೆಷನ್ ಅನಾಲಿಟಿಕ್ಸ್ನ ಪರ್ಯಾಯ ಹೆಸರು | ### ಮೇಲ್ವಿಚಾರಣೆ | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | ------------------------------------ | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `/api/sessions` | GET | ಸಕ್ರಿಯ ಸೆಷನ್ ಟ್ರ್ಯಾಕಿಂಗ್ | | `/api/rate-limits` | GET | ಪ್ರತಿ ಖಾತೆಯ ದರ ಮಿತಿಗಳು | | `/api/monitoring/health` | GET | ಆರೋಗ್ಯ ಪರಿಶೀಲನೆ + ಪೂರೈಕೆದಾರರ ಸಾರಾಂಶ (`catalogCount`, `configuredCount`, `activeCount`, `monitoredCount`). ನಿರ್ವಹಣಾ ವೀಕ್ಷಣೆಯು `credentialHealth` ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ: ಪ್ರೋಬ್-ಕ್ಯಾಶ್ ಸ್ಕೇಲರ್ಗಳು, `failed>0` ಆಗಿರುವಾಗ `failedConnections`, ಮತ್ತು `staleDbNonOkCount` (SQLite ಸ್ಟಿಕ್ಕಿ `test_status`, ಗೇಜ್ ಅಲ್ಲ). [MONITORING_GUIDE.md](../ops/MONITORING_GUIDE.md#credentialhealth-probe-cache-vs-sqlite-test_status) ನೋಡಿ. | | `/api/cache/stats` | GET/DELETE | ಕ್ಯಾಶ್ ಅಂಕಿಅಂಶಗಳು / ತೆರವುಗೊಳಿಸುವಿಕೆ | | `/api/modality-bridge/stats` | GET | ಇನ್-ಮೆಮೊರಿ `attempts`, ಯಶಸ್ಸುಗಳು/`bridged`, ವೈಫಲ್ಯಗಳು, ಕ್ಯಾಶ್ ಹಿಟ್ಗಳು, `totalLatencyMs`, `latencySamples`, ಮಾದರಿ-ಛೇದ ಆಧಾರಿತ `averageLatencyMs`, ಮತ್ತು ಕೊನೆಯ ಬಳಕೆಯ ಸಮಯ (ಮರುಪ್ರಾರಂಭಿಸಿದಾಗ ಮರುಹೊಂದಿಸಲಾಗುತ್ತದೆ; ನಿರ್ವಹಣಾ ದೃಢೀಕರಣ) | | `/api/modality-bridge/video/runtime` | GET | ನಿರ್ವಹಣಾ ದೃಢೀಕರಣ/ಪ್ರೋಬ್ಗೆ ಮೊದಲು ಕಟ್ಟುನಿಟ್ಟಾದ ವಿಶ್ವಾಸಾರ್ಹ-ಲೂಪ್ಬ್ಯಾಕ್ ಪರಿಶೀಲನೆ; ಸ್ಯಾನಿಟೈಸ್ ಮಾಡಿದ FFmpeg/ffprobe ಲಭ್ಯತೆ ಮತ್ತು ಆವೃತ್ತಿಗಳು (ಸಂಗ್ರಹಿಸಬೇಡಿ) | | `/api/modality-bridge/video/extract` | POST | ಆಂತರಿಕ ದೃಢೀಕೃತ ವಿಶ್ವಾಸಾರ್ಹ-ಲೂಪ್ಬ್ಯಾಕ್ ಬೈಟ್ ಬ್ರೋಕರ್; 50 MiB ಇನ್ಪುಟ್, ಮಿತಿಗೊಳಿಸಿದ ಸರತಿ/32 MiB ಔಟ್ಪುಟ್, ಸಾಮರ್ಥ್ಯಕ್ಕೆ `503`, ಸಂಪರ್ಕ ಕಡಿತಕ್ಕೆ `499`, ಗಡುವಿಗೆ `504`; ಇದು ಸಾರ್ವಜನಿಕ ಅಪ್ಲೋಡ್ API ಅಲ್ಲ | ### ಬ್ಯಾಕಪ್ ಮತ್ತು ರಫ್ತು/ಆಮದು | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | --------------------------- | ----- | -------------------------------------------------------------------------------------------- | | `/api/db-backups` | GET | ಲಭ್ಯವಿರುವ ಬ್ಯಾಕಪ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ | | `/api/db-backups` | PUT | ಹಸ್ತಚಾಲಿತ ಬ್ಯಾಕಪ್ ರಚಿಸುತ್ತದೆ | | `/api/db-backups` | POST | ನಿರ್ದಿಷ್ಟ ಬ್ಯಾಕಪ್ನಿಂದ ಮರುಸ್ಥಾಪಿಸುತ್ತದೆ | | `/api/db-backups/export` | GET | ಡೇಟಾಬೇಸ್ ಅನ್ನು .sqlite ಫೈಲ್ ಆಗಿ ಡೌನ್ಲೋಡ್ ಮಾಡುತ್ತದೆ | | `/api/db-backups/import` | POST | ಡೇಟಾಬೇಸ್ ಅನ್ನು ಬದಲಿಸಲು .sqlite ಫೈಲ್ ಅಪ್ಲೋಡ್ ಮಾಡುತ್ತದೆ (`?dryRun=true` ಕೇವಲ ಮೌಲ್ಯೀಕರಿಸುತ್ತದೆ) | | `/api/db-backups/exportAll` | GET | ಸಂಪೂರ್ಣ ಬ್ಯಾಕಪ್ ಅನ್ನು .tar.gz ಆರ್ಕೈವ್ ಆಗಿ ಡೌನ್ಲೋಡ್ ಮಾಡುತ್ತದೆ | `/api/db-backups/export`, `/api/db-backups/exportAll` ಮತ್ತು `/api/settings/export-json` ಸಂಗ್ರಹಿಸಲಾದ ಪ್ರತಿಯೊಂದು ರುಜುವಾತನ್ನೂ ಒದಗಿಸುತ್ತವೆ, ಆದ್ದರಿಂದ ಅವುಗಳಿಗೆ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಸೆಷನ್ ಅಥವಾ ಸ್ಥಳೀಯ CLI ಅಗತ್ಯವಿರುತ್ತದೆ (ಅಥವಾ ಲಾಗಿನ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿರಬೇಕು). ಯಾವುದೇ ವ್ಯಾಪ್ತಿಯ API ಕೀಗಳು ಮತ್ತು `oma_` ಪ್ರವೇಶ ಟೋಕನ್ಗಳು `403` ಪಡೆಯುತ್ತವೆ. `/api/db-backups/export`, `/api/db-backups/exportAll` and `/api/settings/export-json` hand out every stored credential, so they require the dashboard session or the local CLI (or login disabled). API keys of any scope and `oma_` access tokens get `403`. The restores hold the same boundary: `POST /api/db-backups/import` (`dryRun=true` included), `POST /api/db-backups` (restore by id) and `POST /api/settings/import-json` replace the live database or settings, so a machine credential gets `403` there too; `omniroute sync import` sends the local CLI credential. ### ಕ್ಲೌಡ್ ಸಿಂಕ್ | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | ---------------------- | ----- | -------------------------- | | `/api/sync/cloud` | ವಿವಿಧ | ಕ್ಲೌಡ್ ಸಿಂಕ್ ಕಾರ್ಯಾಚರಣೆಗಳು | | `/api/sync/initialize` | POST | ಸಿಂಕ್ ಪ್ರಾರಂಭಿಸುತ್ತದೆ | | `/api/cloud/*` | ವಿವಿಧ | ಕ್ಲೌಡ್ ನಿರ್ವಹಣೆ | ### ಟನಲ್ಗಳು | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | -------------------------- | ----- | ----------------------------------------------------------------------------------------- | | `/api/tunnels/cloudflared` | GET | ಡ್ಯಾಶ್ಬೋರ್ಡ್ಗಾಗಿ Cloudflare Quick Tunnel ಸ್ಥಾಪನೆ/ರನ್ಟೈಮ್ ಸ್ಥಿತಿಯನ್ನು ಓದಿ | | `/api/tunnels/cloudflared` | POST | Cloudflare Quick Tunnel ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ ಅಥವಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ (`action=enable/disable`) | | `/api/tunnels/ngrok` | GET | ಡ್ಯಾಶ್ಬೋರ್ಡ್ಗಾಗಿ ngrok Tunnel ರನ್ಟೈಮ್ ಸ್ಥಿತಿಯನ್ನು ಓದಿ | | `/api/tunnels/ngrok` | POST | ngrok Tunnel ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ ಅಥವಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ (`action=enable/disable`) | ### CLI ಪರಿಕರಗಳು | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | ---------------------------------- | ----- | ------------------- | | `/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 ರನ್ಟೈಮ್ | CLI ಪ್ರತಿಕ್ರಿಯೆಗಳು ಇವುಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ: `installed`, `runnable`, `command`, `commandPath`, `runtimeMode`, `reason`. ### ACP ಏಜೆಂಟ್ಗಳು | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | ----------------- | ------ | ------------------------------------------------------------------- | | `/api/acp/agents` | GET | ಸ್ಥಿತಿಯೊಂದಿಗೆ ಪತ್ತೆಯಾದ ಎಲ್ಲಾ ಏಜೆಂಟ್ಗಳ (ಅಂತರ್ನಿರ್ಮಿತ + ಕಸ್ಟಮ್) ಪಟ್ಟಿ | | `/api/acp/agents` | POST | ಕಸ್ಟಮ್ ಏಜೆಂಟ್ ಸೇರಿಸಿ ಅಥವಾ ಪತ್ತೆ ಕ್ಯಾಶ್ ಅನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡಿ | | `/api/acp/agents` | DELETE | `id` ಕ್ವೆರಿ ಪ್ಯಾರಾಮೀಟರ್ ಮೂಲಕ ಕಸ್ಟಮ್ ಏಜೆಂಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ | GET ಪ್ರತಿಕ್ರಿಯೆಯು `agents[]` (id, name, binary, version, installed, protocol, isCustom) ಮತ್ತು `summary` (total, installed, notFound, builtIn, custom) ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ### ಸ್ಥಿತಿಸ್ಥಾಪಕತೆ ಮತ್ತು ದರ ಮಿತಿಗಳು | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | --------------------------------- | --------- | ----------------------------------------------------------------------------------------------- | | `/api/resilience` | GET/PATCH | ವಿನಂತಿ ಕ್ಯೂ, ಸಂಪರ್ಕ ಕೂಲ್ಡೌನ್, ಪೂರೈಕೆದಾರ ಬ್ರೇಕರ್ ಮತ್ತು ಕಾಯುವಿಕೆ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಪಡೆಯಿರಿ/ನವೀಕರಿಸಿ | | `/api/resilience/reset` | POST | ಪೂರೈಕೆದಾರ ಸರ್ಕ್ಯೂಟ್ ಬ್ರೇಕರ್ಗಳನ್ನು ಮರುಹೊಂದಿಸಿ | | `/api/resilience/model-cooldowns` | GET | ಉಳಿದಿರುವ ಸಮಯದ ಪ್ರಕಾರ ವಿಂಗಡಿಸಲಾದ ಸಕ್ರಿಯ ಪ್ರತಿ-(ಪೂರೈಕೆದಾರ, ಸಂಪರ್ಕ, ಮಾದರಿ) ಲಾಕ್ಔಟ್ಗಳ ಪಟ್ಟಿ | | `/api/resilience/model-cooldowns` | DELETE | ಮಾದರಿ ಲಾಕ್ಔಟ್ ತೆರವುಗೊಳಿಸಿ — ಬಾಡಿ `{provider, model}` ಅಥವಾ ಎಲ್ಲವನ್ನೂ ಅಳಿಸಲು `{all: true}` | | `/api/rate-limits` | GET | ಪ್ರತಿ ಖಾತೆಯ ದರ ಮಿತಿ ಸ್ಥಿತಿ | | `/api/rate-limit` | GET | ಜಾಗತಿಕ ದರ ಮಿತಿ ಕಾನ್ಫಿಗರೇಶನ್ | > ಎಲ್ಲಾ ನಾಲ್ಕು `/api/resilience/*` ಮಾರ್ಗಗಳಿಗೆ **ನಿರ್ವಹಣಾ ದೃಢೀಕರಣ** (`requireManagementAuth`) ಅಗತ್ಯವಿದೆ. ಪೂರೈಕೆದಾರ ಬ್ರೇಕರ್, ಸಂಪರ್ಕ ಕೂಲ್ಡೌನ್ ಮತ್ತು ಮಾದರಿ ಲಾಕ್ಔಟ್ ನಡುವಿನ ಸಂಪೂರ್ಣ ವಿವರಕ್ಕಾಗಿ [ಸ್ಥಿತಿಸ್ಥಾಪಕತೆ (ವಿಸ್ತೃತ)](#resilience-extended) ನೋಡಿ. ### ಮೌಲ್ಯಮಾಪನಗಳು | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | ------------ | -------- | ----------------------------------------------- | | `/api/evals` | GET/POST | ಮೌಲ್ಯಮಾಪನ ಸೂಟ್ಗಳ ಪಟ್ಟಿ / ಮೌಲ್ಯಮಾಪನವನ್ನು ಚಲಾಯಿಸಿ | ### ನೀತಿಗಳು | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | --------------- | --------------- | ---------------------------- | | `/api/policies` | GET/POST/DELETE | ರೂಟಿಂಗ್ ನೀತಿಗಳನ್ನು ನಿರ್ವಹಿಸಿ | ### ಅನುಸರಣೆ | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | --------------------------- | ----- | ---------------------------- | | `/api/compliance/audit-log` | GET | ಅನುಸರಣೆ ಆಡಿಟ್ ಲಾಗ್ (ಕೊನೆಯ N) | ### v1beta (Gemini-ಹೊಂದಾಣಿಕೆ) | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | -------------------------- | ----- | ------------------------------------ | | `/v1beta/models` | GET | Gemini ಸ್ವರೂಪದಲ್ಲಿ ಮಾದರಿಗಳ ಪಟ್ಟಿ | | `/v1beta/models/{...path}` | POST | Gemini `generateContent` ಎಂಡ್ಪಾಯಿಂಟ್ | ಸ್ಥಳೀಯ Gemini SDK ಹೊಂದಾಣಿಕೆಯನ್ನು ನಿರೀಕ್ಷಿಸುವ ಕ್ಲೈಂಟ್ಗಳಿಗಾಗಿ ಈ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು Gemini API ಸ್ವರೂಪವನ್ನು ಪ್ರತಿಬಿಂಬಿಸುತ್ತವೆ. ### ಆಂತರಿಕ / ಸಿಸ್ಟಂ APIಗಳು | ಎಂಡ್ಪಾಯಿಂಟ್ | ವಿಧಾನ | ವಿವರಣೆ | | ------------------------ | ----- | ---------------------------------------------------------------- | | `/api/init` | GET | ಅಪ್ಲಿಕೇಶನ್ ಪ್ರಾರಂಭಿಕೀಕರಣ ಪರಿಶೀಲನೆ (ಮೊದಲ ಚಾಲನೆಯಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ) | | `/api/tags` | GET | Ollama-ಹೊಂದಾಣಿಕೆಯ ಮಾದರಿ ಟ್ಯಾಗ್ಗಳು (Ollama ಕ್ಲೈಂಟ್ಗಳಿಗಾಗಿ) | | `/api/restart` | POST | ಸುಗಮ ಸರ್ವರ್ ಮರುಪ್ರಾರಂಭವನ್ನು ಪ್ರಚೋದಿಸಿ | | `/api/shutdown` | POST | ಸುಗಮ ಸರ್ವರ್ ಸ್ಥಗಿತವನ್ನು ಪ್ರಚೋದಿಸಿ | | `/api/system/env/repair` | POST | OAuth ಪೂರೈಕೆದಾರ ಪರಿಸರ ವೇರಿಯೇಬಲ್ಗಳನ್ನು ದುರಸ್ತಿಗೊಳಿಸಿ | | `/api/system/version` | GET | ಪ್ರಸ್ತುತ/ಇತ್ತೀಚಿನ ಆವೃತ್ತಿ, ನವೀಕರಣ ಸ್ಥಿತಿ, ಬಿಡುಗಡೆ ಚಾನಲ್ | | `/api/system/version` | POST | ಇತ್ತೀಚಿನ ಆವೃತ್ತಿಗೆ ಡಿಪ್ಲಾಯ್ಮೆಂಟ್-ಅರಿವುಳ್ಳ ನವೀಕರಣವನ್ನು ಪ್ರಾರಂಭಿಸಿ | > **ಸೂಚನೆ:** ಈ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳನ್ನು ಸಿಸ್ಟಂ ಆಂತರಿಕವಾಗಿ ಅಥವಾ Ollama ಕ್ಲೈಂಟ್ ಹೊಂದಾಣಿಕೆಗಾಗಿ ಬಳಸುತ್ತದೆ. ಸಾಮಾನ್ಯವಾಗಿ ಅಂತಿಮ ಬಳಕೆದಾರರು ಇವುಗಳನ್ನು ಕರೆ ಮಾಡುವುದಿಲ್ಲ. ### OAuth ಪರಿಸರ ದುರಸ್ತಿ _(v3.6.1+)_ ```bash POST /api/system/env/repair Content-Type: application/json { "provider": "claude-code" } ``` ನಿರ್ದಿಷ್ಟ ಪೂರೈಕೆದಾರರಿಗಾಗಿ ಕಾಣೆಯಾಗಿರುವ ಅಥವಾ ದೋಷಪೂರಿತ OAuth ಪರಿಸರ ವೇರಿಯೇಬಲ್ಗಳನ್ನು ದುರಸ್ತಿಗೊಳಿಸುತ್ತದೆ. ಹಿಂತಿರುಗಿಸುವುದು: ```json { "success": true, "repaired": ["CLAUDE_CODE_OAUTH_CLIENT_ID", "CLAUDE_CODE_OAUTH_CLIENT_SECRET"], "backupPath": "/home/user/.omniroute/backups/env-repair-2026-04-11.bak" } ``` ### ಆವೃತ್ತಿ ಮತ್ತು ಬಿಡುಗಡೆ ಚಾನಲ್ ```bash GET /api/system/version ``` ಲೂಪ್ಬ್ಯಾಕ್ಗೆ-ಮಾತ್ರ ಲಭ್ಯವಿರುವ ನಿರ್ವಹಣಾ ಮಾರ್ಗ (ನಿರ್ವಾಹಕ ದೃಢೀಕರಣ). ಚಾಲನೆಯಲ್ಲಿರುವ ಆವೃತ್ತಿ, ಇತ್ತೀಚಿನ ಪ್ರಕಟಿತ ಆವೃತ್ತಿ ಮತ್ತು ಸ್ವಯಂ-ನವೀಕರಣದ ಸ್ಥಿತಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. `releaseChannel` ಮತ್ತು `channels` ಹೆಚ್ಚುವರಿ ಕ್ಷೇತ್ರಗಳಾಗಿವೆ (ರೈಲ್ 3.8.54); `channel` ತನ್ನ ಅರ್ಥವನ್ನು ಉಳಿಸಿಕೊಳ್ಳುತ್ತದೆ — ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಅಪ್ಡೇಟರ್ ಬಳಸುವ ನಿಯೋಜನಾ ವಿಧಾನ (`npm`, `source` ಅಥವಾ `docker-compose`). ```json { "current": "3.8.52", "latest": "3.8.52", "updateAvailable": false, "channel": "npm", "autoUpdateSupported": true, "autoUpdateError": null, "news": null, "releaseChannel": "latest", "channels": { "latest": "3.8.52", "next": "3.8.53-rc.1" } } ``` - `releaseChannel` — ಚಾಲನೆಯಲ್ಲಿರುವ ಬಿಲ್ಡ್ನ npm ಚಾನಲ್: `-nightly.*` ಆವೃತ್ತಿಗಳಿಗೆ `nightly`, ಇತರ ಪೂರ್ವ-ಬಿಡುಗಡೆಗಳಿಗೆ (`-rc.*`, `-beta.*`, `-alpha.*`) `next`, `channels.latest` ಗಿಂತ ಹಳೆಯ ಪ್ರಮುಖ ಆವೃತ್ತಿಯ ಸ್ಥಿರ ಆವೃತ್ತಿಗೆ `lts`, ಇಲ್ಲದಿದ್ದರೆ `latest`. ಪ್ರಕಟಿಸುವ ಸಮಯದಲ್ಲಿ npm dist-tag ಅನ್ನು ಆಯ್ಕೆಮಾಡುವ `scripts/release/dist-tag.mjs` ನಲ್ಲಿರುವ ಅದೇ ನಿಯಮಗಳು. - `channels` — `npm view omniroute dist-tags` ನಿಂದ ಪ್ರತಿ dist-tag ನ ಪ್ರಕಟಿತ ಇತ್ತೀಚಿನ ಆವೃತ್ತಿ (ರೆಜಿಸ್ಟ್ರಿ HTTP ಪರ್ಯಾಯ ವ್ಯವಸ್ಥೆ), `latest` ನಂತೆಯೇ ಅದೇ 10-ನಿಮಿಷದ TTL ನೊಂದಿಗೆ ಕ್ಯಾಶ್ ಮಾಡಲಾಗುತ್ತದೆ. `latest` ಯಾವಾಗಲೂ ಇರುತ್ತದೆ (ಮೊದಲು `latest` ಕ್ಷೇತ್ರವನ್ನು, ನಂತರ `"unavailable"` ಅನ್ನು ಪರ್ಯಾಯವಾಗಿ ಬಳಸುತ್ತದೆ); ಆ dist-tag ಅಸ್ತಿತ್ವದಲ್ಲಿರುವಾಗ ಮಾತ್ರ `next`, `nightly` ಮತ್ತು `lts` ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ. `Cache-Control: no-cache` ವಿನಂತಿಯು ಎರಡೂ ಲುಕ್ಅಪ್ಗಳನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡುತ್ತದೆ. ಚಾನಲ್ ಮಾದರಿಯನ್ನು (`latest` = 4.0 GA ವರೆಗೆ v3, `next` = rc, `nightly` = `develop` ಬಿಲ್ಡ್ಗಳು, `lts` = 4.0 GA ನಂತರದ v3 ಪ್ಯಾಚ್ಗಳು) `docs/ops/RELEASE_STRATEGY.md` ನಲ್ಲಿ ವಿವರಿಸಲಾಗಿದೆ. --- ## ಆಡಿಯೊ ಲಿಪ್ಯಂತರ ```bash POST /v1/audio/transcriptions Authorization: Bearer your-api-key Content-Type: multipart/form-data ``` ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ಯಾವುದೇ STT ಪೂರೈಕೆದಾರವನ್ನು ಬಳಸಿಕೊಂಡು ಆಡಿಯೊ ಫೈಲ್ಗಳನ್ನು ಲಿಪ್ಯಂತರಿಸಿ. ಮೊದಲ ಪಥದ ವಿಭಾಗವು ಸ್ಥಳೀಯ ಪೂರೈಕೆದಾರರನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ (`openai/…`, `deepgram/…`). ಮತ್ತೊಂದು ಮಾರಾಟಗಾರರ ಮಾದರಿಯನ್ನು ಮರು-ರಫ್ತು ಮಾಡುವ ಗೇಟ್ವೇಗಳು ಅರ್ಹತೆಯುಳ್ಳ ಐಡಿಯನ್ನು ಬಳಸುತ್ತವೆ (`openrouter/deepgram/nova-3`). **ವಿನಂತಿ:** ```bash curl -X POST http://localhost:20128/v1/audio/transcriptions \ -H "Authorization: Bearer your-api-key" \ -F "file=@recording.mp3" \ -F "model=openai/whisper-1" ``` **ಪ್ರತಿಕ್ರಿಯೆ:** ```json { "text": "Hello, this is the transcribed audio content.", "task": "transcribe", "language": "en", "duration": 12.5 } ``` **ಮಾದರಿ ಐಡಿಗಳ ಉದಾಹರಣೆಗಳು:** `openai/whisper-1` (OpenAI ಕೀ ಅಗತ್ಯವಿದೆ), `openrouter/deepgram/nova-3` (OpenRouter ಕೀ ಅಗತ್ಯವಿದೆ), `deepgram/nova-3` (ಸ್ಥಳೀಯ Deepgram ಕೀ ಅಗತ್ಯವಿದೆ). ಕೇವಲ `deepgram/nova-3` ವಿನಂತಿಯು OpenRouter ಅನ್ನು **ಬಳಸುವುದಿಲ್ಲ**. **ಬೆಂಬಲಿತ ಸ್ವರೂಪಗಳು:** `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`. --- ## Ollama ಹೊಂದಾಣಿಕೆ Ollama API ಸ್ವರೂಪವನ್ನು ಬಳಸುವ ಕ್ಲೈಂಟ್ಗಳಿಗಾಗಿ: ```bash # ಚಾಟ್ ಎಂಡ್ಪಾಯಿಂಟ್ (Ollama ಸ್ವರೂಪ) POST /v1/api/chat # ಮಾದರಿಗಳ ಪಟ್ಟಿ (Ollama ಸ್ವರೂಪ) GET /api/tags ``` Ollama ಮತ್ತು ಆಂತರಿಕ ಸ್ವರೂಪಗಳ ನಡುವೆ ವಿನಂತಿಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ. ## ಟೋಕನೀಕರಿಸಿದ VS Code / ಹೆಡರ್ರಹಿತ ಪರ್ಯಾಯ ಹೆಸರುಗಳು ಏಕೀಕರಣವು `Authorization` ಹೆಡರ್ ಅನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಾಗದಾಗ ಮತ್ತು ಮೂಲ URL ಒಳಗೆ API ಕೀಯನ್ನು ಅಳವಡಿಸಬೇಕಾದಾಗ ಈ ಪರ್ಯಾಯ ಹೆಸರುಗಳನ್ನು ಬಳಸಿ. ```bash # OpenAI-ಶೈಲಿಯ ಕ್ಯಾಟಲಾಗ್ ಪರ್ಯಾಯ ಹೆಸರು GET /api/v1/vscode/{token}/ GET /api/v1/vscode/{token}/models # OpenAI-ಶೈಲಿಯ ಚಾಟ್ ಪರ್ಯಾಯ ಹೆಸರುಗಳು POST /api/v1/vscode/{token}/chat/completions POST /api/v1/vscode/{token}/responses # Ollama-ಶೈಲಿಯ ಪರ್ಯಾಯ ಹೆಸರುಗಳು POST /api/v1/vscode/{token}/api/chat GET /api/v1/vscode/{token}/api/tags ``` ಉದಾಹರಣೆ: ```bash curl https://your-host.example/api/v1/vscode/YOUR_API_KEY/models curl -X POST https://your-host.example/api/v1/vscode/YOUR_API_KEY/chat/completions \ -H "Content-Type: application/json" \ -d '{"model":"auto","messages":[{"role":"user","content":"hello"}]}' ``` ಟಿಪ್ಪಣಿಗಳು: - ಟೋಕನೀಕರಿಸಿದ ಪರ್ಯಾಯ ಹೆಸರುಗಳು `/v1/*` ಮತ್ತು `/api/tags` ಬಳಸುವ ಅದೇ ಹ್ಯಾಂಡ್ಲರ್ಗಳನ್ನು ಮರುಬಳಕೆ ಮಾಡುತ್ತವೆ; ಪ್ರತಿಕ್ರಿಯೆಯ ರಚನೆಗಳು ಒಂದೇ ರೀತಿಯಾಗಿ ಉಳಿಯುತ್ತವೆ. - ಕ್ಲೈಂಟ್ ಕಸ್ಟಮ್ ಹೆಡರ್ಗಳನ್ನು ಬೆಂಬಲಿಸುವಾಗಲೆಲ್ಲ `Authorization: Bearer ...` ಅನ್ನು ಆದ್ಯತೆಯಿಂದ ಬಳಸಿ. - URL-ಆಧಾರಿತ ಟೋಕನ್ಗಳು ರಿವರ್ಸ್-ಪ್ರಾಕ್ಸಿ ಲಾಗ್ಗಳು, ಬ್ರೌಸರ್ ಇತಿಹಾಸ ಮತ್ತು OmniRoute ಹೊರಗಿನ ಟೆಲಿಮೆಟ್ರಿಯಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳಬಹುದು. ಅವುಗಳನ್ನು ಡೀಫಾಲ್ಟ್ ದೃಢೀಕರಣ ವಿಧಾನವಾಗಿ ಪರಿಗಣಿಸದೆ, ಹೊಂದಾಣಿಕೆ ಆಯ್ಕೆಯಾಗಿ ಪರಿಗಣಿಸಿ. --- ## ಟೆಲಿಮೆಟ್ರಿ ```bash # ವಿಳಂಬ ಟೆಲಿಮೆಟ್ರಿ ಸಾರಾಂಶವನ್ನು ಪಡೆಯಿರಿ (ಪ್ರತಿ ಪೂರೈಕೆದಾರರಿಗೆ p50/p95/p99) GET /api/telemetry/summary ``` **ಪ್ರತಿಕ್ರಿಯೆ:** ```json { "providers": { "claudeCode": { "p50": 245, "p95": 890, "p99": 1200, "count": 150 }, "github": { "p50": 180, "p95": 620, "p99": 950, "count": 320 } } } ``` --- ## ಬಜೆಟ್ ```bash # ಎಲ್ಲಾ API ಕೀಗಳ ಬಜೆಟ್ ಸ್ಥಿತಿಯನ್ನು ಪಡೆಯಿರಿ GET /api/usage/budget # ಬಜೆಟ್ ಅನ್ನು ಹೊಂದಿಸಿ ಅಥವಾ ನವೀಕರಿಸಿ POST /api/usage/budget Content-Type: application/json { "apiKeyId": "key-123", "dailyLimitUsd": 5.00, "weeklyLimitUsd": 30.00, "monthlyLimitUsd": 100.00, "warningThreshold": 0.8, "resetInterval": "monthly" } ``` > **ಸ್ಕೀಮಾ ಟಿಪ್ಪಣಿಗಳು** (`setBudgetSchema`): `apiKeyId` ಅಗತ್ಯವಿದೆ; `dailyLimitUsd`, `weeklyLimitUsd`, ಅಥವಾ `monthlyLimitUsd` ಇವುಗಳಲ್ಲಿ ಕನಿಷ್ಠ ಒಂದರ ಮೌಲ್ಯವು ಶೂನ್ಯಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿರಬೇಕು. ಐಚ್ಛಿಕ ಕ್ಷೇತ್ರಗಳು: `warningThreshold` (0–1), `resetInterval` (`daily` | `weekly` | `monthly`), `resetTime` (`HH:MM`). ಹಳೆಯ `{keyId, limit, period}` ರಚನೆಯು `400 Bad Request` ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ## ಟೋಕನ್ ಮಿತಿಗಳು ಪ್ರತಿ API ಕೀಲಿಗೆ ಅನ್ವಯಿಸುವ **ಟೋಕನ್** ಬಜೆಟ್ಗಳು (ಮೇಲಿನ USD-ಆಧಾರಿತ ಬಜೆಟ್ಗಿಂತ ಭಿನ್ನವಾಗಿವೆ). ವಿನಂತಿಯ ಪಥದಲ್ಲೇ ಇವುಗಳನ್ನು ಜಾರಿಗೊಳಿಸಲಾಗುತ್ತದೆ: ಕೀಲಿಯ ಪ್ರಸ್ತುತ ವಿಂಡೋ ಬಳಕೆಯು ಅದರ ಮಿತಿಯನ್ನು ತಲುಪಿದಾಗ, ವಿನಂತಿಗಳನ್ನು `429 Too Many Requests` ಮೂಲಕ ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ. ಮಿತಿಗಳನ್ನು ನಿರ್ದಿಷ್ಟ `model`, `provider` ಅಥವಾ ಕೀಲಿಯಾದ್ಯಂತ `global` ಆಗಿ ಅನ್ವಯಿಸಬಹುದು; ಹಲವು ಮಿತಿಗಳು ಒಂದು ವಿನಂತಿಗೆ ಹೊಂದಿಕೆಯಾದಾಗ, ಅತ್ಯಂತ ನಿರ್ಬಂಧಿತ ಮಿತಿಯು ಅನ್ವಯಿಸುತ್ತದೆ. ```bash # ಕೀಲಿಯ ಟೋಕನ್ ಮಿತಿಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (ಲೈವ್ ವಿಂಡೋ ಬಳಕೆಯನ್ನು ಒಳಗೊಂಡಿದೆ) GET /api/usage/token-limits?apiKeyId=key-123 # ಟೋಕನ್ ಮಿತಿಯನ್ನು ರಚಿಸಿ ಅಥವಾ ನವೀಕರಿಸಿ POST /api/usage/token-limits Content-Type: application/json { "apiKeyId": "key-123", "scopeType": "model", "scopeValue": "openai/gpt-4o", "tokenLimit": 1000000, "resetInterval": "monthly", "enabled": true } # id ಮೂಲಕ ಟೋಕನ್ ಮಿತಿಯನ್ನು ಅಳಿಸಿ DELETE /api/usage/token-limits?id=tl-abc ``` > **ಸ್ಕೀಮಾ ಟಿಪ್ಪಣಿಗಳು** (`setTokenLimitSchema`): `apiKeyId` ಮತ್ತು `scopeType` (`model` | `provider` | `global`) ಅಗತ್ಯವಾಗಿವೆ. `scopeType`, `global` ಆಗಿರದ ಹೊರತು `scopeValue` ಅಗತ್ಯವಾಗಿರುತ್ತದೆ (ಉದಾ. `model` ವ್ಯಾಪ್ತಿಗೆ ಮಾದರಿ id, `provider` ವ್ಯಾಪ್ತಿಗೆ ಪೂರೈಕೆದಾರರ id). `tokenLimit` ಧನಾತ್ಮಕ ಪೂರ್ಣಾಂಕವಾಗಿರಬೇಕು (ಸ್ಟ್ರಿಂಗ್ನಿಂದ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ). ಐಚ್ಛಿಕ: `id` (ರಚಿಸಲು ಬಿಟ್ಟುಬಿಡಿ, ನವೀಕರಿಸಲು ಒದಗಿಸಿ), `resetInterval` (`daily` | `weekly` | `monthly`, ಡೀಫಾಲ್ಟ್ `monthly`), `resetTime` (`HH:MM`), `enabled` (ಡೀಫಾಲ್ಟ್ `true`). `GET` ಪ್ರತಿಕ್ರಿಯೆಗಳು ಪ್ರತಿ ಮಿತಿಗೆ `tokensUsed`, `remaining`, `windowStart`, `periodStartAt`, ಮತ್ತು `nextResetAt` ಮಾಹಿತಿಯನ್ನು ಸೇರಿಸುತ್ತವೆ. ಇದು ನಿರ್ವಹಣಾ-ವರ್ಗದ ಎಂಡ್ಪಾಯಿಂಟ್ ಆಗಿದೆ (ದೃಢೀಕರಣವನ್ನು authz ಪೈಪ್ಲೈನ್ ಕೇಂದ್ರೀಯವಾಗಿ ಜಾರಿಗೊಳಿಸುತ್ತದೆ). ## ವಿನಂತಿ ಪ್ರಕ್ರಿಯೆ 1. ಕ್ಲೈಂಟ್ `/v1/*` ಗೆ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ 2. ರೂಟ್ ಹ್ಯಾಂಡ್ಲರ್ `handleChat`, `handleEmbedding`, `handleAudioTranscription`, ಅಥವಾ `handleImageGeneration` ಅನ್ನು ಕರೆಮಾಡುತ್ತದೆ 3. ಮಾದರಿಯನ್ನು ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ (ನೇರ provider/model ಅಥವಾ alias/combo) 4. ಖಾತೆ ಲಭ್ಯತೆಯ ಫಿಲ್ಟರಿಂಗ್ನೊಂದಿಗೆ ಸ್ಥಳೀಯ DB ಯಿಂದ ರುಜುವಾತುಗಳನ್ನು ಆಯ್ಕೆಮಾಡಲಾಗುತ್ತದೆ 5. ಚಾಟ್ಗಾಗಿ: `handleChatCore` ಅರ್ಥಾತ್ಮಕ/ಸಿಗ್ನೇಚರ್ ಕ್ಯಾಶ್ ಅನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಕಾಂಬೊ ಕಂಪ್ರೆಷನ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ 6. ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ ಪೂರೈಕೆದಾರರ ಅನುವಾದಕ್ಕೂ ಮೊದಲು ಪೂರ್ವಸಕ್ರಿಯ ಕಂಪ್ರೆಷನ್ ರನ್ ಆಗುತ್ತದೆ (`lite`, Caveman, RTK, ಅಥವಾ ಸ್ಟ್ಯಾಕ್ ಮಾಡಿದ ವಿಧಾನ) 7. ಪೂರೈಕೆದಾರರ ಎಕ್ಸಿಕ್ಯೂಟರ್ ಅಪ್ಸ್ಟ್ರೀಮ್ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ 8. ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಮತ್ತೆ ಕ್ಲೈಂಟ್ ಸ್ವರೂಪಕ್ಕೆ ಅನುವಾದಿಸಲಾಗುತ್ತದೆ (ಚಾಟ್) ಅಥವಾ ಇದ್ದಂತೆಯೇ ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ (ಎಂಬೆಡಿಂಗ್ಗಳು/ಚಿತ್ರಗಳು/ಆಡಿಯೊ) 9. ಬಳಕೆ, ಕಂಪ್ರೆಷನ್ ವಿಶ್ಲೇಷಣೆಗಳು ಮತ್ತು ವಿನಂತಿ ಲಾಗ್ಗಳನ್ನು ದಾಖಲಿಸಲಾಗುತ್ತದೆ 10. ದೋಷಗಳು ಸಂಭವಿಸಿದಾಗ ಕಾಂಬೊ ನಿಯಮಗಳ ಪ್ರಕಾರ ಫಾಲ್ಬ್ಯಾಕ್ ಅನ್ವಯಿಸುತ್ತದೆ ಸಂಪೂರ್ಣ ಆರ್ಕಿಟೆಕ್ಚರ್ ಉಲ್ಲೇಖ: [`ARCHITECTURE.md`](../architecture/ARCHITECTURE.md) --- ## ಕಾಂಬೊ ನಿರ್ವಹಣೆ ಉನ್ನತ-ಮಟ್ಟದ ರೂಟಿಂಗ್ ಕಾಂಬೊಗಳನ್ನು (`/api/combos*` ಅಡಿಯಲ್ಲಿ ಈಗಾಗಲೇ ಸಾರಾಂಶಗೊಳಿಸಲಾಗಿದೆ) ಮಾದರಿ id ಪ್ಯಾಟರ್ನ್ನಿಂದ 1:1 ಅನುಪಾತದಲ್ಲಿ ಮ್ಯಾಪ್ ಮಾಡಬಹುದು; ಇದರಿಂದ OpenAI-ಶೈಲಿಯ ಮಾದರಿ id ಅನ್ನು ಕಾಂಬೊಗೆ ಪಾರದರ್ಶಕವಾಗಿ ಮರುನಿರ್ದೇಶಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | -------------------------------- | ------------------------------------------------------------------------------- | | GET | `/api/model-combo-mappings` | ಎಲ್ಲಾ model→combo ಮ್ಯಾಪಿಂಗ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | POST | `/api/model-combo-mappings` | ಮ್ಯಾಪಿಂಗ್ ರಚಿಸಿ — ಬಾಡಿ: `{pattern, comboId, priority?, enabled?, description?}` | | GET | `/api/model-combo-mappings/[id]` | ಒಂದೇ ಮ್ಯಾಪಿಂಗ್ ಅನ್ನು ಪಡೆಯಿರಿ | | PUT | `/api/model-combo-mappings/[id]` | ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಮ್ಯಾಪಿಂಗ್ನ ಫೀಲ್ಡ್ಗಳನ್ನು ನವೀಕರಿಸಿ | | DELETE | `/api/model-combo-mappings/[id]` | ಮ್ಯಾಪಿಂಗ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್/API ಕೀ (`requireManagementAuth`). --- ## ವೆಬ್ಹುಕ್ಗಳು OmniRoute ಈವೆಂಟ್ಗಳಿಗಾಗಿ (ವಿನಂತಿ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ, ಕೋಟಾ ಮುಕ್ತಾಯ, ಕೀ ಬದಲಾವಣೆ ಇತ್ಯಾದಿ) ಹೊರಹೋಗುವ ವೆಬ್ಹುಕ್ ಚಂದಾದಾರಿಕೆಗಳು. | ವಿಧಾನ | ಮಾರ್ಗ | ವಿವರಣೆ | | ------ | ------------------------- | ----------------------------------------------------------------------------------- | | GET | `/api/webhooks` | ವೆಬ್ಹುಕ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ (ರಹಸ್ಯಗಳನ್ನು `...` ರೂಪದಲ್ಲಿ ಮರೆಮಾಡಲಾಗುತ್ತದೆ) | | POST | `/api/webhooks` | ವೆಬ್ಹುಕ್ ರಚಿಸುತ್ತದೆ — ವಿನಂತಿಯ ಭಾಗ: `{url, events?: ["*"], secret?, description?}` | | GET | `/api/webhooks/[id]` | ವೆಬ್ಹುಕ್ ಅನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ | | PUT | `/api/webhooks/[id]` | url/events/secret/description ಅನ್ನು ನವೀಕರಿಸುತ್ತದೆ | | DELETE | `/api/webhooks/[id]` | ವೆಬ್ಹುಕ್ ಅನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ | | POST | `/api/webhooks/[id]/test` | ವೆಬ್ಹುಕ್ URL ಗೆ ಪರೀಕ್ಷಾ ಪೇಲೋಡ್ ಕಳುಹಿಸಿ, ವಿತರಣೆಯ ಸ್ಥಿತಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್/API ಕೀ (`requireManagementAuth`). --- ## ನೋಂದಾಯಿತ ಕೀಲಿಗಳು (ಸ್ವಯಂ-ನಿರ್ವಹಣೆ) ದೈನಂದಿನ/ಗಂಟೆಯ ಕೋಟಾಗಳೊಂದಿಗೆ, ಆಧಾರವಾಗಿರುವ ಪೂರೈಕೆದಾರ/ಖಾತೆಯ ವಿರುದ್ಧ API ಕೀಲಿಗಳನ್ನು ನೀಡಲು ಮತ್ತು ಆವರ್ತಿಸಲು ಸ್ವಯಂ-ಕೀಲಿ ನಿರ್ವಹಣಾ ಉಪವ್ಯವಸ್ಥೆಯಿಂದ ಬಳಸಲಾಗುತ್ತದೆ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/v1/registered-keys` | ನೋಂದಾಯಿತ ಕೀಲಿಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ (ಮರೆಮಾಡಲಾದ ಪೂರ್ವಪ್ರತ್ಯಯ ಮಾತ್ರ) | | POST | `/api/v1/registered-keys` | ಹೊಸ ನೋಂದಾಯಿತ ಕೀಲಿಯನ್ನು ನೀಡುತ್ತದೆ — ವಿನಂತಿಯ ದೇಹ: `{name, provider?, accountId?, idempotencyKey?, expiresAt?, dailyBudget?, hourlyBudget?}`. ಕಚ್ಚಾ ಕೀಲಿಯನ್ನು **ಒಮ್ಮೆ ಮಾತ್ರ** ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ಕೋಟಾ ನಿರಾಕರಣೆಯಾದರೆ `429` ಹಿಂದಿರುಗಿಸುತ್ತದೆ. | | GET | `/api/v1/registered-keys/[id]` | ನೋಂದಾಯಿತ ಕೀಲಿಯ ಮೆಟಾಡೇಟಾವನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ (ಕಚ್ಚಾ ಕೀಲಿ ಇಲ್ಲ) | | DELETE | `/api/v1/registered-keys/[id]` | ನೋಂದಾಯಿತ ಕೀಲಿಯನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ | | POST | `/api/v1/registered-keys/[id]/revoke` | ಸ್ಪಷ್ಟ ಹಿಂಪಡೆಯುವಿಕೆ ಎಂಡ್ಪಾಯಿಂಟ್ (`DELETE` ನಂತೆಯೇ ಪರಿಣಾಮ) | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್/API ಕೀಲಿ (`requireManagementAuth`) — `/api/keys` ನಂತೆಯೇ ಅದೇ ರಕ್ಷಕ: ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಸೆಷನ್, ಸ್ಥಳೀಯ CLI ಟೋಕನ್, ಅಥವಾ `manage`/`admin` ವ್ಯಾಪ್ತಿಯ API ಕೀಲಿ; ಇನ್ಫರೆನ್ಸ್ಗೆ ಮಾತ್ರ ಸೀಮಿತವಾದ API ಕೀಲಿಗಳಿಗೆ `403` ದೊರೆಯುತ್ತದೆ. `/v1/quotas/check` ಮತ್ತು `/v1/issues/report` ಅನ್ನೂ ನೋಡಿ. --- ## ಏಜೆಂಟ್ಗಳ ಪ್ರೋಟೋಕಾಲ್ OmniRoute ಬಳಕೆದಾರರ ಪರವಾಗಿ ದೂರದಿಂದ ಕಾರ್ಯಗತಗೊಳಿಸಲಾದ ಕ್ಲೌಡ್ ಏಜೆಂಟ್ ಕಾರ್ಯಗಳು (Claude Code, Codex Cloud, OpenHands ಇತ್ಯಾದಿ). | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | GET | `/api/v1/agents/tasks` | ಕಾರ್ಯಗಳ ಪಟ್ಟಿ — ಐಚ್ಛಿಕವಾಗಿ `?provider=`, `?status=`, `?limit=` (1–500, ಡೀಫಾಲ್ಟ್ 50) | | POST | `/api/v1/agents/tasks` | ಕಾರ್ಯವನ್ನು ರಚಿಸಿ — ವಿನಂತಿಯ ಮುಖ್ಯಭಾಗವನ್ನು `CreateCloudAgentTaskSchema` (`providerId`, `prompt`, `source`, `options?`) ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ. ಕಾರ್ಯದ ಹೊದಿಕೆಯೊಂದಿಗೆ `201` ಹಿಂತಿರುಗಿಸುತ್ತದೆ | | DELETE | `/api/v1/agents/tasks?id=...` | ಕಾರ್ಯವನ್ನು ಅಳಿಸಿ | | GET | `/api/v1/agents/tasks/[id]` | ಕಾರ್ಯವನ್ನು ಓದಿ — `external_id` ಹೊಂದಿಸಿದ್ದರೆ, ಅಪ್ಸ್ಟ್ರೀಮ್ ಕ್ಲೌಡ್ ಏಜೆಂಟ್ನಿಂದ ಸ್ಥಿತಿಯನ್ನು ಸಮಕಾಲಿಕವಾಗಿ ನವೀಕರಿಸುತ್ತದೆ | | POST | `/api/v1/agents/tasks/[id]` | ವಿಭೇದಿತ ಕ್ರಿಯೆ: `{action: "approve"}`, `{action: "message", message}`, ಅಥವಾ `{action: "cancel"}` | | DELETE | `/api/v1/agents/tasks/[id]` | id ಮೂಲಕ ನಿರ್ದಿಷ್ಟ ಕಾರ್ಯವನ್ನು ಅಳಿಸಿ | > **ದೃಢೀಕರಣ:** ಪ್ರತಿಯೊಂದು ವಿಧಾನಕ್ಕೂ ನಿರ್ವಹಣಾ ದೃಢೀಕರಣ ಅಗತ್ಯವಿದೆ (`requireCloudAgentManagementAuth`). v3.8.0 ಕ್ಕಿಂತ ಮೊದಲು ಇವು ದೃಢೀಕರಣರಹಿತವಾಗಿದ್ದವು — ಹೊಂದಾಣಿಕೆಯನ್ನು ಮುರಿಯುವ ಬದಲಾವಣೆಗಾಗಿ `588a0333` ಕಮಿಟ್ ನೋಡಿ. ```bash # Claude Code ಕ್ಲೌಡ್ ಕಾರ್ಯವನ್ನು ರಚಿಸಿ curl -X POST http://localhost:20128/api/v1/agents/tasks \ -H "Authorization: Bearer your-management-key" \ -H "Content-Type: application/json" \ -d '{"providerId":"claude-code-cloud","prompt":"Fix the failing test","source":{"repo":"...","branch":"..."}}' ``` --- ## ನಿರ್ವಹಣಾ ಪ್ರಾಕ್ಸಿಗಳು ಪೂರೈಕೆದಾರರು, ಖಾತೆಗಳು ಅಥವಾ ಜಾಗತಿಕವಾಗಿ ನಿಯೋಜಿಸಬಹುದಾದ ಔಟ್ಬೌಂಡ್ HTTP(S)/SOCKS ಪ್ರಾಕ್ಸಿಗಳು. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/v1/management/proxies` | ಪ್ರಾಕ್ಸಿಗಳ ಪಟ್ಟಿ (`?id=` ಬಳಸಿದರೆ ಒಂದನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ; `?id=&where_used=1` ಬಳಸಿದರೆ ನಿಯೋಜನೆ ಗ್ರಾಫ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ) | | POST | `/api/v1/management/proxies` | ಪ್ರಾಕ್ಸಿಯನ್ನು ರಚಿಸಿ — ವಿನಂತಿಯ ಮುಖ್ಯಭಾಗವನ್ನು `createProxyRegistrySchema` ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ | | PATCH | `/api/v1/management/proxies` | ಪ್ರಾಕ್ಸಿಯನ್ನು ನವೀಕರಿಸಿ — ವಿನಂತಿಯ ಮುಖ್ಯಭಾಗವನ್ನು `updateProxyRegistrySchema` ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ (`id` ಅಗತ್ಯವಿದೆ) | | DELETE | `/api/v1/management/proxies?id=...&force=1` | ಪ್ರಾಕ್ಸಿಯನ್ನು ಅಳಿಸಿ (ನಿಯೋಜನೆಗಳನ್ನು ಬೇರ್ಪಡಿಸಲು `force=1` ಬಳಸಿ) | | GET | `/api/v1/management/proxies/assignments` | ನಿಯೋಜನೆಗಳ ಪಟ್ಟಿ — `proxy_id`, `scope`, `scope_id` ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಬಹುದು; ಸಂಪರ್ಕಕ್ಕಾಗಿ ಸಕ್ರಿಯ ಪ್ರಾಕ್ಸಿಯನ್ನು ನಿರ್ಧರಿಸಲು `resolve_connection_id=` ಅನ್ನು ರವಾನಿಸಿ | | PUT | `/api/v1/management/proxies/assignments` | ನಿಯೋಜಿಸಿ — ವಿನಂತಿಯ ಮುಖ್ಯಭಾಗವನ್ನು `proxyAssignmentSchema` (`{scope, scopeId?, proxyId?}`) ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ. ಡಿಸ್ಪ್ಯಾಚರ್ ಕ್ಯಾಶ್ ಅನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ | | PUT | `/api/v1/management/proxies/bulk-assign` | ಸಾಮೂಹಿಕವಾಗಿ ನಿಯೋಜಿಸಿ — ವಿನಂತಿಯ ಮುಖ್ಯಭಾಗವನ್ನು `bulkProxyAssignmentSchema` (`{scope, scopeIds[], proxyId?}`) ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ | | GET | `/api/v1/management/proxies/health?hours=24` | ಒಂದು ಕಾಲಾವಧಿಯಲ್ಲಿನ ಒಟ್ಟು ಪ್ರಾಕ್ಸಿ ಆರೋಗ್ಯ (ಯಶಸ್ಸು/ವೈಫಲ್ಯ ಎಣಿಕೆಗಳು, ವಿಳಂಬ) | **ದೃಢೀಕರಣ:** ಪ್ರತಿಯೊಂದು ಮಾರ್ಗದಲ್ಲೂ ನಿರ್ವಹಣಾ ಸೆಷನ್/API ಕೀ ಅಗತ್ಯವಿದೆ (`requireManagementAuth`). > ಕಾರ್ಯದ ವಿವರಣೆಯಲ್ಲಿರುವ `POST /api/v1/management/proxies/[id]/assignments` ಮತ್ತು `POST /api/v1/management/proxies/[id]/health` ವಿನಂತಿಗಳನ್ನು ಮೇಲೆ ತೋರಿಸಲಾದ ಸಮತಟ್ಟಾದ `/assignments` ಮತ್ತು `/health` ಮಾರ್ಗಗಳು ನಿರ್ವಹಿಸುತ್ತವೆ — ಕೋಡ್ಬೇಸ್ನಲ್ಲಿ ಪ್ರತಿ-id ಉಪಮಾರ್ಗಗಳಿಲ್ಲ. --- ## ಸ್ಥಿತಿಸ್ಥಾಪಕತ್ವ (ವಿಸ್ತೃತ) OmniRoute ಮೂರು ಸ್ವತಂತ್ರ ತಾತ್ಕಾಲಿಕ-ವೈಫಲ್ಯ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ; ಕೆಳಗಿನ ನಿರ್ವಹಣಾ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು ಅವುಗಳನ್ನು ಓದಲು ಮತ್ತು ಅತಿಕ್ರಮಿಸಲು ಆಪರೇಟರ್ಗಳಿಗೆ ಅವಕಾಶ ನೀಡುತ್ತವೆ: | ವ್ಯಾಪ್ತಿ | ಸ್ಥಿತಿ ಸಂಗ್ರಹಣೆ | ಓದುವುದು | ಮರುಹೊಂದಿಸುವುದು / ತೆರವುಗೊಳಿಸುವುದು | | ----------------- | ------------------------------------------ | ----------------------------------------- | ----------------------------------------------------------------- | | ಪೂರೈಕೆದಾರ ಬ್ರೇಕರ್ | `domain_circuit_breakers` + ಇನ್-ಮೆಮೊರಿ | `/api/monitoring/health` | `POST /api/resilience/reset` | | ಸಂಪರ್ಕ ಕೂಲ್ಡೌನ್ | ಪೂರೈಕೆದಾರ ಸಂಪರ್ಕಗಳಲ್ಲಿನ `rateLimitedUntil` | `/api/rate-limits`, `/api/providers/[id]` | (ಅಗತ್ಯವಾದಾಗ ಮರುಸಕ್ರಿಯಗೊಳ್ಳುತ್ತದೆ; ಪೂರೈಕೆದಾರ PUT ಮೂಲಕ ತೆರವುಗೊಳಿಸಿ) | | ಮಾದರಿ ಲಾಕ್ಔಟ್ | ಇನ್-ಮೆಮೊರಿ ಮಾದರಿ-ಲಭ್ಯತೆ ರಿಜಿಸ್ಟ್ರಿ | `GET /api/resilience/model-cooldowns` | `DELETE /api/resilience/model-cooldowns` | `PATCH /api/resilience`, `providerBreaker.oauth` ಮತ್ತು `providerBreaker.apikey` ಅಡಿಯಲ್ಲಿ ಪೂರೈಕೆದಾರ ಬ್ರೇಕರ್ ಅತಿಕ್ರಮಣಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ. ಪ್ರತಿಯೊಂದು ಪ್ರೊಫೈಲ್ `degradationThreshold`, `failureThreshold`, ಮತ್ತು `resetTimeoutMs` ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ; ಇದೇ ಕ್ಷೇತ್ರಗಳನ್ನು Dashboard → Settings → Resilience ನಲ್ಲಿಯೂ ಒದಗಿಸಲಾಗಿದೆ. ```bash # ಒಂದೇ ಮಾದರಿಯ ಲಾಕ್ಔಟ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಿ curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \ -H "Cookie: auth_token=..." \ -H "Content-Type: application/json" \ -d '{"provider":"openai","model":"gpt-4o-mini"}' # ಎಲ್ಲಾ ಲಾಕ್ಔಟ್ಗಳನ್ನು ಅಳಿಸಿ curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \ -H "Cookie: auth_token=..." \ -d '{"all":true}' ``` ಸಂಪೂರ್ಣ ಪರಿಕಲ್ಪನಾ ಉಲ್ಲೇಖ ಮತ್ತು ಬ್ರೇಕರ್ ಡೀಫಾಲ್ಟ್ಗಳಿಗಾಗಿ: [`CLAUDE.md`](../../CLAUDE.md) → "ಸ್ಥಿತಿಸ್ಥಾಪಕತ್ವದ ರನ್ಟೈಮ್ ಸ್ಥಿತಿ" ನೋಡಿ. --- ## ಕೌಶಲ್ಯಗಳು ಕಸ್ಟಮ್ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಹ್ಯಾಂಡ್ಲರ್ಗಳು ಹಾಗೂ ಮಾರ್ಕೆಟ್ಪ್ಲೇಸ್ ಏಕೀಕರಣಗಳೊಂದಿಗೆ OmniRoute ಅನ್ನು ವಿಸ್ತರಿಸುವ ಕೌಶಲ್ಯ ಫ್ರೇಮ್ವರ್ಕ್. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/skills` | ಸ್ಥಾಪಿಸಲಾದ ಕೌಶಲ್ಯಗಳ ಪಟ್ಟಿ — `?q=`, `?mode=on\|off\|auto`, `?source=skillsmp\|skillssh\|local` ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಬಹುದು, ಪುಟೀಕರಿಸಲಾಗಿದೆ | | GET | `/api/skills/[id]` | ಒಂದು ಕೌಶಲ್ಯವನ್ನು ಹಿಂಪಡೆಯಿರಿ | | PUT | `/api/skills/[id]` | ಕೌಶಲ್ಯವನ್ನು ನವೀಕರಿಸಿ (ಹೆಸರು, ವಿವರಣೆ, ಮೋಡ್, ಸ್ಕೀಮಾ, ಹ್ಯಾಂಡ್ಲರ್, ಟ್ಯಾಗ್ಗಳು) | | DELETE | `/api/skills/[id]` | ಕೌಶಲ್ಯವನ್ನು ಅಸ್ಥಾಪಿಸಿ | | POST | `/api/skills/install` | ರಾ ಮ್ಯಾನಿಫೆಸ್ಟ್ನಿಂದ ಕೌಶಲ್ಯವನ್ನು ಸ್ಥಾಪಿಸಿ — ಬಾಡಿ: `{name, version, description, schema:{input, output}, handlerCode, apiKeyId?}` | | GET | `/api/skills/executions` | ಇತ್ತೀಚಿನ ಕೌಶಲ್ಯ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಗಳ ಪಟ್ಟಿ (ಇನ್ಪುಟ್ಗಳು/ಔಟ್ಪುಟ್ಗಳು/ಅವಧಿಯೊಂದಿಗಿನ ಆಡಿಟ್ ಟ್ರೇಲ್) | | GET | `/api/skills/marketplace?q=...` | SkillsMP ಮಾರ್ಕೆಟ್ಪ್ಲೇಸ್ನಿಂದ ಹುಡುಕಾಟ/ಜನಪ್ರಿಯ ಪಟ್ಟಿ (`skillsmpApiKey` ಸೆಟ್ಟಿಂಗ್ ಅಗತ್ಯವಿದೆ) | | POST | `/api/skills/marketplace/install` | SkillsMP ನಿಂದ id ಮೂಲಕ ಕೌಶಲ್ಯವನ್ನು ಸ್ಥಾಪಿಸಿ | | GET | `/api/skills/skillssh?q=&limit=` | skills.sh ರಿಜಿಸ್ಟ್ರಿಯನ್ನು ಹುಡುಕಿ | | POST | `/api/skills/skillssh/install` | skills.sh ನಿಂದ id ಮೂಲಕ ಕೌಶಲ್ಯವನ್ನು ಸ್ಥಾಪಿಸಿ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್/API ಕೀ. ಮಾರ್ಕೆಟ್ಪ್ಲೇಸ್ ಹುಡುಕಾಟ ಮಾರ್ಗಗಳು ನಿರ್ವಹಣಾ ದೃಢೀಕರಣ ಅಥವಾ Bearer API ಕೀ (`isAuthenticated`) ಇವೆರಡರಲ್ಲಿ ಯಾವುದನ್ನಾದರೂ ಸ್ವೀಕರಿಸುತ್ತವೆ. --- ## ಮೆಮೊರಿ API ಕೀ / ಸೆಷನ್ಗೆ ಪ್ರತ್ಯೇಕವಾಗಿ ವ್ಯಾಪ್ತಿಗೊಳಿಸಲಾದ ನಿರಂತರ ಸಂಭಾಷಣಾತ್ಮಕ/ವಾಸ್ತವಾಂಶ ಮೆಮೊರಿ ಸಂಗ್ರಹ. | ವಿಧಾನ | ಮಾರ್ಗ | ವಿವರಣೆ | | ------ | -------------------- | ----------------------------------------------------------------------------------------------------------------- | | GET | `/api/memory` | ಮೆಮೊರಿಗಳ ಪಟ್ಟಿ — `?apiKeyId=`, `?type=`, `?sessionId=`, `?q=`, ಜೊತೆಗೆ `offset/limit` ಅಥವಾ `page/limit` ಪುಟವಿಭಜನೆ | | POST | `/api/memory` | ಮೆಮೊರಿ ರಚಿಸಿ — Zod ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾದ ಬಾಡಿ: `{content, key, type?, sessionId?, apiKeyId?, metadata?, expiresAt?}` | | GET | `/api/memory/[id]` | ಒಂದು ಮೆಮೊರಿಯನ್ನು ಹಿಂಪಡೆಯಿರಿ | | DELETE | `/api/memory/[id]` | ಒಂದು ಮೆಮೊರಿಯನ್ನು ಅಳಿಸಿ | | GET | `/api/memory/health` | ಮೆಮೊರಿ ಉಪವ್ಯವಸ್ಥೆಯ ಸ್ಥಿತಿ (DB ಸಂಪರ್ಕ, ಎಂಬೆಡಿಂಗ್ಗಳ ಬ್ಯಾಕೆಂಡ್, ವೆಕ್ಟರ್ ಸೂಚ್ಯಂಕದ ಸ್ಥಿತಿ) | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್/API ಕೀ (`requireManagementAuth`). `type` enum: `FACTUAL`, `EPISODIC`, `SEMANTIC`, `PROCEDURAL` (`src/lib/memory/types.ts` ನಲ್ಲಿರುವ `MemoryType` ನೋಡಿ). --- ## MCP ಸರ್ವರ್ OmniRoute 3 ಸಾರಿಗೆ ವಿಧಾನಗಳು (stdio, SSE, streamable-http) ಮತ್ತು ವ್ಯಾಪ್ತಿ-ನಿರ್ಬಂಧಿತ ಪರಿಕರಗಳೊಂದಿಗೆ ಎಂಬೆಡ್ ಮಾಡಲಾದ Model Context Protocol ಸರ್ವರ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ. ಕೆಳಗಿನ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು ಸ್ಥಿತಿ/ಲೆಕ್ಕಪರಿಶೋಧನಾ ಡೇಟಾವನ್ನು ಓದುತ್ತವೆ ಮತ್ತು HTTP ಸಾರಿಗೆ ವಿಧಾನಗಳಿಗೆ ಪ್ರಾಕ್ಸಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ. | ವಿಧಾನ | ಮಾರ್ಗ | ವಿವರಣೆ | | ------ | ---------------------- | ------------------------------------------------------------------------------------------------ | -------------------- | | GET | `/api/mcp/status` | ಹಾರ್ಟ್ಬೀಟ್, ಸಾರಿಗೆ ವಿಧಾನ, ಆನ್ಲೈನ್ ಸ್ಥಿತಿ, ಕೊನೆಯ ಕರೆ, ಪ್ರಮುಖ ಪರಿಕರಗಳು, 24 ಗಂಟೆಗಳ ಯಶಸ್ಸಿನ ಪ್ರಮಾಣ | | GET | `/api/mcp/tools` | `name`, `description`, `scopes`, `phase`, `auditLevel`, `sourceEndpoints` ಹೊಂದಿರುವ MCP ಪರಿಕರಗಳ ಪಟ್ಟಿ | | GET | `/api/mcp/sse` | SSE ಸಾರಿಗೆ ವಿಧಾನಕ್ಕಾಗಿ SSE ಸ್ಟ್ರೀಮ್ ತೆರೆಯಿರಿ (MCP ನಿಷ್ಕ್ರಿಯವಾಗಿದ್ದರೆ ಅಥವಾ ಸಾರಿಗೆ ವಿಧಾನ ಹೊಂದಿಕೆಯಾಗದಿದ್ದರೆ `503` ಹಿಂತಿರುಗಿಸುತ್ತದೆ) | | POST | `/api/mcp/sse` | SSE ಸಾರಿಗೆ ವಿಧಾನದ ಮೂಲಕ JSON-RPC ಫ್ರೇಮ್ ಕಳುಹಿಸಿ | | GET | `/api/mcp/stream` | Streamable HTTP ಸಾರಿಗೆ ವಿಧಾನದ SSE ಭಾಗವನ್ನು ತೆರೆಯಿರಿ (ಸರ್ವರ್ ಪ್ರಾರಂಭಿಸಿದ ಸಂದೇಶಗಳು) | | POST | `/api/mcp/stream` | Streamable HTTP ಸಾರಿಗೆ ವಿಧಾನದ ಮೂಲಕ JSON-RPC ಫ್ರೇಮ್ ಕಳುಹಿಸಿ | | DELETE | `/api/mcp/stream` | Streamable HTTP ಸೆಷನ್ ಅನ್ನು ಕೊನೆಗೊಳಿಸಿ | | GET | `/api/mcp/audit` | ಲೆಕ್ಕಪರಿಶೋಧನಾ ಲಾಗ್ ಅನ್ನು ಪ್ರಶ್ನಿಸಿ — `?limit=`, `?offset=`, `?tool=`, `?success=true | false`, `?apiKeyId=` | | GET | `/api/mcp/audit/stats` | ಒಟ್ಟಾರೆ ಲೆಕ್ಕಪರಿಶೋಧನಾ ಅಂಕಿಅಂಶಗಳು (ಒಟ್ಟುಗಳು, ಯಶಸ್ಸಿನ ಪ್ರಮಾಣ, ಸರಾಸರಿ ಅವಧಿ, ಪ್ರಮುಖ ಪರಿಕರಗಳು) | **ದೃಢೀಕರಣ:** `sse`/`stream` ಸಾರಿಗೆ ವಿಧಾನಗಳು MCP-ನಿರ್ದಿಷ್ಟ ದೃಢೀಕರಣ ಮೇಲ್ಮೈಯನ್ನು ಅನುಸರಿಸುತ್ತವೆ (`mcp` ವ್ಯಾಪ್ತಿಯೊಂದಿಗೆ Bearer API ಕೀ); `status`/`tools`/`audit*` ಮಾರ್ಗಗಳನ್ನು ಡ್ಯಾಶ್ಬೋರ್ಡ್ನಿಂದ ಓದಬಹುದು (ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಹೋಸ್ಟ್ ತಲುಪುವುದಕ್ಕಿಂತ ಹೆಚ್ಚುವರಿ ದೃಢೀಕರಣದ ಅಗತ್ಯವಿಲ್ಲ). > ಎರಡೂ HTTP ಸಾರಿಗೆ ವಿಧಾನಗಳನ್ನು `settings.mcpEnabled` ಮತ್ತು `settings.mcpTransport` ನಿಯಂತ್ರಿಸುತ್ತವೆ — ಸಾರಿಗೆ ವಿಧಾನ ಹೊಂದಿಕೆಯಾಗದಿದ್ದರೆ `400`, MCP ನಿಷ್ಕ್ರಿಯ ಸ್ಥಿತಿಯಲ್ಲಿದ್ದರೆ `503` ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ. --- ## A2A ಸರ್ವರ್ ಪರಿಶೀಲನೆ/ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಬಳಕೆಗಾಗಿ OmniRoute ಒಂದು A2A (ಏಜೆಂಟ್ನಿಂದ-ಏಜೆಂಟ್ಗೆ) JSON-RPC 2.0 ಎಂಡ್ಪಾಯಿಂಟ್ ಜೊತೆಗೆ REST ರ್ಯಾಪರ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ. ### JSON-RPC ```bash POST /a2a Authorization: Bearer your-api-key # OMNIROUTE_API_KEY ಹೊಂದಿಸದಿದ್ದರೆ ಐಚ್ಛಿಕ Content-Type: application/json { "jsonrpc": "2.0", "id": 1, "method": "message/send", "params": { "skill": "smart-routing", "messages": [{"role": "user", "content": "Route this coding task"}] } } ``` ಬೆಂಬಲಿತ ವಿಧಾನಗಳು (ಎಲ್ಲವೂ `settings.a2aEnabled` ಮೂಲಕ ನಿಯಂತ್ರಿತವಾಗಿವೆ): | ವಿಧಾನ | ವಿವರಣೆ | | ---------------- | --------------------------------------------------------------------------------------- | | `message/send` | ಸಿಂಕ್ರೊನಸ್ ಕೌಶಲ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ; `{task, artifacts, metadata}` ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ | | `message/stream` | ಅದೇ ಕೌಶಲ ಗುಂಪಿನ ಸ್ಟ್ರೀಮಿಂಗ್ SSE ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ | | `tasks/get` | `taskId` ಮೂಲಕ ಕಾರ್ಯವನ್ನು ಪಡೆಯುತ್ತದೆ | | `tasks/cancel` | `taskId` ಮೂಲಕ ಕಾರ್ಯವನ್ನು ರದ್ದುಗೊಳಿಸುತ್ತದೆ | ಅಂತರ್ನಿರ್ಮಿತ ಕೌಶಲಗಳು: `smart-routing`, `quota-management`, `provider-discovery`, `cost-analysis`, `health-report`. ### ಏಜೆಂಟ್ ಕಾರ್ಡ್ ```bash GET /.well-known/agent.json ``` ಸಾರ್ವಜನಿಕ A2A ಏಜೆಂಟ್ ಕಾರ್ಡ್ ಅನ್ನು (ಹೆಸರು, ವಿವರಣೆ, ಸಾಮರ್ಥ್ಯಗಳು, ಕೌಶಲ ಕ್ಯಾಟಲಾಗ್, ದೃಢೀಕರಣ ಯೋಜನೆ) ಹಿಂದಿರುಗಿಸುತ್ತದೆ — ಸಾರ್ವಜನಿಕವಾಗಿ 1h ಅವಧಿಗೆ ಕ್ಯಾಶ್ ಮಾಡಲಾಗುತ್ತದೆ. ದೃಢೀಕರಣದ ಅಗತ್ಯವಿಲ್ಲ. ### REST ಸಹಾಯಕಗಳು | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/a2a/status` | A2A ಸಕ್ರಿಯಗೊಳಿಸಿರುವ ಸ್ಥಿತಿ + ಕಾರ್ಯದ ಅಂಕಿಅಂಶಗಳು + ಕ್ಯಾಶ್ ಮಾಡಲಾದ ಏಜೆಂಟ್ ಕಾರ್ಡ್ ಸಾರಾಂಶ | | GET | `/api/a2a/tasks` | ಕಾರ್ಯಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ — `?state=submitted\|working\|completed\|failed\|cancelled`, `?skill=`, `?limit=` (≤200), `?offset=` | | POST | `/api/a2a/tasks` | (REST ಸಹಾಯಕವಾಗಿ ಅನುಷ್ಠಾನಗೊಳಿಸಿಲ್ಲ — JSON-RPC `message/send` ಮೂಲಕ ರಚಿಸಿ) | | GET | `/api/a2a/tasks/[id]` | ಒಂದು ಕಾರ್ಯವನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ | | POST | `/api/a2a/tasks/[id]/cancel` | ಕಾರ್ಯವನ್ನು ರದ್ದುಗೊಳಿಸುತ್ತದೆ | **ದೃಢೀಕರಣ:** REST ಸಹಾಯಕಗಳು ನಿರ್ವಹಣಾ ದೃಢೀಕರಣವಿಲ್ಲದೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ (ಡ್ಯಾಶ್ಬೋರ್ಡ್ನಿಂದ ಓದಬಹುದು); ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ್ದರೆ JSON-RPC `/a2a` ಮಾರ್ಗವು Bearer `OMNIROUTE_API_KEY` ಅನ್ನು ಬಳಸುತ್ತದೆ. --- ## ಕ್ಲೌಡ್, ಮೌಲ್ಯಮಾಪನಗಳು & ಪರಿಶೀಲನೆ | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ------------------------------- | ------------------------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------- | | POST | `/api/cloud/auth` | Bearer ಕೀಲಿಯನ್ನು ಪರಿಶೀಲಿಸಿ, ಕ್ಲೌಡ್ ಸಿಂಕ್ ಕ್ಲೈಂಟ್ಗಳಿಗಾಗಿ ಮರೆಮಾಚಿದ ಪೂರೈಕೆದಾರ ಸಂಪರ್ಕಗಳು + ಮಾದರಿ ಅಲಿಯಾಸ್ಗಳನ್ನು ಹಿಂತಿರುಗಿಸಿ | | POST | `/api/cloud/credentials/update` | ಕ್ಲೌಡ್ನೊಂದಿಗೆ ಸಿಂಕ್ ಮಾಡಲಾದ ಪೂರೈಕೆದಾರರ ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ರುಜುವಾತುಗಳನ್ನು ನವೀಕರಿಸಿ | | POST | `/api/cloud/model/resolve` | ಸ್ಥಳೀಯ ರೂಟಿಂಗ್ ಕೋಷ್ಟಕವನ್ನು ಬಳಸಿಕೊಂಡು ತಾರ್ಕಿಕ ಮಾದರಿ id ಅನ್ನು ನಿರ್ದಿಷ್ಟ ಪೂರೈಕೆದಾರ/ಮಾದರಿಗೆ ಪರಿಹರಿಸಿ | | GET | `/api/cloud/models/alias` | ಕ್ಲೌಡ್ ಸಿಂಕ್ಗೆ ಪ್ರದರ್ಶಿಸಲಾದ ಮಾದರಿ ಅಲಿಯಾಸ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | GET | `/api/assess` | ಇತ್ತೀಚಿನ ಪರಿಶೀಲನಾ ವರ್ಗೀಕರಣಗಳನ್ನು ಓದಿ (ಪ್ರತಿ ಪೂರೈಕೆದಾರ/ಮಾದರಿಗೆ) | | POST | `/api/assess` | ಪರಿಶೀಲನೆಯನ್ನು ಚಲಾಯಿಸಿ — ಬಾಡಿ: `{scope: {type:"all"} | {type:"provider", providerId} | {type:"model", modelId}, trigger?}` | | GET | `/api/evals` | ಅಂತರ್ನಿರ್ಮಿತ ಮೌಲ್ಯಮಾಪನ ಸೂಟ್ಗಳು + ಇತ್ತೀಚಿನ ರನ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | POST | `/api/evals` | ಮೌಲ್ಯಮಾಪನ ರನ್ ಅನ್ನು ಪ್ರಚೋದಿಸಿ | | POST | `/api/evals/suites` | ಕಸ್ಟಮ್ ಮೌಲ್ಯಮಾಪನ ಸೂಟ್ ಅನ್ನು ರಚಿಸಿ — ಬಾಡಿಯನ್ನು `evalSuiteSaveSchema` ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ | | GET | `/api/evals/suites/[id]` | ಕಸ್ಟಮ್ ಮೌಲ್ಯಮಾಪನ ಸೂಟ್ ಅನ್ನು ಹಿಂಪಡೆಯಿರಿ | **ದೃಢೀಕರಣ:** `/api/cloud/auth` ನೇರವಾಗಿ Bearer ಕೀಲಿಯನ್ನು ಮೌಲ್ಯೀಕರಿಸುತ್ತದೆ ಮತ್ತು `manage` / `admin` ಸ್ಕೋಪ್ ಹೊಂದಿರುವ ಕೀಲಿಗೆ ಮಾತ್ರ ಪ್ರತಿ ಸಂಪರ್ಕದ ಮರೆಮಾಚಿದ ಕೀಲಿ ಹಾಗೂ `projectId` ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ; ಇತರ `/api/cloud/*`, `/api/evals/*`, ಮತ್ತು `/api/assess` ರೂಟ್ಗಳಿಗೆ ನಿರ್ವಹಣಾ ಸೆಷನ್/API ಕೀಲಿ ಅಗತ್ಯವಿದೆ. `/api/assess` POST, ವಿಭೇದಿತ-ಯೂನಿಯನ್ ಸ್ಕೋಪ್ ಸ್ಕೀಮಾದೊಂದಿಗೆ `validateBody` ಅನ್ನು ಬಳಸುತ್ತದೆ. --- ## ACP (Agent Client Protocol) ನಿರ್ವಹಣೆ ಚೈಲ್ಡ್ ಪ್ರೊಸೆಸ್ಗಳಾಗಿ. ಈ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು ACP ಏಜೆಂಟ್ ಪತ್ತೆಹಚ್ಚುವಿಕೆ ಮತ್ತು ಕಸ್ಟಮ್ ಏಜೆಂಟ್ ನೋಂದಣಿಯನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/acp/agents` | ಇನ್ಸ್ಟಾಲೇಶನ್ ಸ್ಥಿತಿ, ಆವೃತ್ತಿ ಮತ್ತು ಬೈನರಿಯೊಂದಿಗೆ ತಿಳಿದಿರುವ ಎಲ್ಲಾ CLI ಏಜೆಂಟ್ಗಳನ್ನು (ಅಂತರ್ನಿರ್ಮಿತ + ಕಸ್ಟಮ್) ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ | | POST | `/api/acp/agents` | ಕಸ್ಟಮ್ ACP ಏಜೆಂಟ್ ಅನ್ನು ನೋಂದಾಯಿಸುತ್ತದೆ ಅಥವಾ ಕ್ಯಾಶ್ ಅನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡುತ್ತದೆ — ಬಾಡಿ: `{id, name, binary, versionCommand, providerAlias, spawnArgs, protocol}` ಅಥವಾ `{action: "refresh"}` | | DELETE | `/api/acp/agents` | ಕಸ್ಟಮ್ ACP ಏಜೆಂಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ — ಕ್ವೆರಿ ಪ್ಯಾರಮ್: `?id=` | **ಪ್ರತಿಕ್ರಿಯೆಯ ಉದಾಹರಣೆ** (`GET /api/acp/agents`): ```json { "agents": [ { "id": "claude", "name": "Claude Code CLI", "binary": "claude", "version": "1.0.45", "installed": true, "protocol": "stdio", "providerAlias": "claude", "isCustom": false }, { "id": "my-custom-cli", "name": "My Custom CLI", "installed": false, "protocol": "stdio", "providerAlias": "my-provider", "isCustom": true } ], "cacheTtlMs": 60000, "cacheAge": 1234 } ``` **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ (ಡ್ಯಾಶ್ಬೋರ್ಡ್ `auth_token` ಕುಕಿ) ಅಥವಾ ನಿರ್ವಹಣಾ ವ್ಯಾಪ್ತಿಯ API ಕೀ ಅಗತ್ಯವಿದೆ. ಸಂಪೂರ್ಣ ವಿವರಗಳಿಗಾಗಿ [ACP ಫ್ರೇಮ್ವರ್ಕ್](../frameworks/ACP.md) ನೋಡಿ. --- ## ಅನಾಲಿಟಿಕ್ಸ್ ಮತ್ತು ವೀಕ್ಷಣೀಯತೆ ರೂಟಿಂಗ್, ಕಂಪ್ರೆಷನ್ ಮತ್ತು ಪ್ರೊವೈಡರ್ ವೈವಿಧ್ಯತೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ರಿಯಲ್-ಟೈಮ್ ಅನಾಲಿಟಿಕ್ಸ್ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು. ಇವು `/dashboard/analytics/*` ಪುಟಗಳಿಗೆ ಶಕ್ತಿ ನೀಡುತ್ತವೆ. ### ಸ್ವಯಂ-ರೂಟಿಂಗ್ ಅನಾಲಿಟಿಕ್ಸ್ | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | ------------------------------------ | ----------------------------------------------------------------------------------------------------- | | GET | `/api/analytics/auto-routing` | ಒಟ್ಟುಗೂಡಿಸಿದ ಸ್ವಯಂ-ರೂಟಿಂಗ್ ಅಂಕಿಅಂಶಗಳು: ಒಟ್ಟು ಕರೆಗಳು, ತಂತ್ರ ವಿತರಣೆ, ಶ್ರೇಣಿ ವಿತರಣೆ, ಪ್ರಮುಖ ಪ್ರೊವೈಡರ್ಗಳು | | GET | `/api/analytics/auto-routing?days=7` | ಸಮಯ-ವಿಂಡೋ ಆಧಾರಿತ ಅಂಕಿಅಂಶಗಳು (ಡೀಫಾಲ್ಟ್ 24h) | **ಪ್ರತಿಕ್ರಿಯೆಯ ಉದಾಹರಣೆ**: ```json { "window": "24h", "totalCalls": 1234, "strategyBreakdown": { "rules": 800, "cost": 200, "latency": 150, "sla-aware": 50, "lkgp": 34 }, "tierBreakdown": { "ultra": 100, "pro": 500, "standard": 400, "free": 234 }, "topProviders": [ { "provider": "openai", "calls": 500, "avgLatencyMs": 850 }, { "provider": "anthropic", "calls": 300, "avgLatencyMs": 1200 } ] } ``` ### ಕಂಪ್ರೆಷನ್ ಅನಾಲಿಟಿಕ್ಸ್ | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | ---------------------------- | --------------------------------------------------------------------------------------- | | GET | `/api/analytics/compression` | ಒಟ್ಟುಗೂಡಿಸಿದ ಕಂಪ್ರೆಷನ್ ಅಂಕಿಅಂಶಗಳು: ಉಳಿಸಿದ ಟೋಕನ್ಗಳು, ಉಳಿತಾಯದ %, ಮೋಡ್ ವಿತರಣೆ, ಎಂಜಿನ್ ಬಳಕೆ | **ಪ್ರತಿಕ್ರಿಯೆಯ ಉದಾಹರಣೆ**: ```json { "window": "24h", "totalOriginalTokens": 5000000, "totalCompressedTokens": 3500000, "totalSavings": 1500000, "savingsPct": 30.0, "modeBreakdown": { "lite": 400, "standard": 600, "aggressive": 100, "ultra": 50, "rtk": 84 }, "engineBreakdown": { "caveman": 800, "rtk": 434 } } ``` ### ಪ್ರೊವೈಡರ್ ವೈವಿಧ್ಯತೆ ಟ್ರ್ಯಾಕಿಂಗ್ | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | -------------------------- | -------------------------------------------------------------------------------------------------------------------- | | GET | `/api/analytics/diversity` | Shannon entropy ಆಧಾರಿತ ವೈವಿಧ್ಯತೆ ಟ್ರ್ಯಾಕಿಂಗ್: ಪ್ರೊವೈಡರ್ ವ್ಯಾಪ್ತಿಯನ್ನು ಅಳೆಯುವ ಮೂಲಕ ಏಕೈಕ ವೈಫಲ್ಯ ಬಿಂದುಗಳನ್ನು ತಡೆಯುತ್ತದೆ | **ಪ್ರತಿಕ್ರಿಯೆಯ ಉದಾಹರಣೆ**: ```json { "window": "24h", "shannonEntropy": 2.45, "maxEntropy": 3.17, "diversityRatio": 0.77, "providerUsage": { "openai": 0.4, "anthropic": 0.25, "google": 0.2, "kiro": 0.15 }, "warnings": ["OpenAI accounts for 40% of traffic — consider diversifying"] } ``` **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಥವಾ ನಿರ್ವಹಣಾ ವ್ಯಾಪ್ತಿಯ API ಕೀ ಅಗತ್ಯವಿದೆ. --- ## ನಿರ್ವಾಹಕ ಕಾರ್ಯಾಚರಣೆಗಳು ಕಾರ್ಯಾಚರಣಾ ನಿರ್ವಹಣೆಗಾಗಿ ನಿರ್ವಾಹಕರಿಗೆ ಮಾತ್ರ ಲಭ್ಯವಿರುವ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | ------------------------ | ------------------------------------------------------------------------------------------------------ | | GET | `/api/admin/concurrency` | ಪ್ರಸ್ತುತ ಸಮಕಾಲೀನತೆ ಮಿತಿಗಳನ್ನು ಓದಿ (ಜಾಗತಿಕ + ಪ್ರತಿ ಪೂರೈಕೆದಾರರಿಗೆ) | | POST | `/api/admin/concurrency` | ಸಮಕಾಲೀನತೆ ಮಿತಿಗಳನ್ನು ನವೀಕರಿಸಿ — ವಿನಂತಿಯ ಭಾಗ: `{global?: number, perProvider?: Record}` | **ದೃಢೀಕರಣ:** ನಿರ್ವಾಹಕ ವ್ಯಾಪ್ತಿಯೊಂದಿಗಿನ ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಗತ್ಯವಿದೆ. --- ## CLI ಪರಿಕರಗಳ ನಿರ್ವಹಣೆ OmniRoute ಜೊತೆಗೆ ಏಕೀಕರಣಗೊಳ್ಳುವ CLI ಪರಿಕರಗಳನ್ನು (antigravity, commandCode, devin-cli, ಇತ್ಯಾದಿ) ನಿರ್ವಹಿಸಿ. ಸಂಪೂರ್ಣ ಪಟ್ಟಿಗಾಗಿ [ಪೂರೈಕೆದಾರರ ಉಲ್ಲೇಖ](./PROVIDER_REFERENCE.md) ನೋಡಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | GET | `/api/cli-tools/all-statuses` | ಎಲ್ಲಾ CLI ಪರಿಕರಗಳ ಸ್ಥಿತಿ (ಸ್ಥಾಪಿಸಲಾಗಿದೆ, ಆವೃತ್ತಿ, ಕೊನೆಯದಾಗಿ ಕಂಡದ್ದು) | | GET | `/api/cli-tools/status` | ಒಂದು CLI ಪರಿಕರದ ಸ್ಥಿತಿಯ ವಿವರ (`?tool=` ಕ್ವೆರಿ) | | POST | `/api/cli-tools/apply` | ಪರಿಕರವು ರಚಿಸಿದ ಸಂರಚನೆಯನ್ನು ಬರೆಯುತ್ತದೆ (`dryRun` ಪೂರ್ವವೀಕ್ಷಣೆಗಳನ್ನು ತೋರಿಸುತ್ತದೆ; ಕಂಟೇನರ್ನಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವಾಗ `422` + `containerEphemeralTarget`; `migration` ಹಳೆಯ Codex YAML ಕುರಿತು ಟಿಪ್ಪಣಿ ನೀಡುತ್ತದೆ) | | GET | `/api/cli-tools/backups` | CLI ಪರಿಕರಗಳ ಸಂರಚನಾ ಬ್ಯಾಕಪ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ | | POST | `/api/cli-tools/backups` | ಎಲ್ಲಾ CLI ಪರಿಕರಗಳ ಸಂರಚನೆಗಳ ಬ್ಯಾಕಪ್ ರಚಿಸುತ್ತದೆ | | POST | `/api/cli-tools/backups` | ಮರುಸ್ಥಾಪನೆ: bodyಯಲ್ಲಿ `{tool, backupId}` ಜೊತೆಗೆ ಇದೇ endpoint ಆ ಬ್ಯಾಕಪ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸುತ್ತದೆ | | GET | `/api/cli-tools/antigravity-mitm` | Antigravity MITM proxy ಸ್ಥಿತಿ ("antigravity-mitm" CLI ಪರಿಕರ) | | POST | `/api/cli-tools/antigravity-mitm/alias` | antigravity-mitm ಅಡ್ಡಹೆಸರುಗಳನ್ನು ಸಂರಚಿಸುತ್ತದೆ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ session ಅಗತ್ಯವಿದೆ. --- ## ಏಜೆಂಟ್ ಕೌಶಲ್ಯಗಳು AI ಏಜೆಂಟ್ ಕೌಶಲ್ಯಗಳನ್ನು (OpenAI ನ ಕಸ್ಟಮ್ GPT ಗಳನ್ನು ಹೋಲುವ, ಆದರೆ ಏಜೆಂಟ್ಗಳಿಗಾಗಿ) ನಿರ್ವಹಿಸಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ---------------------------- | -------------------------------------------------------------------------------------------------- | | GET | `/api/agent-skills` | ಎಲ್ಲಾ ಏಜೆಂಟ್ ಕೌಶಲ್ಯಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (ಅಂತರ್ನಿರ್ಮಿತ + ಕಸ್ಟಮ್) | | GET | `/api/agent-skills/[id]` | ನಿರ್ದಿಷ್ಟ ಏಜೆಂಟ್ ಕೌಶಲ್ಯವನ್ನು ಪಡೆಯಿರಿ | | POST | `/api/agent-skills` | ಕಸ್ಟಮ್ ಏಜೆಂಟ್ ಕೌಶಲ್ಯವನ್ನು ರಚಿಸಿ — ವಿನಂತಿಯ ಭಾಗ: `{name, description, prompt, model?, temperature?}` | | PUT | `/api/agent-skills/[id]` | ಕಸ್ಟಮ್ ಏಜೆಂಟ್ ಕೌಶಲ್ಯವನ್ನು ನವೀಕರಿಸಿ | | DELETE | `/api/agent-skills/[id]` | ಕಸ್ಟಮ್ ಏಜೆಂಟ್ ಕೌಶಲ್ಯವನ್ನು ಅಳಿಸಿ | | GET | `/api/agent-skills/[id]/raw` | ಕಚ್ಚಾ ಪ್ರಾಂಪ್ಟ್ + ಮೆಟಾಡೇಟಾವನ್ನು ಪಡೆಯಿರಿ (ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ ಇಲ್ಲ) | | POST | `/api/agent-skills/generate` | ಸಹಜ ಭಾಷೆಯ ವಿವರಣೆಯಿಂದ AI ಬಳಸಿ ಹೊಸ ಕೌಶಲ್ಯವನ್ನು ರಚಿಸಿ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಥವಾ ನಿರ್ವಹಣಾ ವ್ಯಾಪ್ತಿಯ API ಕೀ ಅಗತ್ಯವಿದೆ. --- ## ಕ್ಯಾಶ್ ನಿರ್ವಹಣೆ ಸೆಮ್ಯಾಂಟಿಕ್ ಕ್ಯಾಶ್ ಮತ್ತು ರೀಸನಿಂಗ್ ಕ್ಯಾಶ್ ಅನ್ನು ನಿರ್ವಹಿಸಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | GET | `/api/cache` | ಕ್ಯಾಶ್ ಅವಲೋಕನ: ಒಟ್ಟು ನಮೂದುಗಳು, ಹಿಟ್ ದರ, ಡಿಸ್ಕ್ನಲ್ಲಿನ ಗಾತ್ರ | | GET | `/api/cache/entries` | ಕ್ಯಾಶ್ ಮಾಡಿದ ನಮೂದುಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (ಪುಟವಿಂಗಡಣೆಯೊಂದಿಗೆ) | | DELETE | `/api/cache/entries` | ಕ್ಯಾಶ್ ನಮೂದುಗಳನ್ನು ಅಳಿಸಿ (ಕ್ವೆರಿ ಪ್ಯಾರಾಮೀಟರ್ಗಳ ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಿ) | | GET | `/api/cache/stats` | ವಿವರವಾದ ಕ್ಯಾಶ್ ಅಂಕಿಅಂಶಗಳು (ಪ್ರತಿ ಪೂರೈಕೆದಾರ, ಪ್ರತಿ ಮಾದರಿ) | | GET | `/api/cache/reasoning` | ರೀಸನಿಂಗ್ ಕ್ಯಾಶ್ ಸ್ಥಿತಿ (ರೀಸನಿಂಗ್ ಮರುಚಾಲನೆಗಾಗಿ) | | DELETE | `/api/cache/reasoning` | ರೀಸನಿಂಗ್ ಕ್ಯಾಶ್ ತೆರವುಗೊಳಿಸಿ — ಕ್ವೆರಿ ಪ್ಯಾರಾಮೀಟರ್ಗಳು: `?toolCallId=` (ಒಂದು) ಅಥವಾ `?provider=

` ಅಥವಾ ಯಾವುದೇ ಪ್ಯಾರಾಮೀಟರ್ಗಳಿಲ್ಲ (ಎಲ್ಲವೂ) | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಗತ್ಯವಿದೆ. --- ## ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ ನಿರಂತರ ಮೆಮೊರಿಯನ್ನು (FTS5 + ವೆಕ್ಟರ್ ಎಂಬೆಡಿಂಗ್ಗಳು) ನಿರ್ವಹಿಸಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ------------------ | ------------------------------------------------------------------------------------ | | GET | `/api/memory` | ಮೆಮೊರಿ ನಮೂದುಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (ವ್ಯಾಪ್ತಿ, ಪ್ರಕಾರ, ಹುಡುಕಾಟದ ಕ್ವೆರಿ ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಿ) | | POST | `/api/memory` | ಹೊಸ ಮೆಮೊರಿ ನಮೂದನ್ನು ರಚಿಸಿ — ಬಾಡಿ: `{scope, type, content, metadata?}` | | GET | `/api/memory/[id]` | ನಿರ್ದಿಷ್ಟ ಮೆಮೊರಿ ನಮೂದನ್ನು ಪಡೆಯಿರಿ | | PUT | `/api/memory/[id]` | ಮೆಮೊರಿ ನಮೂದನ್ನು ನವೀಕರಿಸಿ | | DELETE | `/api/memory/[id]` | ಮೆಮೊರಿ ನಮೂದನ್ನು ಅಳಿಸಿ | | GET | `/api/memory?q=` | ಮೆಮೊರಿಯನ್ನು ಹುಡುಕಿ (FTS5 + ವೆಕ್ಟರ್) — ಅಂಕಿಅಂಶಗಳನ್ನು ಅದೇ ಪ್ರತಿಕ್ರಿಯೆಯಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಥವಾ ನಿರ್ವಹಣಾ-ವ್ಯಾಪ್ತಿಯ API ಕೀ ಅಗತ್ಯವಿದೆ. --- ## ವೆಬ್ಹುಕ್ಗಳು ಈವೆಂಟ್ಗಳಿಗಾಗಿ ವೆಬ್ಹುಕ್ ಚಂದಾದಾರಿಕೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ------------------------------- | -------------------------------------------------------------------------- | | GET | `/api/webhooks` | ಎಲ್ಲಾ ವೆಬ್ಹುಕ್ ಚಂದಾದಾರಿಕೆಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | POST | `/api/webhooks` | ವೆಬ್ಹುಕ್ ಚಂದಾದಾರಿಕೆಯನ್ನು ರಚಿಸಿ — ಬಾಡಿ: `{url, events[], secret?, active?}` | | GET | `/api/webhooks/[id]` | ನಿರ್ದಿಷ್ಟ ವೆಬ್ಹುಕ್ ಚಂದಾದಾರಿಕೆಯನ್ನು ಪಡೆಯಿರಿ | | PUT | `/api/webhooks/[id]` | ವೆಬ್ಹುಕ್ ಚಂದಾದಾರಿಕೆಯನ್ನು ನವೀಕರಿಸಿ | | DELETE | `/api/webhooks/[id]` | ವೆಬ್ಹುಕ್ ಚಂದಾದಾರಿಕೆಯನ್ನು ಅಳಿಸಿ | | GET | `/api/webhooks/[id]/deliveries` | ವೆಬ್ಹುಕ್ನ ವಿತರಣಾ ಇತಿಹಾಸವನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (ಯಶಸ್ಸು/ವೈಫಲ್ಯ ಲಾಗ್) | | POST | `/api/webhooks/[id]/test` | ವೆಬ್ಹುಕ್ಗೆ ಪರೀಕ್ಷಾ ಈವೆಂಟ್ ಕಳುಹಿಸಿ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಗತ್ಯವಿದೆ. ಈವೆಂಟ್ ಪ್ರಕಾರಗಳ ಸಂಪೂರ್ಣ ಪಟ್ಟಿಗಾಗಿ [ವೆಬ್ಹುಕ್ಗಳ ಫ್ರೇಮ್ವರ್ಕ್](../frameworks/WEBHOOKS.md) ನೋಡಿ. --- ## ಸ್ಕಿಲ್ಸ್ ಫ್ರೇಮ್ವರ್ಕ್ ಸ್ಕಿಲ್ಸ್ಗಳನ್ನು (ಏಜೆಂಟಿಕ್ ವಿಸ್ತರಣೆಗಳ ಫ್ರೇಮ್ವರ್ಕ್) ನಿರ್ವಹಿಸಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ------------------------ | ------------------------------------------------------------------------------------------------------ | | GET | `/api/skills` | ಸ್ಥಾಪಿಸಲಾದ ಎಲ್ಲಾ ಸ್ಕಿಲ್ಸ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (ಅಂತರ್ನಿರ್ಮಿತ + ಕಸ್ಟಮ್) | | POST | `/api/skills/install` | ಸ್ಥಳೀಯ ಪಥ ಅಥವಾ URL ನಿಂದ ಸ್ಕಿಲ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ | | DELETE | `/api/skills/[id]` | ಸ್ಕಿಲ್ ಅನ್ನು ಅಸ್ಥಾಪಿಸಿ | | PUT | `/api/skills/[id]` | ಸ್ಕಿಲ್ ಅನ್ನು ಸಕ್ರಿಯ ಅಥವಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ — ಬಾಡಿ: `{enabled?: boolean, mode?: "on" \| "off" \| "auto"}` | | POST | `/api/skills/executions` | ಸ್ಕಿಲ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿ — ಬಾಡಿ: `{skillName, apiKeyId, input?, sessionId?}` | | GET | `/api/skills/executions` | ಎಲ್ಲಾ ಸ್ಕಿಲ್ಸ್ಗಳ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ ಇತಿಹಾಸವನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (`?apiKeyId=` ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಿ) | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಥವಾ ನಿರ್ವಹಣಾ ವ್ಯಾಪ್ತಿಯ API ಕೀ ಅಗತ್ಯವಿದೆ. ಸಂಪೂರ್ಣ ವಿವರಗಳಿಗಾಗಿ [ಸ್ಕಿಲ್ಸ್ ಫ್ರೇಮ್ವರ್ಕ್](../frameworks/SKILLS.md) ನೋಡಿ. --- ## ಪ್ಲಗಿನ್ಗಳು OmniRoute ಪ್ಲಗಿನ್ಗಳನ್ನು (ಮೂರನೇ-ಪಕ್ಷದ ವಿಸ್ತರಣೆಗಳು) ನಿರ್ವಹಿಸಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ---------------------------------- | ----------------------------------------- | | GET | `/api/plugins` | ಸ್ಥಾಪಿಸಲಾದ ಪ್ಲಗಿನ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | POST | `/api/plugins/marketplace/install` | ಮಾರ್ಕೆಟ್ಪ್ಲೇಸ್ನಿಂದ ಪ್ಲಗಿನ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ | | DELETE | `/api/plugins/[name]` | ಪ್ಲಗಿನ್ ಅನ್ನು ಅಸ್ಥಾಪಿಸಿ | | POST | `/api/plugins/[name]/activate` | ಪ್ಲಗಿನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ | | POST | `/api/plugins/[name]/deactivate` | ಪ್ಲಗಿನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ | | GET | `/api/plugins/[name]/config` | ಪ್ಲಗಿನ್ ಕಾನ್ಫಿಗರೇಶನ್ ಪಡೆಯಿರಿ | | PUT | `/api/plugins/[name]/config` | ಪ್ಲಗಿನ್ ಕಾನ್ಫಿಗರೇಶನ್ ನವೀಕರಿಸಿ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಗತ್ಯವಿದೆ. ಸಂಪೂರ್ಣ ವಿವರಗಳಿಗಾಗಿ [ಪ್ಲಗಿನ್ಗಳ ಫ್ರೇಮ್ವರ್ಕ್](../frameworks/PLUGIN_SDK.md) ನೋಡಿ. --- ## ಶ್ಯಾಡೋ ರೂಟಿಂಗ್ ಪೂರೈಕೆದಾರರ ಶ್ಯಾಡೋ / A-B ಹೋಲಿಕೆಯು **ಸ್ವತಂತ್ರ REST ಸರ್ಫೇಸ್ ಅಲ್ಲ** — ಅದನ್ನು ಕಾಂಬೊ ರೂಟಿಂಗ್ ಮೂಲಕ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗುತ್ತದೆ ([ಆಟೊ-ಕಾಂಬೊ](../routing/AUTO-COMBO.md) ನೋಡಿ). ಪ್ರತಿ ಕಾಂಬೊಗೆ ಸಂಬಂಧಿಸಿದ ಹೋಲಿಕೆ ಮೆಟ್ರಿಕ್ಗಳನ್ನು `GET /api/combos/metrics` ಮೂಲಕ ಒದಗಿಸಲಾಗುತ್ತದೆ. --- ## ಗಾರ್ಡ್ರೇಲ್ಗಳು ರನ್ಟೈಮ್ ಗಾರ್ಡ್ರೇಲ್ಗಳನ್ನು (PII ಪತ್ತೆ, ಪ್ರಾಂಪ್ಟ್ ಇಂಜೆಕ್ಷನ್ ಪತ್ತೆ, ವಿಷನ್ ಬ್ರಿಡ್ಜಿಂಗ್) ಪರಿಶೀಲಿಸಿ. ಗಾರ್ಡ್ರೇಲ್ಗಳು ಪ್ರತಿ ವಿನಂತಿಯಲ್ಲೂ ರನ್ ಆಗುತ್ತವೆ; ಪ್ರತಿ ಕರೆಗೆ ಹೊರಗುಳಿಯಲು `x-omniroute-disabled-guardrails` ವಿನಂತಿ ಹೆಡರ್ ಅನ್ನು ಬಳಸಿ — ಶಾಶ್ವತವಾಗಿ ಸಕ್ರಿಯ/ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವ ಸರ್ಫೇಸ್ ಇಲ್ಲ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | ---------------------- | ------------------------------------------------------------------------------------------- | | GET | `/api/guardrails` | ನೋಂದಾಯಿತ ಗಾರ್ಡ್ರೇಲ್ಗಳು ಮತ್ತು ಅವುಗಳ ಸ್ಥಿತಿಯನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (ಹೆಸರು / ಸಕ್ರಿಯತೆ / ಆದ್ಯತೆ) | | POST | `/api/guardrails/test` | ಮಾದರಿ ಇನ್ಪುಟ್ ಮೇಲೆ ಕರೆ-ಪೂರ್ವ ಪೈಪ್ಲೈನ್ನ ಡ್ರೈ-ರನ್ ಮಾಡಿ — ಬಾಡಿ: `{input, disabledGuardrails?}` | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಗತ್ಯವಿದೆ. ಸಂಪೂರ್ಣ ವಿವರಗಳಿಗಾಗಿ [ಭದ್ರತೆ > ಗಾರ್ಡ್ರೇಲ್ಗಳು](../security/GUARDRAILS.md) ನೋಡಿ. --- --- ## ದೃಢೀಕರಣ ನಾಲ್ಕು ರುಜುವಾತು ವರ್ಗಗಳು (ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಸೆಷನ್, ಸ್ಥಳೀಯ CLI ಟೋಕನ್, `oma_live_…` ಪ್ರವೇಶ ಟೋಕನ್, ನಿರ್ವಹಣೆ-ವ್ಯಾಪ್ತಿಯ API ಕೀ) ಮತ್ತು ಅವು ಇನ್ಫರೆನ್ಸ್ ಕೀಗಳಿಂದ ಹೇಗೆ ಭಿನ್ನವಾಗಿವೆ ಎಂಬುದಕ್ಕಾಗಿ [ನಿರ್ವಹಣಾ ದೃಢೀಕರಣ](../guides/MANAGEMENT-AUTH.md) ನೋಡಿ. - ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಮಾರ್ಗಗಳು (`/dashboard/*`) `auth_token` ಕುಕಿಯನ್ನು ಬಳಸುತ್ತವೆ - ಲಾಗಿನ್ ಉಳಿಸಿದ ಪಾಸ್ವರ್ಡ್ ಹ್ಯಾಶ್ ಅನ್ನು ಬಳಸುತ್ತದೆ; ಅದು ಲಭ್ಯವಿಲ್ಲದಿದ್ದರೆ `INITIAL_PASSWORD` ಅನ್ನು ಬಳಸುತ್ತದೆ - `/api/settings/require-login` ಮೂಲಕ `requireLogin` ಅನ್ನು ಟಾಗಲ್ ಮಾಡಬಹುದು - `REQUIRE_API_KEY=true` ಆಗಿರುವಾಗ `/v1/*` ಮಾರ್ಗಗಳಿಗೆ ಐಚ್ಛಿಕವಾಗಿ Bearer API ಕೀ ಅಗತ್ಯವಿರುತ್ತದೆ - ಈ ಉಲ್ಲೇಖದಲ್ಲಿನ "ನಿರ್ವಹಣಾ ಟೋಕನ್" / "ನಿರ್ವಹಣೆ-ವ್ಯಾಪ್ತಿಯ API ಕೀ" ಎಂದರೆ ಆ ಮಾರ್ಗದರ್ಶಿಯಲ್ಲಿರುವ ವರ್ಗಗಳಲ್ಲಿ ಒಂದು — ವ್ಯಾಖ್ಯಾನಿಸದ ಹೆಚ್ಚುವರಿ ರಹಸ್ಯದ ಪ್ರಕಾರವಲ್ಲ > **ಹೊಂದಾಣಿಕೆಯನ್ನು ಮುರಿಯುವ ಬದಲಾವಣೆ (v3.8.0)** — `/api/v1/agents/tasks/*` ಮತ್ತು ಕೂಲ್ಡೌನ್ ನಿರ್ವಹಣಾ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳಿಗೆ ಈಗ **ನಿರ್ವಹಣಾ ದೃಢೀಕರಣ** (ಡ್ಯಾಶ್ಬೋರ್ಡ್ `auth_token` ಕುಕಿ ಅಥವಾ ನಿರ್ವಹಣೆ-ವ್ಯಾಪ್ತಿಯ API ಕೀ) ಅಗತ್ಯವಿದೆ. ಈ ಮಾರ್ಗಗಳನ್ನು ಹಿಂದೆ ದೃಢೀಕರಣವಿಲ್ಲದೆ ಕರೆ ಮಾಡುತ್ತಿದ್ದ ಕ್ಲೈಂಟ್ಗಳು `401 Unauthorized` ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತವೆ. `588a0333` ಕಮಿಟ್ ನೋಡಿ (`fix(auth): ಏಜೆಂಟ್ ಮತ್ತು ಕೂಲ್ಡೌನ್ APIಗಳಿಗೆ ನಿರ್ವಹಣಾ ದೃಢೀಕರಣವನ್ನು ಕಡ್ಡಾಯಗೊಳಿಸಿ`).