# 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) · 🇨🇿 [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) · 🇮🇳 [kn](../../../kn/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) · 🇮🇳 [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) --- 🌐 **மொழிகள்:** 🇺🇸 [English](./API_REFERENCE.md) | 🇪🇹 [አማርኛ](../i18n/am/docs/reference/API_REFERENCE.md) | 🇸🇦 [العربية](../i18n/ar/docs/reference/API_REFERENCE.md) | 🇦🇿 [Azərbaycan dili](../i18n/az/docs/reference/API_REFERENCE.md) | 🇧🇬 [Български](../i18n/bg/docs/reference/API_REFERENCE.md) | 🇧🇩 [বাংলা](../i18n/bn/docs/reference/API_REFERENCE.md) | 🇨🇿 [Čeština](../i18n/cs/docs/reference/API_REFERENCE.md) | 🇩🇰 [Dansk](../i18n/da/docs/reference/API_REFERENCE.md) | 🇩🇪 [Deutsch](../i18n/de/docs/reference/API_REFERENCE.md) | 🇬🇷 [Ελληνικά](../i18n/el/docs/reference/API_REFERENCE.md) | 🇪🇸 [Español](../i18n/es/docs/reference/API_REFERENCE.md) | 🇪🇪 [Eesti](../i18n/et/docs/reference/API_REFERENCE.md) | 🇮🇷 [فارسی](../i18n/fa/docs/reference/API_REFERENCE.md) | 🇫🇮 [Suomi](../i18n/fi/docs/reference/API_REFERENCE.md) | 🇫🇷 [Français](../i18n/fr/docs/reference/API_REFERENCE.md) | 🇮🇪 [Gaeilge](../i18n/ga/docs/reference/API_REFERENCE.md) | 🇮🇳 [ગુજરાતી](../i18n/gu/docs/reference/API_REFERENCE.md) | 🇳🇬 [Hausa](../i18n/ha/docs/reference/API_REFERENCE.md) | 🇮🇱 [עברית](../i18n/he/docs/reference/API_REFERENCE.md) | 🇮🇳 [हिन्दी](../i18n/hi/docs/reference/API_REFERENCE.md) | 🇭🇷 [Hrvatski](../i18n/hr/docs/reference/API_REFERENCE.md) | 🇭🇺 [Magyar](../i18n/hu/docs/reference/API_REFERENCE.md) | 🇦🇲 [Հայերեն](../i18n/hy/docs/reference/API_REFERENCE.md) | 🇮🇩 [Bahasa Indonesia](../i18n/id/docs/reference/API_REFERENCE.md) | 🇳🇬 [Igbo](../i18n/ig/docs/reference/API_REFERENCE.md) | 🇮🇹 [Italiano](../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) | 🇱🇹 [Lietuvių](../i18n/lt/docs/reference/API_REFERENCE.md) | 🇱🇻 [Latviešu](../i18n/lv/docs/reference/API_REFERENCE.md) | 🇮🇳 [മലയാളം](../i18n/ml/docs/reference/API_REFERENCE.md) | 🇮🇳 [मराठी](../i18n/mr/docs/reference/API_REFERENCE.md) | 🇲🇾 [Bahasa Melayu](../i18n/ms/docs/reference/API_REFERENCE.md) | 🇲🇹 [Malti](../i18n/mt/docs/reference/API_REFERENCE.md) | 🇲🇲 [မြန်မာ](../i18n/my/docs/reference/API_REFERENCE.md) | 🇳🇵 [नेपाली](../i18n/ne/docs/reference/API_REFERENCE.md) | 🇳🇱 [Nederlands](../i18n/nl/docs/reference/API_REFERENCE.md) | 🇳🇴 [Norsk](../i18n/no/docs/reference/API_REFERENCE.md) | 🇮🇳 [ଓଡ଼ିଆ](../i18n/or/docs/reference/API_REFERENCE.md) | 🇮🇳 [ਪੰਜਾਬੀ](../i18n/pa/docs/reference/API_REFERENCE.md) | 🇵🇭 [Filipino](../i18n/phi/docs/reference/API_REFERENCE.md) | 🇵🇱 [Polski](../i18n/pl/docs/reference/API_REFERENCE.md) | 🇵🇹 [Português (Portugal)](../i18n/pt/docs/reference/API_REFERENCE.md) | 🇧🇷 [Português (Brasil)](../i18n/pt-BR/docs/reference/API_REFERENCE.md) | 🇷🇴 [Română](../i18n/ro/docs/reference/API_REFERENCE.md) | 🇷🇺 [Русский](../i18n/ru/docs/reference/API_REFERENCE.md) | 🇱🇰 [සිංහල](../i18n/si/docs/reference/API_REFERENCE.md) | 🇸🇰 [Slovenčina](../i18n/sk/docs/reference/API_REFERENCE.md) | 🇸🇮 [Slovenščina](../i18n/sl/docs/reference/API_REFERENCE.md) | 🇷🇸 [Српски](../i18n/sr/docs/reference/API_REFERENCE.md) | 🇸🇪 [Svenska](../i18n/sv/docs/reference/API_REFERENCE.md) | 🇰🇪 [Kiswahili](../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) | 🇹🇷 [Türkçe](../i18n/tr/docs/reference/API_REFERENCE.md) | 🇺🇦 [Українська](../i18n/uk-UA/docs/reference/API_REFERENCE.md) | 🇵🇰 [اردو](../i18n/ur/docs/reference/API_REFERENCE.md) | 🇺🇿 [Oʻzbekcha](../i18n/uz/docs/reference/API_REFERENCE.md) | 🇻🇳 [Tiếng Việt](../i18n/vi/docs/reference/API_REFERENCE.md) | 🇳🇬 [Yorùbá](../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/`-இன் கீழுள்ள வழித்தட மரம் ஆகியவையே முழுமையான ஆதாரங்கள். --- ## உள்ளடக்க அட்டவணை - [அரட்டை நிறைவுகள்](#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](#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": "இதற்கான ஒரு செயல்பாட்டை எழுதவும்..."} ], "stream": true } ``` ### தனிப்பயன் தலைப்புகள் | தலைப்பு | திசை | விளக்கம் | | ------------------------ | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `X-OmniRoute-No-Cache` | கோரிக்கை | தற்காலிகச் சேமிப்பைத் தவிர்க்க `true` என அமைக்கவும் | | `x-omniroute-no-memory` | கோரிக்கை | இந்தக் கோரிக்கைக்கான நினைவகம் + திறன்கள் உட்செலுத்தலைத் தவிர்க்க `true` என அமைக்கவும் (no-cache-ஐப் பிரதிபலிக்கிறது; ஒவ்வொரு அழைப்புக்குமான டோக்கன்/செலவு கூடுதலைத் தவிர்க்கிறது) | | `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` (fail-open). > **கேச்-ஹிட் செலவு சொற்பொருள்:** semantic-cache HIT (`X-OmniRoute-Cache-Hit: true`) நிகழும்போது upstream அழைப்பு எதுவும் செய்யப்படாது; எனவே `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 உடலில் generation-ஐ வழங்குகின்றன: ```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 விசை மற்றும் துல்லியமான செயலில் உள்ள generation ஆகியவற்றால் ஒரே தரவுத்தளப் பரிவர்த்தனையில் கட்டுப்படுத்தப்படுகிறது. `displayName` என்பது இடைவெளிகள் நீக்கப்பட்ட, கட்டமைக்கப்பட்ட இணைப்புப் பெயர் மட்டுமே; பாதுகாப்பான கட்டமைக்கப்பட்ட பெயர் இல்லாதபோது அது `null` ஆகும். OmniRoute ஒருபோதும் அதற்குப் பதிலாக மின்னஞ்சலையோ உருவாக்கப்பட்ட கணக்கு அடையாளத்தையோ பயன்படுத்தாது. வழங்குநர் மதிப்பு என்பது உணர்திறனற்ற காட்சி லேபிள் மட்டுமே; அது ஒருபோதும் உருவாக்கப்பட்ட இணக்கமான-வழங்குநர் அடையாளங்காட்டி அல்ல. நற்சான்றுகள், டோக்கன்கள், குக்கீகள், மூல இணைப்பு அல்லது API விசை id-கள், உரிமையாளர் hash-கள், கட்டுப்பாட்டு ரகசியங்கள் மற்றும் உள் வழிப்படுத்தல் தரவு ஆகியவை விலக்கப்படுகின்றன. தவறான விசை, தவறான உரிமையாளர், காலாவதியான generation, காணாமற்போன, காலாவதியான, விடுவிக்கப்பட்ட மற்றும் செல்லாததாக்கப்பட்ட தேடல்கள் அனைத்தும் இணைப்பு மெட்டாடேட்டா இல்லாமல் அதே `409 LEASE_FENCE_STALE` பிழையைத் திருப்பும். திறனுக்காகக் காத்திருக்கும் பதிலைப் பெற்ற கிளையன்ட்டுக்கு ஆய்வு செய்ய செயலில் உள்ள பிணைப்பு இல்லை. வழிப்படுத்தல் செயலில் உள்ள குத்தகையை மாற்றும்போது, அதே generation செல்லுபடியாக இருக்கும்; மேலும் நிலை, பழைய பிணைப்பை ஒருபோதும் திருப்பாமல், புதிய பிணைப்பை அணுவியல் முறையில் திருப்பும். பெறுதல், புதுப்பித்தல், விடுவித்தல் மற்றும் காத்திருப்புப் பதில்கள் அவற்றின் முந்தைய வடிவங்களைத் தக்கவைத்துக்கொள்வதால், ஏற்கனவே உள்ள கிளையன்ட்கள் மாறாமல் இருக்கும். இந்தச் சேவையக ஒப்பந்தம் நிலையான OpenAI Codex `/status`-ஐ மாற்றாது. நிலையான Codex தற்போது அதன் மாதிரி வழங்குநர் மற்றும் உள்ளமைந்த அங்கீகார/கணக்கு நிலையை அறிக்கையிடுகிறது; ஆனால் தன்னிச்சையான தனிப்பயன் வழங்குநர் கணக்கு மெட்டாடேட்டாவைக் காட்சிப்படுத்துவதில்லை. பிற்கால கிளையன்ட் ஒருங்கிணைப்பு இந்தச் செயலை அழைத்து, `connection.displayName`-ஐ எவ்வாறு காட்சிப்படுத்துவது என்பதைத் தீர்மானிக்க வேண்டும். பின்னர், நிர்வகிக்கப்படும் ஒவ்வொரு inference கோரிக்கையும் இரண்டு கட்டுப்பாட்டுத் தலைப்புகளையும் வழங்கும்: ```http X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters> X-OmniRoute-Lease-Generation: 1 ``` ஒவ்வொரு ஆதரிக்கப்படும் upstream முயற்சிக்கும் உடனடியாக முன்பு, துல்லியமான உரிமையாளர், generation, செயலில் உள்ள இணைப்பு மற்றும் அங்கீகரிக்கப்பட்ட API விசை ஆகியவை கட்டுப்படுத்தப்படுகின்றன. அதே இணைப்பை அந்த விசை அனுமதித்தாலும், மற்றொரு விசையுடன் உரிமையாளர் மற்றும் generation-ஐ மீண்டும் பயன்படுத்துவது தோல்வியடையும். மூல உரிமையாளர்கள் நிலையாகச் சேமிக்கப்படுவதில்லை, பதிவுசெய்யப்படுவதில்லை, கோரிக்கை snapshot-இல் தக்கவைக்கப்படுவதில்லை அல்லது upstream-க்கு அனுப்பப்படுவதில்லை. தற்காலிக வளப் போட்டி, `Retry-After` உடன் HTTP `429` மற்றும் பின்வருவதைத் திருப்பும்: ```json { "state": "WAITING_FOR_CAPACITY", "error": { "type": "lease_error", "code": "LEASE_CAPACITY_UNAVAILABLE" }, "reason": "NO_FREE_ELIGIBLE_CONNECTION", "retryAfter": 30 } ``` இந்தப் பதில், வழக்கமான தகுதியுள்ள தொகுப்பு காலியாக இல்லை என்பதையும், இலவசமாக இருந்திருக்கக்கூடிய ஒவ்வொரு இணைப்பும் வேறொரு செயலில் உள்ள குத்தகையால் பிடிக்கப்பட்டிருந்தது என்பதையும் மட்டுமே குறிக்கிறது. ஆதரிக்கப்படாத மாதிரிகள்/வழங்குநர்கள், கொள்கைப் பொருத்தமின்மை, cooldown, quota, health மற்றும் பிற வழக்கமான தகுதித் தோல்விகள் அவற்றின் தற்போதைய OmniRoute பதில்களைத் தக்கவைத்துக்கொள்ளும். ### `x-omniroute-compression` ஒவ்வொரு கோரிக்கைக்குமான compression திட்ட override. இதுவே மிக உயர்ந்த முன்னுரிமை கொண்டது — routing-combo override, செயலில் உள்ள profile, auto-trigger மற்றும் panel Default ஆகிய அனைத்தையும் மீறும். மதிப்புகள்: | மதிப்பு | விளைவு | | ------------- | ------------------------------------------------------------------------------------------------ | | `off` | இந்தக் கோரிக்கைக்கு compression இல்லை. | | `default` | panel-இலிருந்து பெறப்பட்ட Default profile (செயலில் உள்ள profile-ஐப் புறக்கணிக்கும்). | | `engine:` | இயக்கப்பட்டிருக்கும்போது ஒற்றை engine, எ.கா. `engine:rtk`. | | `` | பெயரிடப்பட்ட combo; முதலில் பெயரால் (எழுத்தின்大小 வேறுபாடின்றி), பின்னர் id-ஆல் பொருத்தப்படும். | குறிப்புகள்: - அறியப்படாத மதிப்புகள் புறக்கணிக்கப்படும் (கோரிக்கை ஒருபோதும் நிராகரிக்கப்படாது); தீர்மானம் வழக்கமான இயக்குநர் முன்னுரிமை வரிசைக்குச் செல்லும். - பல combo-கள் ஒரே பெயரைப் பகிர்ந்தால், உறுதியான பொருத்தத்திற்கு combo **id**-ஐ வழங்கவும். - `off` அல்லது `default` என்ற பெயரைக் கொண்ட combo-வைப் பெயரால் தேர்ந்தெடுக்க முடியாது (அந்த keyword-கள் முதலில் பொருள்கொள்ளப்படும்); அத்தகைய combo-வை அதன் id மூலம் குறிப்பிடவும். - முதன்மை compression switch ஒரு கடுமையான gate ஆகும்: compression உலகளவில் முடக்கப்பட்டிருக்கும்போது, இந்தத் தலைப்பு அதை இயக்க முடியாது. பயன்படுத்தப்பட்ட திட்டம் பதிலின் தலைப்பில் மீண்டும் வழங்கப்படும்: ``` 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`); அது உட்பொதிவுகளையோ மறுதரவரிசைப்படுத்தலையோ ஒருபோதும் வழங்காது. பல்முறைமை ஆதரவை அறிவிக்கும் பதிவக மாதிரிகள், அதிகபட்சம் 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` கோரிக்கையாக மாறும். - வெளிப்படையான முறைமை மெட்டாடேட்டா இல்லாத அறியப்படாத/இயக்கநிலை மாதிரிகள், கட்டமைக்கப்பட்ட உள்ளீட்டை 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**, SD WebUI (உள்ளமை), ComfyUI (உள்ளமை). ```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 வழங்குநரைத் தேர்ந்தெடுக்கிறது; வழங்குநர் இல்லாத மாதிரி id (எ.கா. `mistral-ocr-latest`) அதன் பதிவுசெய்யப்பட்ட வழங்குநருக்குத் தீர்மானிக்கப்படுகிறது, மேலும் `model` விடுபட்டால் இயல்புநிலையாக Mistral (`mistral-ocr-latest`) பயன்படுத்தப்படும். பதிவுசெய்யப்பட்ட வழங்குநர்கள் (`open-sse/config/ocrRegistry.ts`): | வழங்குநர் id | மாதிரி id | `model` மதிப்பு | குறிப்புகள் | | ----------------------------- | -------------------- | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | `mistral` | `mistral-ocr-latest` | `mistral/mistral-ocr-latest` (அல்லது வழங்குநர் இல்லாத `mistral-ocr-latest`) | ஒத்திசைவானது — ஒற்றை மேல்நிலை அழைப்பிலிருந்து பதில் நேரடியாகத் திருப்பி அனுப்பப்படும். | | `azure-document-intelligence` | `prebuilt-read` | `azure-document-intelligence/prebuilt-read` | ஒத்திசைவற்ற மேல்நிலை (`analyze` + வாக்கெடுப்பு) — கீழே காண்க. | | `vertex-deepseek-ocr` | `deepseek-ocr-maas` | `vertex-deepseek-ocr/deepseek-ocr-maas` | ஒத்திசைவானது, Vertex AI-இன் `openapi/chat/completions` கூட்டாளர் முனைப்புள்ளி வழியாக — அங்கீகாரம்/URL குறித்து கீழே காண்க. | மூன்று வழங்குநர்களும் ஒரே Mistral வடிவமைப்பிலான உட்பகுதியில் பதிலளிக்கின்றன: ```json { "pages": [{ "index": 0, "markdown": "# பிரித்தெடுக்கப்பட்ட உரை..." }], "model": "mistral-ocr-latest", "usage_info": { "pages_processed": 1 } } ``` ### Azure Document Intelligence வாக்கெடுப்பு ஓட்டம் Azure Document Intelligence-இன் `analyze` API ஒத்திசைவற்றது: தொடக்கக் கோரிக்கை உட்பகுதிக்குப் பதிலாக `Operation-Location` தலைப்பைத் திருப்பி அனுப்புகிறது, மேலும் முடிவுக்காக வாக்கெடுப்பு நடத்தப்பட வேண்டும். கையாளுநர் (`open-sse/handlers/ocr.ts`) அந்த URL-ஐ ஒவ்வொரு வினாடியும் அதிகபட்சம் 30 முயற்சிகள் வரை வாக்கெடுக்கும்; `ok` அல்லாத வாக்கெடுப்புப் பதில் அல்லது `"failed"` நிலை ஏற்பட்டால் உடனடியாகத் தோல்வியடையும் (தொடர்ந்து வாக்கெடுப்பதில்லை), மேலும் முயற்சி வரம்பு தீர்ந்த பின்னரும் செயல்பாடு இயங்கிக்கொண்டிருந்தால் `504`-ஐத் திருப்பி அனுப்பும். இறுதி Azure பதில், அழைப்பாளருக்குத் திருப்பி அனுப்பப்படுவதற்கு முன், Mistral பயன்படுத்தும் அதே `pages`/`markdown` வடிவத்திற்கு இயல்பாக்கப்படுகிறது; எனவே கிளையண்ட் குறியீடு வழங்குநருக்கெனத் தனிப்பட்ட கையாளுதலைச் செய்ய வேண்டியதில்லை. ### Vertex AI DeepSeek OCR அங்கீகாரம் மற்றும் முனைப்புள்ளித் தீர்மானம் `vertex-deepseek-ocr`, அரட்டை/படப் போக்குவரத்திற்காக OmniRoute ஏற்கனவே ஆதரிக்கும் அதே Vertex AI அங்கீகாரத்தை மீண்டும் பயன்படுத்துகிறது (`open-sse/executors/vertex.ts`): இணைப்பின் API விசை, Service Account JSON நற்சான்றாகவோ (JWT-bearer ஓட்டத்தின் மூலம் குறுகிய ஆயுளுடைய OAuth அணுகல் டோக்கனாக மாற்றப்படும்) அல்லது ஏற்கனவே உருவாக்கப்பட்டு அப்படியே பயன்படுத்தப்படும் OAuth அணுகல் டோக்கனாகவோ இருக்கும். மேல்நிலை முனைப்புள்ளி URL என்பது Vertex-இன் பொதுவான `openapi/chat/completions` கூட்டாளர் முனைப்புள்ளியாகும்; இது இணைப்பின் திட்டம் மற்றும் பிராந்தியத்திலிருந்து உருவாக்கப்படுகிறது — வெளிப்படையான `providerSpecificData.project`/`providerSpecificData.region` எப்போதும் முன்னுரிமை பெறும்; இல்லையெனில், திட்டம் Service Account JSON-இன் `project_id`-இலிருந்து பெறப்படும், மேலும் பிராந்தியம் இயல்புநிலையாக `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 வடிவத்தில் அனைத்து அரட்டை, உட்பொதித்தல் மற்றும் பட மாதிரிகள் + சேர்க்கைகளை வழங்குகிறது ``` ### மாதிரி id முன்னொட்டுகள் (`?prefix=`) பெரும்பாலான மாதிரிகள் ஒரு **வழங்குநர் முன்னொட்டின்** கீழ் விளம்பரப்படுத்தப்படுகின்றன. உங்களுக்கு எந்த முன்னொட்டு கிடைக்கும் என்பது `MODELS_CATALOG_PREFIX_MODE` அம்சக் கொடியால் கட்டுப்படுத்தப்படுகிறது; மேலும், மற்ற அனைவருக்குமான சேவையக அளவிலான அமைப்பை மாற்றாமல் தெளிவான பட்டியலை விரும்பும் கிளையன்டுக்கு பயனுள்ளதாக, வினவல் அளவுருவைக் கொண்டு **ஒவ்வொரு கோரிக்கைக்கும்** இதை மேலெழுதலாம்: ```bash GET /v1/models?prefix=alias # ஒவ்வொரு மாதிரிக்கும் ஒரு id — குறுகிய மாற்றுப்பெயர் முன்னொட்டு GET /v1/models?prefix=dual # இரண்டு வடிவங்களும் (சேவையக இயல்புநிலை) GET /v1/models?prefix=canonical # முழுமையான வழங்குநர்-id முன்னொட்டு மட்டும் ``` | பயன்முறை | வெளியிடுவது | குறிப்புகள் | | ----------- | ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dual` | `cc/claude-sonnet-4-6` **மற்றும்** `claude/claude-sonnet-4-6` | **இயல்புநிலை.** இரண்டு id-களும் ஒரே மாதிரிக்கு வழிச்செலுத்துகின்றன; எந்த வடிவத்தையாவது நேரடியாகக் குறியிட்ட கிளையன்ட் உள்ளமைவுகள் தொடர்ந்து செயல்படுவதற்காக இது தக்கவைக்கப்பட்டுள்ளது. பட்டியலின் அளவை ஏறக்குறைய இரட்டிப்பாக்குகிறது. | | `alias` | `cc/claude-sonnet-4-6` | ஒவ்வொரு மாதிரிக்கும் ஒரு பதிவு. தனித்துவமான மாற்றுப்பெயர் இல்லாத வழங்குநர்களும் தங்கள் பதிவை வெளியிடுவதால், எதுவும் இழக்கப்படாது. | | `canonical` | `claude/claude-sonnet-4-6` | முழுமையான வழங்குநர்-id முன்னொட்டின் கீழ் ஒவ்வொரு மாதிரிக்கும் ஒரு பதிவு. தனித்துவமான மாற்றுப்பெயர் இல்லாத வழங்குநர்களும் (எ.கா. `antigravity/…`, `agy/…`) தங்கள் ஒற்றை id-ஐ இங்கும் வெளியிடுவதால், எதுவும் இழக்கப்படாது. | `dual`-பயன்முறை பிரதியை வினவல் அளவுரு இல்லாமலும் அடையாளம் காணலாம்: அதில் முதன்மை id-ஐச் சுட்டிக்காட்டும் `parent` புலம் இருக்கும். மாதிரித் தேர்வியை வழங்கும் கிளையன்டுகள் `?prefix=alias`-ஐக் கோர வேண்டும் — இதைத்தான் [OmniCopilot VS Code நீட்டிப்பு](../guides/VSCODE-COPILOT.md) செய்கிறது. ### சிந்தனை-இல்லாத மாதிரி மாறுபாடுகள் சிந்திக்கும் திறனுள்ள Claude மாதிரிகளுக்கு, `/v1/models` ஆனது `claude-3-omniroute-no-thinking/` என்ற முன்னொட்டைக் கொண்ட id உடைய **சிந்தனை-இல்லாத** மாறுபாட்டையும் விளம்பரப்படுத்துகிறது: ``` claude-3-omniroute-no-thinking// ``` இந்த id-ஐத் தேர்ந்தெடுப்பது (எ.கா. எப்போதும் `thinking` தொகுதியை இணைக்கும் Claude Code உள்ளமைவில்), காரணமறிதல் ஒடுக்கப்பட்ட நிலையில் உண்மையான `/`-க்கு மீண்டும் தீர்மானிக்கப்படுகிறது — `/v1/messages` பாதையில் `thinking:{type:"disabled"}`, அல்லது `/v1/chat/completions` பாதையில் `reasoning`/`reasoning_effort` புலங்கள் நீக்கப்படும். சிந்தனையை ஆதரிக்கும் **மற்றும்** `disabled`-ஐ ஏற்கும் Claude-குடும்ப மாதிரிகளுக்கு மட்டுமே இந்த மாறுபாடு பட்டியலிடப்படும் (எனவே, எ.கா. `disabled`-ஐ நிராகரிக்கும் தகவமைப்பு-மட்டும் மாதிரிகள் விலக்கப்படும்). இயக்குநர்கள் `ModelSpec.noThinkingAlias` மூலம் ஒவ்வொரு மாதிரிக்கும் இந்த மாறுபாட்டைக் கட்டாயமாக இயக்கவோ முடக்கவோ முடியும். --- ## வழங்குநர் செருகுநிரல் அறிக்கை ```bash GET /api/v1/provider-plugin-manifest ``` Bifrost, CLIProxyAPI மற்றும் எதிர்கால sidecar router-கள் பயன்படுத்தும் JSON-பாதுகாப்பான வழங்குநர் செருகுநிரல் அறிக்கையை வழங்குகிறது. இந்தப் பதில் TypeScript வழங்குநர் பதிவகத்திலிருந்து உருவாக்கப்படுகிறது; மேலும் OAuth client secret-கள், இயக்கநேரச் சூழல் மதிப்புத் தீர்மானம், executor function-கள், கோரிக்கை header-கள் மற்றும் கணக்குத் தரவு ஆகியவற்றை வேண்டுமென்றே விலக்குகிறது. ஒரு sidecar தனிச் செயல்முறையாக இயங்கி, `open-sse/config/providerPluginManifestRegistry.ts`-ஐ நேரடியாக import செய்ய முடியாதபோது இந்த endpoint-ஐப் பயன்படுத்தவும். --- ## இணக்கத்தன்மை Endpoint-கள் | முறை | பாதை | வடிவம் | | ---- | ----------------------------------------- | ----------------------------------------- | | 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 (திருத்தம்/inpaint) | | POST | `/v1/videos/generations` | OpenAI-பாணி காணொளி உருவாக்கம் | | POST | `/v1/music/generations` | OpenAI-பாணி இசை உருவாக்கம் | | POST | `/v1/audio/transcriptions` | OpenAI Audio (STT) | | POST | `/v1/audio/speech` | OpenAI TTS (ஒலி body-ஐ வழங்கும்) | | POST | `/v1/rerank` | Cohere/Voyage-பாணி மறுதரவரிசை | | POST | `/v1/classify` | Jina வகைப்படுத்தல் (`api.jina.ai`) | | POST | `/v1/segment` | Jina segmenter (`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 model-கள் மாற்றுப்பெயர் | | POST | `/api/v1/vscode/{token}/chat/completions` | OpenAI token உடைய மாற்றுப்பெயர் | | POST | `/api/v1/vscode/{token}/responses` | OpenAI Responses token உடைய மாற்றுப்பெயர் | | POST | `/api/v1/vscode/{token}/api/chat` | Ollama token உடைய மாற்றுப்பெயர் | | GET | `/api/v1/vscode/{token}/api/tags` | Ollama tag-கள் token உடைய மாற்றுப்பெயர் | அனைத்து POST route-களும் ஒரே கட்டமைப்பைப் பின்பற்றுகின்றன: `Bearer your-api-key` + Zod மூலம் சரிபார்க்கப்பட்ட JSON body (`v1RerankSchema`, `v1ModerationSchema`, `v1AudioSpeechSchema` போன்றவை; `src/shared/validation/schemas.ts`-ஐப் பார்க்கவும்). Schema சரிபார்ப்பு தோல்வியடைந்தால் 4xx வழங்கப்படும். `Authorization: Bearer ...`-ஐ இணைக்க முடியாத client-களுக்காக, query-string இணக்கத்தன்மை (`?token=...`, `?apiKey=...`, `?api_key=...`, `?key=...`) அல்லது கீழே ஆவணப்படுத்தப்பட்டுள்ள பிரத்யேக `/api/v1/vscode/{token}/...` endpoint-கள் வழியாக URL-இல் API key-களையும் OmniRoute ஏற்கிறது. ```bash # மறுதரவரிசை 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 segmenter 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 (அல்லது கோரப்பட்ட வடிவம்) body-ஐ வழங்கும் POST /v1/audio/speech { "model": "openai/tts-1", "input": "Hello", "voice": "alloy" } # படத் திருத்தம் (multipart) POST /v1/images/edits -F image=@input.png -F prompt="..." -F mask=@mask.png # காணொளி / இசை உருவாக்கம் (வழங்குநர் முன்னொட்டுள்ள model id) POST /v1/videos/generations { "model": "runway/gen-3", "prompt": "..." } POST /v1/music/generations { "model": "suno/v3.5", "prompt": "..." } ``` ### பிரத்யேக வழங்குநர் Route-கள் ```bash POST /v1/providers/{provider}/chat/completions POST /v1/providers/{provider}/embeddings POST /v1/providers/{provider}/images/generations ``` வழங்குநர் முன்னொட்டு இல்லாவிட்டால் அது தானாகச் சேர்க்கப்படும். பொருந்தாத model-கள் `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` | மூலக் கோப்பு உள்ளடக்கத்தை ஸ்ட்ரீமாகத் திருப்பி அனுப்பும் | **அங்கீகாரம்:** Bearer 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 விசைக்கும் தனித்த வரம்பில் இருக்கும்: சொந்த விசைக்கு மட்டும் அணுகல், டாஷ்போர்டு அமர்வுக்கு நிகழ்வு முழுவதுமான அணுகல், உரிமையாளர் இல்லாத பதிவுகள் ஒவ்வொரு அமர்வற்ற அழைப்பாளருக்கும் மறுக்கப்படும் (பெறுதல், நீக்குதல், ரத்துசெய்தல் மற்றும் உருவாக்கும்போதான `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` | ஒவ்வொரு வழங்குநருக்குமான வெற்றி/தாமதம்/தற்காலிகச் சேமிப்புப் புள்ளிவிவரங்கள் | **அங்கீகாரம்:** Bearer API விசை (`extractApiKey` + `isValidApiKey`). தேடல் கொள்கை `enforceApiKeyPolicy` மூலம் அமல்படுத்தப்படுகிறது. --- ## இணையப் பெறுதல் API கட்டமைக்கப்பட்ட இணையப் பெறுதல் வழங்குநர் (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract) வழியாக URL ஒன்றிலிருந்து உள்ளடக்கத்தைப் பிரித்தெடுக்கிறது. | முறை | பாதை | விளக்கம் | | ---- | --------------- | ------------------------------------------------------------------------------------------------ | | POST | `/v1/web/fetch` | URL ஒன்றைப் பெறுகிறது/சுரண்டுகிறது — கோரிக்கை உடல் `v1WebFetchSchema` மூலம் சரிபார்க்கப்படுகிறது | **அங்கீகாரம்:** Bearer API விசை (`extractApiKey` + `isValidApiKey`). கொள்கை `enforceApiKeyPolicy` மூலம் அமல்படுத்தப்படுகிறது. **ஒதுக்கீட்டை அறிந்த fallback (#8297):** வெளிப்படையான `provider` எதுவும் வழங்கப்படாதபோது, தொகுப்பு (`firecrawl` → `jina-reader` → `tavily-search` → `tinyfish` → `nimble-search`) நிலையான முன்னுரிமை வரிசையில் (முதலில் நிரப்புதல்) கடக்கப்படுகிறது — விகித வரம்பை அடைந்திருந்தாலும் கட்டமைக்கப்பட்டுள்ள வழங்குநர், கோரிக்கையை உடனடியாக நிறுத்துவதற்குப் பதிலாகத் தவிர்க்கப்படுகிறது; மேலும் மீண்டும் முயற்சிக்கக்கூடிய/ஒதுக்கீடு தொடர்பான மேல்நிலைத் தோல்வி (HTTP 429 எப்போதும்; Firecrawl/Tavily/TinyFish ஒதுக்கீடு பாணியிலான இலவச அடுக்குகளுக்கு 402/403 — Jina Reader-க்கு அல்ல, மேலும் சாதாரண 400 தவறான கோரிக்கைக்கு ஒருபோதும் அல்ல) கோரிக்கை நேரத்தில், இதுவரை முயற்சிக்கப்படாத அடுத்த நற்சான்றுகளைக் கொண்ட வழங்குநருக்குத் தொடர்கிறது. தொகுப்பிலுள்ள ஒவ்வொரு வழங்குநரும் தீர்ந்துவிட்டால், முந்தைய பொதுவான `400`-க்கு பதிலாக endpoint ஒற்றை `429`-ஐ (`Retry-After` தலைப்புடன்) திருப்பி அனுப்புகிறது. வெளிப்படையான `provider` கோரப்பட்டால், அமைதியான fallback **இல்லை** — விகித வரம்பை அடைந்த அல்லது தோல்வியடைந்த வெளிப்படையான வழங்குநர் தனது சொந்தப் பிழையையே வெளிப்படுத்துகிறது (விகித வரம்பை அடைந்திருந்தால் `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 proxy **`codex` உடன் மட்டுமே பிரத்தியேகமாக இணைக்கப்பட்டுள்ளது** (ChatGPT பின்புலம்). இது API/dashboard பயன்படுத்தும் அதே port-இல் `/v1/responses`, `/responses`, மற்றும் `/api/v1/responses` பாதைகளில் கவனித்துக் கொண்டிருக்கும். முதல் `response.create` சட்டகத்தில் இது உள் `codex-responses-ws` bridge வழியாக அங்கீகரித்து + தயார்படுத்தி, ஒரு codex OAuth இணைப்பைத் தேர்ந்தெடுத்து, `wreq-js` போக்குவரத்து வழியாக `wss://chatgpt.com/backend-api/codex/responses` க்கு tunnel செய்கிறது. **codex அல்லாத models நிராகரிக்கப்படுகின்றன** (`codex_ws_provider_required`). ஒதுக்கீட்டுப் பகிர்வு routing-க்கு `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`) செயலில் உள்ள entrypoint ஆக இருக்க வேண்டும் (`app/server-ws.mjs` இருந்தால், இயல்புநிலையாக அதுவே இருக்கும்). #### Model id: எளிய ChatGPT id-ஐப் பயன்படுத்தவும் (`codex/` முன்னொட்டு வேண்டாம்) `supports_websockets = true` ஆக இருக்கும்போது OpenAI **Codex CLI** model பெயரை client பக்கத்தில் சரிபார்த்து, `codex/gpt-5.5` போன்ற **வழங்குநர் முன்னொட்டுள்ள ids-ஐ நிராகரிக்கிறது** (`The 'codex/gpt-5.5' model is not supported when using Codex with a ChatGPT account`). **எளிய** id-ஐ அனுப்பவும் (எ.கா. `gpt-5.5`). OmniRoute-இன் bridge codex-க்கு மட்டுமே உரியது; எனவே மேல்நிலைக்கு tunnel செய்வதற்கு முன், எளிய `gpt-5.5` HTTP வழியாக வேறொரு வழங்குநருக்கு route ஆகக்கூடும் என்றாலும், அது எளிய id-ஐ codex model ஆக மீண்டும் தீர்மானிக்கிறது (`resolveCodexWsModelInfo`). #### OpenAI Codex CLI-ஐக் கட்டமைத்தல் WebSocket ஆதரவுள்ள தனிப்பயன் வழங்குநரை `~/.codex/config.toml` இல் சேர்த்து 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" # இறுதியில் slash வேண்டாம்; WS URL இதிலிருந்து பெறப்படுகிறது (production-இல் 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 இணைப்புக்குத் tunnel செய்கிறது. உள்ளூர் சேவையகத்தில் தொடக்கம் முதல் முடிவு வரை சரிபார்க்கப்பட்டது: ChatGPT `codex.rate_limits` + `response.created` ஐத் திருப்பி அனுப்பி, நிறைவை stream செய்கிறது. --- ## ஒதுக்கீடுகள் & சிக்கல்கள் அறிக்கையிடல் | முறை | பாதை | விளக்கம் | | ---- | ------------------- | ---------------------------------------------------------------------------------------------------------------- | | GET | `/v1/quotas/check` | பதிவுசெய்யப்பட்ட விசையை வழங்குவதற்கு முன் `provider` + `accountId`-க்கான ஒதுக்கீட்டை முன்கூட்டியே சரிபார்க்கிறது | | POST | `/v1/issues/report` | ஒதுக்கீடு/விசை வழங்கல் தோல்வியை GitHub-இல் அறிக்கையிடுகிறது (`GITHUB_ISSUES_REPO` + token தேவை) | **அங்கீகாரம்:** Bearer API விசை (`isAuthenticated`). --- ## சுய-சேவைப் பயன்பாடு (`/api/usage/om-usage`) எந்த API விசையும் **தனது சொந்தப்** பயன்பாட்டையும் ஒதுக்கீடுகளையும் படிக்க முடியும் — நிர்வாக அங்கீகாரம் தேவையில்லை. ஒரு விசை வைத்திருப்பவரின் செலவைக் காட்டுவதற்கு client (CLI, OmniCopilot panel) பயன்படுத்தும் endpoint இதுவாகும். ```bash # உரை வடிவம் (வரலாற்று ஒப்பந்தம் — terminal-க்கான எளிய உரை) 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`** இயக்கப்பட்டிருக்க வேண்டும் (இயல்பாக முடக்கப்பட்டிருக்கும் — dashboard-இன் API-key manager ஒவ்வொரு விசைக்கும் இதை மாற்றுகிறது). இது இல்லாமல் endpoint `403` எனப் பதிலளிக்கும். `?format=json`, அழைப்பவர் மறுப்புப் பதிலிலிருந்து ஒரு தரவுப் புலத்தை ஒருபோதும் படிக்காதவாறு வேறுபடுத்தப்பட்ட வடிவமைப்பை வழங்குகிறது. வெற்றியின்போது: ```jsonc { "allowed": true, // ஒவ்வொரு விசைக்கும் தனிப்பட்ட பயன்பாட்டு வரம்புகளை (தினசரி/வாராந்திர USD) விசை தேர்வுசெய்திருந்தால் மட்டுமே இருக்கும்: "personal": { "dailySpentUsd": 1.25, "dailyLimitUsd": 5, "dailyResetAtIso": "…", "weeklySpentUsd": 8, "weeklyLimitUsd": 20, "weeklyResetAtIso": "…" /* … */, }, // தேர்ந்தெடுக்கப்பட்ட provider ஒதுக்கீட்டின் snapshot, அல்லது இதுவரை எதுவும் cache செய்யப்படவில்லை எனில் null: "provider": { "connectionId": "…", "provider": "claude", "plan": "…", "quotas": {/* … */}, }, // ஒவ்வொரு connection-இன் snapshot, இதனால் UI பல provider-களை அருகருகே காண்பிக்க முடியும்: "providers": [ { "connectionId": "…", "provider": "claude" /* … */ }, { "provider": "codex" /* … */ }, ], } ``` மறுக்கப்படும்போது (`401` தவறான விசை / `403` அனுமதிக்கப்படவில்லை), அதே route `{ "allowed": false, "error": { "message": "…" } }` என்பதைத் திருப்பித் தருகிறது — உள்ளிருந்தும் காலியாக இருக்கும் `personal`/`provider` (விசை அனுமதிக்கப்பட்டுள்ளது, இன்னும் எதுவும் அறியப்படவில்லை) என்பது மறுப்பிலிருந்து வேறுபட்ட நிலையாகும்; JSON வடிவம் மட்டுமே அவற்றை வேறுபடுத்துகிறது. **அங்கீகாரம்:** அழைப்பவரின் சொந்த Bearer API விசை, `isValidApiKey` மூலம் சரிபார்க்கப்படுகிறது — இது `requireManagementAuth`-க்குப் பின்னால் இருக்கும் நிர்வாகப் பகுதி (`/api/keys/…`) _அல்ல_. --- ## பொருள்சார் Cache ```bash # Cache புள்ளிவிவரங்களைப் பெறவும் GET /api/cache/stats # அனைத்து cache-களையும் அழிக்கவும் DELETE /api/cache/stats ``` பதில் எடுத்துக்காட்டு: ```json { "semanticCache": { "memorySize": 42, "memoryMaxSize": 500, "dbSize": 128, "hitRate": 0.65 }, "idempotency": { "activeKeys": 3, "windowMs": 5000 } } ``` ### தாமதத்தின் மீதான தாக்கம் ஒரு பொருள்சார் cache HIT, **upstream அழைப்பு இல்லாமல்** cache-இலிருந்து பதிலை வழங்கும்; எனவே அறிக்கையிடப்படும் `X-OmniRoute-Response-Latency` ஏறத்தாழ பூஜ்ஜியமாக இருக்கும் (அசல் upstream தாமதத்தைப் பொருட்படுத்தாமல்). தாமதத்தைப் பொறுத்து செயல்படும் client-கள் (தரநிலைச் சோதனை, p50/p99 கண்காணிப்பு) `X-OmniRoute-Cache-Latency` response header-ஐச் சரிபார்க்க வேண்டும்: | மதிப்பு | பொருள் | | ----------- | --------------------------------------------------------------------- | | `synthetic` | பதில் cache-இலிருந்து வழங்கப்பட்டது; தாமதம் உண்மையான upstream நேரமல்ல | | _(இல்லை)_ | உண்மையான upstream அழைப்பிலிருந்து வந்த பதில் | ### ஒவ்வொரு விசைக்குமான cache தவிர்ப்பு API விசைகள் `cacheDefaultMode` வழியாக பொருள்சார் cache வாசிப்புகளைத் தவிர்க்கலாம்: | மதிப்பு | செயல்பாடு | | -------- | --------------------------------------------------------------- | | `legacy` | இயல்பான cache செயல்பாடு (இயல்புநிலை) | | `bypass` | Cache தேடலை முழுமையாகத் தவிர்த்து, எப்போதும் upstream-ஐ அணுகும் | விசை உருவாக்கத்தின்போது (`POST /api/keys`) அமைக்கவும் அல்லது புதுப்பிக்கவும் (`PATCH /api/keys/[id]`): ```json { "cacheDefaultMode": "bypass" } ``` ### ஒவ்வொரு கோரிக்கைக்குமான தவிர்ப்பு விசை அமைப்புகளைப் பொருட்படுத்தாமல் எந்தக் கோரிக்கையும் cache-ஐத் தவிர்க்கலாம்: ``` X-OmniRoute-No-Cache: true ``` --- ## டாஷ்போர்டு & மேலாண்மை பொது auth/login தவிர, மேலாண்மை வழித்தடங்கள் (`/api/*`) சாதாரண inference 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/PATCH/DELETE | தனிப்பயன் மாதிரிகள் (சேர்த்தல், புதுப்பித்தல், மறைத்தல்/காட்டுதல், நீக்குதல்) | ### OAuth செயல்முறைகள் | முனைப்புள்ளி | முறை | விளக்கம் | | -------------------------------- | ------- | -------------------------------- | | `/api/oauth/[provider]/[action]` | பல்வேறு | வழங்குநருக்கான குறிப்பிட்ட OAuth | ### வழிச்செலுத்தல் & உள்ளமைவு | முனைப்புள்ளி | முறை | விளக்கம் | | --------------------- | -------- | ---------------------------------------- | | `/api/models/alias` | GET/POST | மாதிரி மாற்றுப்பெயர்கள் | | `/api/models/catalog` | GET | வழங்குநர் + வகைப்படி அனைத்து மாதிரிகளும் | | `/api/combos*` | பல்வேறு | சேர்க்கை மேலாண்மை | | `/api/keys*` | பல்வேறு | API விசை மேலாண்மை | | `/api/pricing` | GET | மாதிரி விலை நிர்ணயம் | ### பயன்பாடு & பகுப்பாய்வு | முனைப்புள்ளி | முறை | விளக்கம் | | -------------------------------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `/api/usage/history` | GET | பயன்பாட்டு வரலாறு | | `/api/usage/logs` | GET | பயன்பாட்டுப் பதிவுகள் | | `/api/usage/request-logs` | GET | கோரிக்கை-நிலைப் பதிவுகள் | | `/api/usage/[connectionId]` | GET | ஒவ்வொரு இணைப்பிற்குமான பயன்பாடு | | `/api/usage/token-limits` | GET/POST/DELETE | ஒவ்வொரு API விசைக்குமான டோக்கன்-வரம்பு ஒதுக்கீடுகள் | | `/api/usage/model-latency-stats` | GET | ஒவ்வொரு வழங்குநர்/மாதிரிக்குமான நகரும் தாமதத் தொகுப்பு (avg/p50/p95/p99, வெற்றி விகிதம்); வடிகட்டிகள்: `windowHours`/`minSamples`/`maxRows`/`provider`/`model` (#6873) | | `/api/usage/cache-health` | GET | `call_logs` மீதான ப்ராம்ப்ட்-கேச் நிலைச் சுருக்கம் — எழுதுதல்/வாசித்தல் விகிதம், p50/p90/p99 எழுதுதல்-அளவு பரவல், அதிக-எழுதுதல் செறிவு, ஒவ்வொரு மாதிரிக்குமான பிரிப்பு மற்றும் `healthy`/`degraded`/`thrash`/`no-data` தீர்ப்பு; வினவல் அளவுருக்கள் `range` (`1h`\|`24h`\|`7d`\|`30d`, இயல்புநிலை `24h`) மற்றும் விருப்பத்திற்குரிய `model` (#8827) | ### அமைப்புகள் | முனைப்புள்ளி | முறை | விளக்கம் | | ------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `/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 | off/lite/standard/aggressive/ultra/RTK/stacked சுருக்கத்தின் முன்னோட்டம் | | `/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 | மேலாண்மை அங்கீகாரம்/ஆய்வுக்கு முன் கடுமையான நம்பகமான loopback சரிபார்ப்பு; தூய்மைப்படுத்தப்பட்ட FFmpeg/ffprobe கிடைப்புநிலை மற்றும் பதிப்புகள் (no-store) | | `/api/modality-bridge/video/extract` | POST | உட்புற அங்கீகரிக்கப்பட்ட நம்பகமான loopback பைட் தரகர்; 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 கோப்பைப் பதிவேற்றுதல் | | `/api/db-backups/exportAll` | GET | முழுக் காப்புப்பிரதியை .tar.gz காப்பகமாகப் பதிவிறக்குதல் | ### மேக ஒத்திசைவு | முனைப்புள்ளி | முறை | விளக்கம் | | ---------------------- | ------- | ---------------------------- | | `/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 வழங்குநரின் சூழல் மாறிகளைப் பழுதுபார்க்கும் | > **குறிப்பு:** இந்த இறுதிப்புள்ளிகள் கணினியால் அகத்தே அல்லது 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 POST /v1/audio/transcriptions Authorization: Bearer your-api-key Content-Type: multipart/form-data ``` உள்ளமைக்கப்பட்ட எந்தவொரு STT வழங்குநரையும் பயன்படுத்தி ஒலிக் கோப்புகளை எழுத்துப்பதிவு செய்யலாம். பாதையின் முதல் பகுதி மூல வழங்குநரைத் தேர்ந்தெடுக்கிறது (`openai/…`, `deepgram/…`). வேறொரு வழங்குநரின் மாதிரியை மறுஏற்றுமதி செய்யும் நுழைவாயில்கள் தகுதிப்படுத்தப்பட்ட id-ஐப் பயன்படுத்துகின்றன (`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 } ``` **எடுத்துக்காட்டு மாதிரி id-கள்:** `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` தலைப்பைச் சேர்க்க முடியாதபோதும், API விசையை அடிப்படை URL-இல் உட்பொதிக்க வேண்டியபோதும் இந்த மாற்றுப்பெயர்களைப் பயன்படுத்தவும். ```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-க்கு வெளியேயுள்ள reverse-proxy பதிவுகள், உலாவி வரலாறு மற்றும் தொலைஅளவீட்டுத் தரவுகளில் தோன்றக்கூடும். அவற்றை இயல்புநிலை அங்கீகார முறையாக அல்லாமல், இணக்கத்தன்மைக்கான ஒரு விருப்பமாகக் கருதவும். --- ## தொலைஅளவீடு ```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. மாதிரி தீர்மானிக்கப்படுகிறது (நேரடி வழங்குநர்/மாதிரி அல்லது மாற்றுப்பெயர்/காம்போ) 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` | அனைத்து மாதிரி→காம்போ பொருத்தங்களையும் பட்டியலிடுதல் | | 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`). --- ## Webhooks OmniRoute நிகழ்வுகளுக்கான வெளிச்செல்லும் webhook சந்தாக்கள் (கோரிக்கை நிறைவடைதல், ஒதுக்கீடு தீர்ந்துபோதல், விசைச் சுழற்சி போன்றவை). | முறை | பாதை | விளக்கம் | | ------ | ------------------------- | -------------------------------------------------------------------------------- | | GET | `/api/webhooks` | Webhook-களைப் பட்டியலிடும் (ரகசியங்கள் `...` என மறைக்கப்படும்) | | POST | `/api/webhooks` | Webhook-ஐ உருவாக்கும் — உடல்: `{url, events?: ["*"], secret?, description?}` | | GET | `/api/webhooks/[id]` | ஒரு webhook-ஐப் பெறும் | | PUT | `/api/webhooks/[id]` | url/events/secret/description-ஐப் புதுப்பிக்கும் | | DELETE | `/api/webhooks/[id]` | ஒரு webhook-ஐ அகற்றும் | | POST | `/api/webhooks/[id]/test` | Webhook URL-க்கு ஒரு சோதனை payload-ஐ அனுப்பி, விநியோக நிலையைத் திருப்பியளிக்கும் | **அங்கீகாரம்:** மேலாண்மை அமர்வு/API விசை (`requireManagementAuth`). --- ## பதிவுசெய்யப்பட்ட விசைகள் (தானியங்கு மேலாண்மை) தினசரி/மணிநேர ஒதுக்கீடுகளுடன், ஆதரவுப் provider/account-க்கு எதிராக 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]` | பதிவுசெய்யப்பட்ட விசையின் metadata-ஐப் பெறும் (மூல விசைத் தரவு இல்லை) | | DELETE | `/api/v1/registered-keys/[id]` | பதிவுசெய்யப்பட்ட விசையைத் திரும்பப்பெறும் | | POST | `/api/v1/registered-keys/[id]/revoke` | வெளிப்படையான திரும்பப்பெறல் endpoint (DELETE போன்ற அதே விளைவு) | **அங்கீகாரம்:** Bearer API விசை (`isAuthenticated`). `/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` commit-ஐப் பார்க்கவும். ```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` ஆகியவற்றை ஆதரிக்கிறது; இதே புலங்கள் கட்டுப்பாட்டுப் பலகம் → அமைப்புகள் → மீள்திறன் என்பதிலும் வழங்கப்படுகின்றன. ```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` | மூல manifest-இலிருந்து ஒரு திறனை நிறுவும் — கோரிக்கை உடல்: `{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 மூலம் சரிபார்க்கப்படும் body: `{content, key, type?, sessionId?, apiKeyId?, metadata?, expiresAt?}` | | GET | `/api/memory/[id]` | ஒரு நினைவகத்தைப் பெறும் | | DELETE | `/api/memory/[id]` | ஒரு நினைவகத்தை நீக்கும் | | GET | `/api/memory/health` | நினைவகத் துணைஅமைப்பின் ஆரோக்கியம் (DB இணைப்பு, embeddings பின்தளம், vector index நிலை) | **அங்கீகாரம்:** மேலாண்மை அமர்வு/API விசை (`requireManagementAuth`). `type` enum: `FACTUAL`, `EPISODIC`, `SEMANTIC`, `PROCEDURAL` (`src/lib/memory/types.ts`-இல் உள்ள `MemoryType`-ஐப் பார்க்கவும்). --- ## MCP சேவையகம் OmniRoute ஆனது 3 பரிமாற்ற முறைகள் (stdio, SSE, streamable-http) மற்றும் வரையறுக்கப்பட்ட கருவிகளைக் கொண்ட உட்பொதிக்கப்பட்ட Model Context Protocol சேவையகத்துடன் வழங்கப்படுகிறது. கீழேயுள்ள dashboard முனைப்புள்ளிகள் நிலை/தணிக்கைத் தரவைப் படித்து, HTTP பரிமாற்ற முறைகளை proxy செய்கின்றன. | முறை | பாதை | விளக்கம் | | ------ | ---------------------- | ------------------------------------------------------------------------------------------------ | -------------------- | | 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 frame-ஐ அனுப்பும் | | GET | `/api/mcp/stream` | Streamable HTTP பரிமாற்ற முறையின் SSE பக்கத்தைத் திறக்கும் (சேவையகத்தால் தொடங்கப்படும் செய்திகள்) | | POST | `/api/mcp/stream` | Streamable HTTP பரிமாற்ற முறையில் JSON-RPC frame-ஐ அனுப்பும் | | 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` scope கொண்ட Bearer API விசை); `status`/`tools`/`audit*` வழித்தடங்களை dashboard-இலிருந்து படிக்கலாம் (dashboard host-ஐ அணுகுவதற்கு அப்பால் கூடுதல் அங்கீகாரம் தேவையில்லை). > இரண்டு HTTP பரிமாற்ற முறைகளும் `settings.mcpEnabled` மற்றும் `settings.mcpTransport` ஆகியவற்றால் கட்டுப்படுத்தப்படுகின்றன — பரிமாற்ற முறை பொருந்தாமை `400`-ஐத் திருப்பியளிக்கும்; MCP முடக்கப்பட்ட நிலை `503`-ஐத் திருப்பியளிக்கும். --- ## A2A சேவையகம் OmniRoute ஆனது A2A (Agent-to-Agent) 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 முகவர் அட்டையை (பெயர், விளக்கம், திறன்கள், திறன் பட்டியல், அங்கீகாரத் திட்டம்) திருப்பியளிக்கிறது — 1 மணிநேரத்திற்குப் பொதுவாகத் தற்காலிகச் சேமிப்பில் வைக்கப்படும். அங்கீகாரம் தேவையில்லை. ### 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 விசையை நேரடியாகச் சரிபார்க்கிறது; மற்ற `/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, chipotle, 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`; பழைய Codex YAML-ஐ `migration` குறிப்பிடும்) | | GET | `/api/cli-tools/backups` | CLI கருவி உள்ளமைவுக் காப்புப்பிரதிகளைப் பட்டியலிடவும் | | POST | `/api/cli-tools/backups` | அனைத்து CLI கருவி உள்ளமைவுகளுக்கும் காப்புப்பிரதியை உருவாக்கவும் | | POST | `/api/cli-tools/backups` | மீட்டமைத்தல்: கோரிக்கை உடலில் `{tool, backupId}` உடன் இதே முனைப்புள்ளியைப் பயன்படுத்துவது அந்தக் காப்புப்பிரதியை மீட்டமைக்கும் | | GET | `/api/cli-tools/antigravity-mitm` | Antigravity MITM பதிலாள் நிலை ("antigravity-mitm" CLI கருவி) | | POST | `/api/cli-tools/antigravity-mitm/alias` | antigravity-mitm மாற்றுப்பெயர்களை உள்ளமைக்கவும் | **அங்கீகாரம்:** மேலாண்மை அமர்வு தேவை. --- ## முகவர் திறன்கள் 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` | மூல prompt + metadata-வைப் பெறவும் (செயல்படுத்தாமல்) | | POST | `/api/agent-skills/generate` | இயல்பான மொழி விளக்கத்திலிருந்து AI மூலம் புதிய திறனை உருவாக்கவும் | **அங்கீகாரம்:** மேலாண்மை அமர்வு அல்லது மேலாண்மை வரம்புடைய API key தேவை. --- ## தற்காலிக சேமிப்பக மேலாண்மை சொற்பொருள் தற்காலிக சேமிப்பகத்தையும் பகுத்தறிதல் தற்காலிக சேமிப்பகத்தையும் நிர்வகிக்கவும். | முறை | பாதை | விளக்கம் | | ------ | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | 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 விசை தேவை. --- ## Webhook-கள் நிகழ்வுகளுக்கான webhook சந்தாக்களை நிர்வகிக்கவும். | முறை | பாதை | விளக்கம் | | ------ | ------------------------------- | ----------------------------------------------------------------------------- | | GET | `/api/webhooks` | அனைத்து webhook சந்தாக்களையும் பட்டியலிடுதல் | | POST | `/api/webhooks` | webhook சந்தாவை உருவாக்குதல் — உடற்பகுதி: `{url, events[], secret?, active?}` | | GET | `/api/webhooks/[id]` | குறிப்பிட்ட webhook சந்தாவைப் பெறுதல் | | PUT | `/api/webhooks/[id]` | webhook சந்தாவைப் புதுப்பித்தல் | | DELETE | `/api/webhooks/[id]` | webhook சந்தாவை நீக்குதல் | | GET | `/api/webhooks/[id]/deliveries` | webhook-இன் வழங்கல் வரலாற்றைப் பட்டியலிடுதல் (வெற்றி/தோல்விப் பதிவு) | | POST | `/api/webhooks/[id]/test` | webhook-க்கு சோதனை நிகழ்வை அனுப்புதல் | **அங்கீகாரம்:** மேலாண்மை அமர்வு தேவை. முழுமையான நிகழ்வு வகைகளுக்கு [Webhooks கட்டமைப்பு](../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` பயன்படுத்தப்படுகிறது - `requireLogin`-ஐ `/api/settings/require-login` மூலம் மாற்றியமைக்கலாம் - `REQUIRE_API_KEY=true` ஆக இருக்கும்போது, `/v1/*` வழித்தடங்களுக்கு விருப்பத்தேர்வாக Bearer API விசை தேவைப்படும் - இந்தக் குறிப்பில் "மேலாண்மை டோக்கன்" / "மேலாண்மை வரம்புடைய API விசை" என்பது அந்த வழிகாட்டியில் உள்ள வகைகளில் ஒன்றைக் குறிக்கிறது — வரையறுக்கப்படாத கூடுதல் ரகசிய வகையைக் குறிக்காது > **முறிவை ஏற்படுத்தும் மாற்றம் (v3.8.0)** — `/api/v1/agents/tasks/*` மற்றும் கூல்டவுன் மேலாண்மை இறுதிப்புள்ளிகளுக்கு இப்போது **மேலாண்மை அங்கீகாரம்** (டாஷ்போர்டு `auth_token` குக்கீ அல்லது மேலாண்மை வரம்புடைய API விசை) தேவைப்படுகிறது. முன்பு அங்கீகாரம் இல்லாமல் இந்த வழித்தடங்களை அழைத்த கிளையன்ட்கள் `401 Unauthorized` பதிலைப் பெறுவார்கள். `588a0333` கமிட்டைப் பார்க்கவும் (`fix(auth): முகவர் மற்றும் கூல்டவுன் API-களுக்கு மேலாண்மை அங்கீகாரத்தைத் தேவைப்படுத்து`).