mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-21 06:12:17 +03:00
Batch 2 of the locale expansion across the dashboard catalog, docs mirrors, CLI catalog, README, locale index and the site. 51 → 59 locales. Also: the translator restores the ICU literal escape around angle placeholders, and the docs chunker splits oversized sections before translating. ⚠️ base-red inherited: #12732 — the eight red checks fail identically on unrelated PRs cut from the same base (e.g. #13197); every gate is green locally after merging the base.
1781 lines
201 KiB
Markdown
1781 lines
201 KiB
Markdown
# API_REFERENCE (മലയാളം)
|
||
|
||
🌐 **Languages:** 🇺🇸 [English](../../../../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) · 🇮🇱 [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) · 🇮🇩 [id](../../../id/docs/reference/API_REFERENCE.md) · 🇮🇹 [it](../../../it/docs/reference/API_REFERENCE.md) · 🇯🇵 [ja](../../../ja/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) · 🇮🇳 [mr](../../../mr/docs/reference/API_REFERENCE.md) · 🇲🇾 [ms](../../../ms/docs/reference/API_REFERENCE.md) · 🇲🇹 [mt](../../../mt/docs/reference/API_REFERENCE.md) · 🇲🇲 [my](../../../my/docs/reference/API_REFERENCE.md) · 🇳🇵 [ne](../../../ne/docs/reference/API_REFERENCE.md) · 🇳🇱 [nl](../../../nl/docs/reference/API_REFERENCE.md) · 🇳🇴 [no](../../../no/docs/reference/API_REFERENCE.md) · 🇮🇳 [or](../../../or/docs/reference/API_REFERENCE.md) · 🇮🇳 [pa](../../../pa/docs/reference/API_REFERENCE.md) · 🇵🇭 [phi](../../../phi/docs/reference/API_REFERENCE.md) · 🇵🇱 [pl](../../../pl/docs/reference/API_REFERENCE.md) · 🇵🇹 [pt](../../../pt/docs/reference/API_REFERENCE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/API_REFERENCE.md) · 🇷🇴 [ro](../../../ro/docs/reference/API_REFERENCE.md) · 🇷🇺 [ru](../../../ru/docs/reference/API_REFERENCE.md) · 🇱🇰 [si](../../../si/docs/reference/API_REFERENCE.md) · 🇸🇰 [sk](../../../sk/docs/reference/API_REFERENCE.md) · 🇸🇮 [sl](../../../sl/docs/reference/API_REFERENCE.md) · 🇷🇸 [sr](../../../sr/docs/reference/API_REFERENCE.md) · 🇸🇪 [sv](../../../sv/docs/reference/API_REFERENCE.md) · 🇰🇪 [sw](../../../sw/docs/reference/API_REFERENCE.md) · 🇮🇳 [ta](../../../ta/docs/reference/API_REFERENCE.md) · 🇮🇳 [te](../../../te/docs/reference/API_REFERENCE.md) · 🇹🇭 [th](../../../th/docs/reference/API_REFERENCE.md) · 🇹🇷 [tr](../../../tr/docs/reference/API_REFERENCE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/reference/API_REFERENCE.md) · 🇵🇰 [ur](../../../ur/docs/reference/API_REFERENCE.md) · 🇻🇳 [vi](../../../vi/docs/reference/API_REFERENCE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/API_REFERENCE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/reference/API_REFERENCE.md)
|
||
|
||
---
|
||
|
||
---
|
||
|
||
title: "API റഫറൻസ്"
|
||
version: 3.8.51
|
||
lastUpdated: 2026-08-31
|
||
---
|
||
|
||
# API റഫറൻസ്
|
||
|
||
🌐 **Languages:** 🇺🇸 [English](../../../../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) · 🇮🇱 [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) · 🇮🇩 [id](../../../id/docs/reference/API_REFERENCE.md) · 🇮🇹 [it](../../../it/docs/reference/API_REFERENCE.md) · 🇯🇵 [ja](../../../ja/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) · 🇮🇳 [mr](../../../mr/docs/reference/API_REFERENCE.md) · 🇲🇾 [ms](../../../ms/docs/reference/API_REFERENCE.md) · 🇲🇹 [mt](../../../mt/docs/reference/API_REFERENCE.md) · 🇲🇲 [my](../../../my/docs/reference/API_REFERENCE.md) · 🇳🇵 [ne](../../../ne/docs/reference/API_REFERENCE.md) · 🇳🇱 [nl](../../../nl/docs/reference/API_REFERENCE.md) · 🇳🇴 [no](../../../no/docs/reference/API_REFERENCE.md) · 🇮🇳 [or](../../../or/docs/reference/API_REFERENCE.md) · 🇮🇳 [pa](../../../pa/docs/reference/API_REFERENCE.md) · 🇵🇭 [phi](../../../phi/docs/reference/API_REFERENCE.md) · 🇵🇱 [pl](../../../pl/docs/reference/API_REFERENCE.md) · 🇵🇹 [pt](../../../pt/docs/reference/API_REFERENCE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/API_REFERENCE.md) · 🇷🇴 [ro](../../../ro/docs/reference/API_REFERENCE.md) · 🇷🇺 [ru](../../../ru/docs/reference/API_REFERENCE.md) · 🇱🇰 [si](../../../si/docs/reference/API_REFERENCE.md) · 🇸🇰 [sk](../../../sk/docs/reference/API_REFERENCE.md) · 🇸🇮 [sl](../../../sl/docs/reference/API_REFERENCE.md) · 🇷🇸 [sr](../../../sr/docs/reference/API_REFERENCE.md) · 🇸🇪 [sv](../../../sv/docs/reference/API_REFERENCE.md) · 🇰🇪 [sw](../../../sw/docs/reference/API_REFERENCE.md) · 🇮🇳 [ta](../../../ta/docs/reference/API_REFERENCE.md) · 🇮🇳 [te](../../../te/docs/reference/API_REFERENCE.md) · 🇹🇭 [th](../../../th/docs/reference/API_REFERENCE.md) · 🇹🇷 [tr](../../../tr/docs/reference/API_REFERENCE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/reference/API_REFERENCE.md) · 🇵🇰 [ur](../../../ur/docs/reference/API_REFERENCE.md) · 🇻🇳 [vi](../../../vi/docs/reference/API_REFERENCE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/API_REFERENCE.md) · 🇹🇼 [zh-TW](../../../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)
|
||
- [രജിസ്റ്റർ ചെയ്ത കീകൾ (സ്വയമേവയുള്ള മാനേജ്മെന്റ്)](#registered-keys-auto-management)
|
||
- [ഏജന്റ്സ് പ്രോട്ടോക്കോൾ](#agents-protocol)
|
||
- [മാനേജ്മെന്റ് പ്രോക്സികൾ](#management-proxies)
|
||
- [പ്രതിരോധക്ഷമത (വിപുലീകരിച്ചത്)](#resilience-extended)
|
||
- [സ്കില്ലുകൾ](#skills)
|
||
- [മെമ്മറി](#memory)
|
||
- [MCP സെർവർ](#mcp-server)
|
||
- [A2A സെർവർ](#a2a-server)
|
||
- [ക്ലൗഡ്, ഇവാലുകൾ, അസസ്മെന്റ്](#cloud-evals--assess)
|
||
- [അഭ്യർത്ഥന പ്രോസസ്സിംഗ്](#request-processing)
|
||
- [പ്രാമാണീകരണം](#authentication)
|
||
|
||
---
|
||
|
||
## ചാറ്റ് പൂർത്തീകരണങ്ങൾ
|
||
|
||
```bash
|
||
POST /v1/chat/completions
|
||
Authorization: Bearer your-api-key
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"model": "cc/claude-opus-4-6",
|
||
"messages": [
|
||
{"role": "user", "content": "Write a function to..."}
|
||
],
|
||
"stream": true
|
||
}
|
||
```
|
||
|
||
### ഇഷ്ടാനുസൃത ഹെഡറുകൾ
|
||
|
||
| ഹെഡർ | ദിശ | വിവരണം |
|
||
| ------------------------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||
| `X-OmniRoute-No-Cache` | അഭ്യർത്ഥന | കാഷ് ഒഴിവാക്കാൻ `true` ആയി സജ്ജമാക്കുക |
|
||
| `x-omniroute-no-memory` | അഭ്യർത്ഥന | ഈ അഭ്യർത്ഥനയ്ക്കായി മെമ്മറി + സ്കിൽസ് ഇൻജക്ഷൻ ഒഴിവാക്കാൻ `true` ആയി സജ്ജമാക്കുക (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 ഉപയോഗിച്ച പ്രാബല്യത്തിലുള്ള സെഷൻ ഐഡി |
|
||
| `X-OmniRoute-Request-Id` | പ്രതികരണം | അഭ്യർത്ഥന കോറിലേഷൻ ഐഡി (അറിയാമെങ്കിൽ) |
|
||
| `X-OmniRoute-Version` | പ്രതികരണം | OmniRoute ബിൽഡ് പതിപ്പ് (എപ്പോഴും ലഭ്യമാണ്) |
|
||
| `X-OmniRoute-Cost-Saved` | പ്രതികരണം | ഒരു HIT-ൽ കാഷ് ഒഴിവാക്കിയ USD ചെലവ് (കാഷ് ഹിറ്റുകൾക്ക് മാത്രം) |
|
||
| `X-OmniRoute-Decision` | പ്രതികരണം | റൂട്ടിംഗ് ട്രേസ്: `strategy=<name>; provider=<alias>; latency_ms=<n>` (`<name>` എന്നത് കോംബോ സ്ട്രാറ്റജിയാണ്, അല്ലെങ്കിൽ കോംബോ അല്ലാത്ത അഭ്യർത്ഥനയ്ക്ക് `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).
|
||
|
||
> **കാഷ്-ഹിറ്റ് ചെലവ് സെമാന്റിക്സ്:** ഒരു സെമാന്റിക്-കാഷ് HIT-ൽ (`X-OmniRoute-Cache-Hit: true`) അപ്സ്ട്രീം കോൾ ഒന്നും നടത്താത്തതിനാൽ, `X-OmniRoute-Response-Cost` എന്നത് `0.0000000000` ആണ് (ഹിറ്റ് നൽകുന്നതിനുള്ള **അധിക** ചെലവ്). യഥാർത്ഥ/ഉണ്ടാകുമായിരുന്ന ചെലവ് `X-OmniRoute-Cost-Saved`-ൽ പ്രത്യേകം റിപ്പോർട്ട് ചെയ്യുന്നു. ബില്ലിംഗ് ഉപഭോക്താക്കൾ `X-OmniRoute-Response-Cost` കൂട്ടിച്ചേർക്കണം (ഹിറ്റുകൾക്ക് ചെലവില്ല); കാഷ് അനലിറ്റിക്സിന് `X-OmniRoute-Cost-Saved` സംഗ്രഹിക്കാം.
|
||
|
||
## എക്സ്ക്ലൂസീവ് മാനേജ്ഡ് സെഷൻ ലീസുകൾ
|
||
|
||
എക്സ്ക്ലൂസീവ് മാനേജ്ഡ് സെഷൻ ലീസിംഗ് എന്നത് ഓപ്റ്റ്-ഇൻ, ക്ലയന്റ്-ന്യൂട്രൽ റൂട്ടിംഗ് കരാറാണ്: ഒരു സജീവ ഉടമ
|
||
യോഗ്യമായ ഒരു OmniRoute കണക്ഷൻ കൈവശം വയ്ക്കുന്നു. ഇത് ഒരു മോഡൽ ലീസിന് എടുക്കുകയോ, OAuth ആവശ്യപ്പെടുകയോ, ഒരു
|
||
പ്രത്യേക ക്ലയന്റിനെ തിരിച്ചറിയുകയോ, ഒരു പ്രത്യേക പ്രൊവൈഡർ ആവശ്യപ്പെടുകയോ ചെയ്യുന്നില്ല.
|
||
|
||
ഓതന്റിക്കേഷനായി ഉപയോഗിക്കുന്ന API കീയ്ക്ക് `lease:exclusive` സ്കോപ്പും വ്യക്തമായി നിർവചിച്ച ശൂന്യമല്ലാത്ത
|
||
`allowedConnections` ലിസ്റ്റും ഉണ്ടായിരിക്കണം. കീ സൃഷ്ടിക്കുമ്പോഴും ഭാഗിക അപ്ഡേറ്റുകൾ നടത്തുമ്പോഴും ഡാറ്റാബേസ്
|
||
മ്യൂട്ടേഷൻ ബൗണ്ടറി ഈ രണ്ട് ഫീൽഡുകളും ഒരുമിച്ച് നിർബന്ധമാക്കുന്നു.
|
||
|
||
```http
|
||
POST /api/v1/session-leases
|
||
Authorization: Bearer <managed-api-key>
|
||
Content-Type: application/json
|
||
X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters>
|
||
|
||
{"action":"acquire","model":"glm/glm-4.6"}
|
||
```
|
||
|
||
വിജയകരമായ acquire, renew, release പ്രതികരണങ്ങൾ ടൈംസ്റ്റാമ്പുകൾ, `state`, കൃത്യമായ പോസിറ്റീവ്
|
||
`generation` എന്നിവ വെളിപ്പെടുത്തും, എന്നാൽ തിരഞ്ഞെടുത്ത കണക്ഷനോ ക്രെഡൻഷ്യലുകളോ ഒരിക്കലും വെളിപ്പെടുത്തില്ല. Renew, release പ്രവർത്തനങ്ങൾ
|
||
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"
|
||
}
|
||
}
|
||
```
|
||
|
||
ഈ ഓപ്റ്റ്-ഇൻ status പ്രവർത്തനം ഒറ്റ ഡാറ്റാബേസ് ട്രാൻസാക്ഷനിൽ ഒപേക്ക് ഉടമ, ഓതന്റിക്കേറ്റ് ചെയ്ത മാനേജ്ഡ് API കീ, കൃത്യമായ
|
||
സജീവ generation എന്നിവയാൽ ഫെൻസ് ചെയ്യപ്പെട്ടിരിക്കുന്നു. `displayName` എന്നത് ട്രിം ചെയ്ത, കോൺഫിഗർ ചെയ്ത
|
||
കണക്ഷൻ പേര് മാത്രമാണ്; സുരക്ഷിതമായ കോൺഫിഗർ ചെയ്ത പേര് നിലവിലില്ലെങ്കിൽ അത് `null` ആയിരിക്കും. OmniRoute ഒരിക്കലും അതിനു പകരമായി
|
||
ഇമെയിലോ ജനറേറ്റ് ചെയ്ത അക്കൗണ്ട് ഐഡന്റിറ്റിയോ ഉപയോഗിക്കില്ല. provider മൂല്യം സെൻസിറ്റീവ് അല്ലാത്ത ഒരു പ്രദർശന ലേബൽ മാത്രമാണ്; അത് ഒരിക്കലും
|
||
ജനറേറ്റ് ചെയ്ത compatible-provider ഐഡന്റിഫയർ ആയിരിക്കില്ല. ക്രെഡൻഷ്യലുകൾ, ടോക്കണുകൾ, കുക്കികൾ, അസംസ്കൃത കണക്ഷൻ അല്ലെങ്കിൽ API
|
||
കീ ഐഡികൾ, ഉടമയുടെ ഹാഷുകൾ, ഫെൻസിംഗ് സീക്രട്ടുകൾ, ആഭ്യന്തര റൂട്ടിംഗ് ഡാറ്റ എന്നിവ ഒഴിവാക്കിയിരിക്കുന്നു.
|
||
|
||
തെറ്റായ കീ, തെറ്റായ ഉടമ, കാലഹരണപ്പെട്ട generation, ലഭ്യമല്ലാത്തതോ കാലഹരണപ്പെട്ടതോ റിലീസ് ചെയ്തതോ അസാധുവാക്കിയതോ ആയ ലുക്കപ്പുകൾ എല്ലാം
|
||
കണക്ഷൻ മെറ്റാഡാറ്റ ഇല്ലാതെ ഒരേ `409 LEASE_FENCE_STALE` പിശക് തിരികെ നൽകുന്നു. capacity-wait പ്രതികരണം ലഭിച്ച ക്ലയന്റിന് പരിശോധിക്കാൻ സജീവ ബൈൻഡിംഗ് ഉണ്ടായിരിക്കില്ല. റൂട്ടിംഗ് ഒരു സജീവ ലീസിനെ ട്രാൻസിഷൻ ചെയ്യുമ്പോൾ,
|
||
അതേ generation സാധുവായി തുടരുകയും status പഴയ ബൈൻഡിംഗ് ഒരിക്കലും നൽകാതെ പുതിയ ബൈൻഡിംഗ് ആറ്റോമിക്കായി തിരികെ നൽകുകയും ചെയ്യും.
|
||
acquire, renew, release, waiting പ്രതികരണങ്ങൾ അവയുടെ മുമ്പത്തെ ഘടനകൾ നിലനിർത്തുന്നതിനാൽ
|
||
നിലവിലുള്ള ക്ലയന്റുകളിൽ മാറ്റമുണ്ടാകില്ല.
|
||
|
||
ഈ സെർവർ കരാർ സ്റ്റോക്ക് OpenAI Codex `/status` മാറ്റുന്നില്ല. സ്റ്റോക്ക് Codex നിലവിൽ അതിന്റെ
|
||
മോഡൽ പ്രൊവൈഡറും ബിൽറ്റ്-ഇൻ ഓതന്റിക്കേഷൻ/അക്കൗണ്ട് നിലയും റിപ്പോർട്ട് ചെയ്യുന്നു, എന്നാൽ ഇഷ്ടാനുസൃതമായ ഏത്
|
||
പ്രൊവൈഡർ അക്കൗണ്ട് മെറ്റാഡാറ്റയും റെൻഡർ ചെയ്യുന്നില്ല; ഭാവിയിലെ ഒരു ക്ലയന്റ് ഇന്റഗ്രേഷൻ ഈ പ്രവർത്തനം വിളിച്ച്
|
||
`connection.displayName` എങ്ങനെ പ്രദർശിപ്പിക്കണമെന്ന് തീരുമാനിക്കണം.
|
||
|
||
തുടർന്ന് ഓരോ മാനേജ്ഡ് ഇൻഫറൻസ് അഭ്യർത്ഥനയും രണ്ട് കൺട്രോൾ ഹെഡറുകളും നൽകുന്നു:
|
||
|
||
```http
|
||
X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters>
|
||
X-OmniRoute-Lease-Generation: 1
|
||
```
|
||
|
||
പിന്തുണയ്ക്കുന്ന ഓരോ അപ്സ്ട്രീം ശ്രമത്തിനും തൊട്ടുമുമ്പ് കൃത്യമായ ഉടമ, generation, സജീവ കണക്ഷൻ, ഓതന്റിക്കേറ്റ് ചെയ്ത API കീ എന്നിവ
|
||
ഫെൻസ് ചെയ്യപ്പെടുന്നു. അതേ കണക്ഷൻ അനുവദിക്കുന്ന മറ്റൊരു കീ ഉപയോഗിക്കുമ്പോഴും ഉടമയും generation-ഉം റീപ്ലേ ചെയ്യുന്നത്
|
||
പരാജയപ്പെടും. അസംസ്കൃത ഉടമകളെ സ്ഥിരമായി സൂക്ഷിക്കുകയോ, ലോഗ് ചെയ്യുകയോ, അഭ്യർത്ഥനയുടെ സ്നാപ്പ്ഷോട്ടിൽ നിലനിർത്തുകയോ,
|
||
അപ്സ്ട്രീമിലേക്ക് ഫോർവേഡ് ചെയ്യുകയോ ഇല്ല.
|
||
|
||
താൽക്കാലിക കണ്ടൻഷൻ HTTP `429`, `Retry-After`, ഇനിപ്പറയുന്നതും സഹിതം തിരികെ നൽകുന്നു:
|
||
|
||
```json
|
||
{
|
||
"state": "WAITING_FOR_CAPACITY",
|
||
"error": { "type": "lease_error", "code": "LEASE_CAPACITY_UNAVAILABLE" },
|
||
"reason": "NO_FREE_ELIGIBLE_CONNECTION",
|
||
"retryAfter": 30
|
||
}
|
||
```
|
||
|
||
സാധാരണ യോഗ്യമായ സെറ്റ് ശൂന്യമല്ലായിരുന്നുവെന്നും ലഭ്യമായ ഓരോ കാൻഡിഡേറ്റും മറ്റൊരു സജീവ ലീസ്
|
||
കൈവശം വച്ചിരുന്നുവെന്നും മാത്രമാണ് ഈ പ്രതികരണം സൂചിപ്പിക്കുന്നത്. പിന്തുണയ്ക്കാത്ത മോഡലുകൾ/പ്രൊവൈഡറുകൾ, പോളിസി പൊരുത്തക്കേട്, കൂൾഡൗൺ, ക്വോട്ട,
|
||
ഹെൽത്ത്, മറ്റ് സാധാരണ യോഗ്യതാ പരാജയങ്ങൾ എന്നിവ അവയുടെ നിലവിലുള്ള OmniRoute പ്രതികരണങ്ങൾ നിലനിർത്തുന്നു.
|
||
|
||
### `x-omniroute-compression`
|
||
|
||
ഓരോ അഭ്യർത്ഥനയ്ക്കുമുള്ള കംപ്രഷൻ പ്ലാനിന്റെ ഓവർറൈഡ്. ഏറ്റവും ഉയർന്ന മുൻഗണന — റൂട്ടിംഗ്-കോംബോ
|
||
ഓവർറൈഡ്, സജീവ പ്രൊഫൈൽ, ഓട്ടോ-ട്രിഗർ, പാനൽ Default എന്നിവയെക്കാൾ മുൻഗണന ലഭിക്കുന്നു. മൂല്യങ്ങൾ:
|
||
|
||
| മൂല്യം | ഫലം |
|
||
| ------------- | --------------------------------------------------------------------------------------------------- |
|
||
| `off` | ഈ അഭ്യർത്ഥനയ്ക്ക് കംപ്രഷൻ ഇല്ല. |
|
||
| `default` | പാനലിൽ നിന്ന് ലഭിക്കുന്ന Default പ്രൊഫൈൽ (സജീവ പ്രൊഫൈൽ അവഗണിക്കുന്നു). |
|
||
| `engine:<id>` | എനേബിൾ ചെയ്തിരിക്കുമ്പോൾ ഒരൊറ്റ എഞ്ചിൻ, ഉദാ. `engine:rtk`. |
|
||
| `<combo>` | ആദ്യം പേരനുസരിച്ച് (കേസ്-ഇൻസെൻസിറ്റീവ്), തുടർന്ന് id അനുസരിച്ച് പൊരുത്തപ്പെടുത്തുന്ന പേരുള്ള കോംബോ. |
|
||
|
||
കുറിപ്പുകൾ:
|
||
|
||
- അജ്ഞാത മൂല്യങ്ങൾ അവഗണിക്കപ്പെടുന്നു (അഭ്യർത്ഥന ഒരിക്കലും നിരസിക്കപ്പെടില്ല); റെസല്യൂഷൻ സാധാരണ ഓപ്പറേറ്റർ മുൻഗണനയിലേക്ക് നീങ്ങുന്നു.
|
||
- ഒന്നിലധികം കോംബോകൾക്ക് ഒരേ പേരാണെങ്കിൽ, നിർണിതമായ പൊരുത്തത്തിനായി കോംബോയുടെ **id** നൽകുക.
|
||
- `off` അല്ലെങ്കിൽ `default` എന്നു പേരുള്ള കോംബോയെ പേരുപയോഗിച്ച് തിരഞ്ഞെടുക്കാനാകില്ല (ആ കീവേഡുകൾ ആദ്യം വ്യാഖ്യാനിക്കപ്പെടുന്നു); അത്തരമൊരു കോംബോയെ അതിന്റെ id ഉപയോഗിച്ച് റഫർ ചെയ്യുക.
|
||
- മാസ്റ്റർ കംപ്രഷൻ സ്വിച്ച് ഒരു കർശന ഗേറ്റാണ്: കംപ്രഷൻ ആഗോളമായി പ്രവർത്തനരഹിതമാക്കിയിരിക്കുമ്പോൾ, ഈ ഹെഡറിന് അത് പ്രവർത്തനക്ഷമമാക്കാനാകില്ല.
|
||
|
||
പ്രയോഗിച്ച പ്ലാൻ പ്രതികരണ ഹെഡറിൽ എക്കോ ചെയ്യപ്പെടുന്നു:
|
||
|
||
```
|
||
X-OmniRoute-Compression: <mode>; source=<source>
|
||
```
|
||
|
||
ഇവിടെ `<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`), അത് ഒരിക്കലും embeddings അല്ലെങ്കിൽ rerank നൽകില്ല.
|
||
|
||
മൾട്ടിമോഡൽ പിന്തുണയുണ്ടെന്ന് അറിയിക്കുന്ന രജിസ്ട്രി മോഡലുകൾ, ദാതാവിനെ ആശ്രയിക്കാത്ത ഘടനാബദ്ധമായ പരമാവധി 32
|
||
ഇനങ്ങളും സ്വീകരിക്കുന്നു. മീഡിയ ഇനങ്ങളുടെ തരങ്ങൾ `text`, `image`, `audio`, `video`, `document` എന്നിവയാണ്. അവയുടെ മീഡിയ `source`
|
||
ഒന്നുകിൽ `{"type":"url","url":"https://..."}` അല്ലെങ്കിൽ
|
||
`{"type":"base64","data":"...","media_type":"..."}` ആയിരിക്കും.
|
||
|
||
Jina v5 Omni (`jina-ai/jina-embeddings-v5-omni-small`, `jina-ai/jina-embeddings-v5-omni-nano`,
|
||
കൂടാതെ ഫാമിലി അപരനാമമായ `jina-ai/jina-embeddings-v5-omni` → omni-small) Jina-യുടെ നേറ്റീവ്
|
||
EmbeddingsV5Request ഡോക്യുമെന്റുകളും സ്വീകരിക്കുകയും അവയെ **മാറ്റമില്ലാതെ ഫോർവേഡ് ചെയ്യുകയും** ചെയ്യുന്നു: `https://api.jina.ai/v1/embeddings`
|
||
|
||
```json
|
||
{
|
||
"model": "jina-ai/jina-embeddings-v5-omni-small",
|
||
"task": "retrieval.query",
|
||
"normalized": true,
|
||
"input": [
|
||
{ "text": "a red bicycle" },
|
||
{ "image": "https://example.com/bike.png" },
|
||
{
|
||
"content": [{ "text": "caption" }, { "image": "data:image/png;base64,..." }]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
നേറ്റീവ് `{ image | audio | video | pdf }` മൂല്യങ്ങൾ ഒരു പൊതു HTTPS URL, ഒരു `data:` URI, അല്ലെങ്കിൽ അസംസ്കൃത
|
||
base64 ആകാം. OmniRoute ആ ഒബ്ജക്റ്റുകളെ സ്ട്രിങ്ങാക്കി മാറ്റുകയോ നേറ്റീവ് ഇമേജ് URL-കൾ ഫെച്ച് ചെയ്യുകയോ ഇല്ല — പൊതു
|
||
മീഡിയ Jina തന്നെ വീണ്ടെടുക്കുന്നു. അധിക Jina ഫീൽഡുകൾ (`task`, `normalized`, `truncate`, `embedding_type`)
|
||
ഫോർവേഡ് ചെയ്യപ്പെടുന്നു. ടെക്സ്റ്റ് മാത്രമുള്ള Jina SKU-കൾ ടെക്സ്റ്റ് അല്ലാത്ത ഡോക്യുമെന്റുകൾ ഇപ്പോഴും നിരസിക്കും.
|
||
|
||
സുരക്ഷാ, ട്രാൻസ്പോർട്ട് പരിധികൾ:
|
||
|
||
- റിമോട്ട് മീഡിയ URL-കൾ പൊതു HTTPS ആയിരിക്കണം. കാനോനിക്കൽ `{type,source:url}` ഇനങ്ങൾ
|
||
സെർവർ ഭാഗത്ത് ഫെച്ച് ചെയ്യപ്പെടുകയും (റീഡയറക്ട് പുനഃസാധൂകരണം, സമയപരിധി, വലുപ്പപരിധികൾ, പൊതു DNS, കണക്ഷൻ പിന്നിങ്)
|
||
ദാതാവിലേക്കുള്ള കോളിനു മുമ്പ് ഇൻലൈൻ ചെയ്യപ്പെടുകയും ചെയ്യും. Jina-നേറ്റീവ് `{image:"https://..."}` ഇനങ്ങൾ
|
||
അതേ പൊതു-HTTPS പരിശോധനയ്ക്കുശേഷം അതേപടി ഫോർവേഡ് ചെയ്യപ്പെടും; Jina URL ഫെച്ച് ചെയ്യും.
|
||
- ഇൻലൈൻ base64 മീഡിയ ഓരോ ഇനത്തിനും ഡീകോഡ് ചെയ്ത 8 MiB ആയും, അഭ്യർത്ഥനയിലാകെ ഡീകോഡ് ചെയ്ത 16 MiB ആയും പരിമിതപ്പെടുത്തിയിരിക്കുന്നു.
|
||
|
||
ദാതാവിനായുള്ള പരിവർത്തനം (കാനോനിക്കൽ ഇനങ്ങൾ ഒരിക്കലും മാറ്റമില്ലാതെ ഫോർവേഡ് ചെയ്യില്ല):
|
||
|
||
- Jina മൾട്ടിമോഡൽ മോഡലുകൾ: ഓരോ ടോപ്പ്-ലെവൽ ഇനവും ഇൻലൈൻ മീഡിയയ്ക്ക് data URI-കൾ ഉപയോഗിച്ച്
|
||
ഒരു മോഡാലിറ്റി-കീഡ് ഒബ്ജക്റ്റായി (`text` / `image` / `audio` / `video` / `pdf`) മാറുന്നു; ഓരോ
|
||
ടോപ്പ്-ലെവൽ ഇനത്തിനും ഒരു വെക്റ്റർ.
|
||
- Gemini Embedding 2 ഫാമിലി: ഒരു ടോപ്പ്-ലെവൽ അറേ, `content.parts` (`text` അല്ലെങ്കിൽ `inline_data`) ഉള്ള
|
||
ഒരൊറ്റ നേറ്റീവ് `models/{model}:embedContent` അഭ്യർത്ഥനയായി മാറുന്നു.
|
||
- വ്യക്തമായ മോഡാലിറ്റി മെറ്റാഡാറ്റ ഇല്ലാത്ത അജ്ഞാത/ഡൈനാമിക് മോഡലുകൾ ഘടനാബദ്ധമായ ഇൻപുട്ട് 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 തിരികെ നൽകും. പഴയ string/token അഭ്യർത്ഥനകളിലെ ഇൻപുട്ടുമായി ബന്ധമില്ലാത്ത
|
||
വിപുലീകരണ ഫീൽഡുകൾ മാറ്റമില്ലാതെ പാസ് ചെയ്യുന്നത് തുടരും.
|
||
|
||
```bash
|
||
# എല്ലാ embedding മോഡലുകളും പട്ടികപ്പെടുത്തുക
|
||
GET /v1/embeddings
|
||
```
|
||
|
||
---
|
||
|
||
## ഇമേജ് ജനറേഷൻ
|
||
|
||
```bash
|
||
POST /v1/images/generations
|
||
Authorization: Bearer your-api-key
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"model": "openai/gpt-image-2",
|
||
"prompt": "A beautiful sunset over mountains",
|
||
"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": "# Extracted text..." }],
|
||
"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 ഓതന്റിക്കേഷനും എൻഡ്പോയിന്റ് പരിഹാരവും
|
||
|
||
ചാറ്റ്/ഇമേജ് ട്രാഫിക്കിനായി OmniRoute ഇതിനകം പിന്തുണയ്ക്കുന്ന അതേ Vertex AI ഓതന്റിക്കേഷൻ
|
||
(`open-sse/executors/vertex.ts`) തന്നെയാണ് `vertex-deepseek-ocr` വീണ്ടും ഉപയോഗിക്കുന്നത്: കണക്ഷന്റെ 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/<provider>/<model>
|
||
```
|
||
|
||
ഈ id തിരഞ്ഞെടുക്കുന്നത് (ഉദാ. എല്ലായ്പ്പോഴും ഒരു `thinking` ബ്ലോക്ക് ചേർക്കുന്ന Claude Code കോൺഫിഗിൽ) റീസണിംഗ് അടിച്ചമർത്തിക്കൊണ്ട് യഥാർഥ `<provider>/<model>`-ലേക്ക് തിരികെ റിസോൾവ് ചെയ്യുന്നു — `/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 റൗട്ടറുകൾ എന്നിവ ഉപയോഗിക്കുന്ന JSON-സുരക്ഷിതമായ പ്രൊവൈഡർ പ്ലഗിൻ മാനിഫെസ്റ്റ് തിരികെ നൽകുന്നു. TypeScript പ്രൊവൈഡർ രജിസ്ട്രിയിൽനിന്നാണ് പ്രതികരണം സൃഷ്ടിക്കുന്നത്; OAuth ക്ലയന്റ് രഹസ്യങ്ങൾ, റൺടൈം എൻവയോൺമെന്റ് റെസല്യൂഷൻ, എക്സിക്യൂട്ടർ ഫംഗ്ഷനുകൾ, അഭ്യർത്ഥനാ ഹെഡറുകൾ, അക്കൗണ്ട് ഡാറ്റ എന്നിവ മനഃപൂർവം ഒഴിവാക്കുന്നു.
|
||
|
||
ഒരു sidecar പ്രോസസിന് പുറത്തായി പ്രവർത്തിക്കുകയും
|
||
`open-sse/config/providerPluginManifestRegistry.ts` നേരിട്ട് ഇമ്പോർട്ട് ചെയ്യാൻ കഴിയാതിരിക്കുകയും ചെയ്യുമ്പോൾ ഈ എൻഡ്പോയിന്റ് ഉപയോഗിക്കുക.
|
||
|
||
---
|
||
|
||
## കോംപാറ്റിബിലിറ്റി എൻഡ്പോയിന്റുകൾ
|
||
|
||
| രീതി | പാത്ത് | ഫോർമാറ്റ് |
|
||
| ---- | ----------------------------------------- | ------------------------------------ |
|
||
| POST | `/v1/chat/completions` | OpenAI |
|
||
| POST | `/v1/messages` | Anthropic |
|
||
| POST | `/v1/responses` | OpenAI Responses |
|
||
| POST | `/v1/embeddings` | OpenAI |
|
||
| POST | `/v1/images/generations` | OpenAI Images |
|
||
| POST | `/v1/images/edits` | OpenAI Images (എഡിറ്റ്/ഇൻപെയിന്റ്) |
|
||
| POST | `/v1/videos/generations` | OpenAI-ശൈലിയിലുള്ള വീഡിയോ ജനറേഷൻ |
|
||
| POST | `/v1/music/generations` | OpenAI-ശൈലിയിലുള്ള സംഗീത ജനറേഷൻ |
|
||
| POST | `/v1/audio/transcriptions` | OpenAI Audio (STT) |
|
||
| POST | `/v1/audio/speech` | OpenAI TTS (ഓഡിയോ ബോഡി നൽകുന്നു) |
|
||
| POST | `/v1/rerank` | Cohere/Voyage-ശൈലിയിലുള്ള റീറാങ്ക് |
|
||
| POST | `/v1/classify` | Jina ക്ലാസിഫൈ (`api.jina.ai`) |
|
||
| POST | `/v1/segment` | Jina സെഗ്മെന്റർ (`segment.jina.ai`) |
|
||
| POST | `/v1/moderations` | OpenAI Moderations |
|
||
| GET | `/v1/models` | OpenAI |
|
||
| POST | `/v1/messages/count_tokens` | Anthropic |
|
||
| GET | `/v1beta/models` | Gemini |
|
||
| POST | `/v1beta/models/{...path}` | Gemini generateContent |
|
||
| POST | `/v1/api/chat` | Ollama |
|
||
| GET | `/api/v1/vscode/{token}/` | OpenAI കാറ്റലോഗ് അപരനാമം |
|
||
| GET | `/api/v1/vscode/{token}/models` | OpenAI മോഡലുകളുടെ അപരനാമം |
|
||
| POST | `/api/v1/vscode/{token}/chat/completions` | OpenAI ടോക്കണൈസ്ഡ് അപരനാമം |
|
||
| POST | `/api/v1/vscode/{token}/responses` | OpenAI Responses ടോക്കണൈസ്ഡ് അപരനാമം |
|
||
| POST | `/api/v1/vscode/{token}/api/chat` | Ollama ടോക്കണൈസ്ഡ് അപരനാമം |
|
||
| GET | `/api/v1/vscode/{token}/api/tags` | Ollama tags ടോക്കണൈസ്ഡ് അപരനാമം |
|
||
|
||
എല്ലാ POST റൂട്ടുകളും ഒരേ ഘടനയാണ് പിന്തുടരുന്നത്: `Bearer your-api-key` + Zod സാധൂകരിച്ച JSON ബോഡി (`v1RerankSchema`, `v1ModerationSchema`, `v1AudioSpeechSchema` തുടങ്ങിയവ; `src/shared/validation/schemas.ts` കാണുക). സ്കീമ സാധൂകരണം പരാജയപ്പെട്ടാൽ 4xx തിരികെ നൽകും.
|
||
|
||
`Authorization: Bearer ...` അറ്റാച്ച് ചെയ്യാൻ കഴിയാത്ത ക്ലയന്റുകൾക്കായി, ക്വറി-സ്ട്രിംഗ് കോംപാറ്റിബിലിറ്റി (`?token=...`, `?apiKey=...`, `?api_key=...`, `?key=...`) വഴിയോ താഴെ രേഖപ്പെടുത്തിയിരിക്കുന്ന സമർപ്പിത `/api/v1/vscode/{token}/...` എൻഡ്പോയിന്റുകൾ വഴിയോ URL-ൽ API കീകൾ 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 സെഗ്മെന്റർ
|
||
POST /v1/segment { "content": "...", "return_chunks": true }
|
||
|
||
# Jina സെർച്ച് (s.jina.ai; പ്രൊവൈഡർ അപരനാമങ്ങൾ: jina-search, jina-ai, jina)
|
||
POST /v1/search { "query": "...", "provider": "jina-search" }
|
||
|
||
# മോഡറേഷനുകൾ
|
||
POST /v1/moderations { "model": "omni-moderation-latest", "input": "..." }
|
||
|
||
# TTS — audio/mpeg (അല്ലെങ്കിൽ അഭ്യർത്ഥിച്ച ഫോർമാറ്റ്) ബോഡി നൽകുന്നു
|
||
POST /v1/audio/speech { "model": "openai/tts-1", "input": "Hello", "voice": "alloy" }
|
||
|
||
# ഇമേജ് എഡിറ്റ് (multipart)
|
||
POST /v1/images/edits -F image=@input.png -F prompt="..." -F mask=@mask.png
|
||
|
||
# വീഡിയോ / സംഗീത ജനറേഷൻ (പ്രൊവൈഡർ പ്രിഫിക്സുള്ള മോഡൽ id)
|
||
POST /v1/videos/generations { "model": "runway/gen-3", "prompt": "..." }
|
||
POST /v1/music/generations { "model": "suno/v3.5", "prompt": "..." }
|
||
```
|
||
|
||
### സമർപ്പിത പ്രൊവൈഡർ റൂട്ടുകൾ
|
||
|
||
```bash
|
||
POST /v1/providers/{provider}/chat/completions
|
||
POST /v1/providers/{provider}/embeddings
|
||
POST /v1/providers/{provider}/images/generations
|
||
```
|
||
|
||
പ്രൊവൈഡർ പ്രിഫിക്സ് ഇല്ലെങ്കിൽ അത് സ്വയമേവ ചേർക്കും. പൊരുത്തപ്പെടാത്ത മോഡലുകൾ `400` തിരികെ നൽകും.
|
||
|
||
---
|
||
|
||
## Files 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 കീയ്ക്കും പ്രത്യേകം ഫയലുകൾ സ്കോപ്പ് ചെയ്തിരിക്കുന്നു.
|
||
|
||
---
|
||
|
||
## Batches 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 കീയ്ക്കും പ്രത്യേകം ബാച്ചുകൾ സ്കോപ്പ് ചെയ്തിരിക്കുന്നു.
|
||
|
||
---
|
||
|
||
## Search API
|
||
|
||
വെബ്/സെർച്ച് പ്രൊവൈഡർ അബ്സ്ട്രാക്ഷൻ (Tavily, Brave, Exa, Serper മുതലായവ).
|
||
|
||
| രീതി | പാത്ത് | വിവരണം |
|
||
| ---- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------- |
|
||
| GET | `/v1/search` | കോൺഫിഗർ ചെയ്ത സെർച്ച് പ്രൊവൈഡറുകളും അവയുടെ ശേഷികളും ലിസ്റ്റ് ചെയ്യുക |
|
||
| POST | `/v1/search` | സെർച്ച് ക്വറി പ്രവർത്തിപ്പിക്കുക — `v1SearchSchema` ഉപയോഗിച്ച് ബോഡി സാധൂകരിക്കുന്നു, കാഷിംഗ്/കോഅലെസിംഗ് പിന്തുണയ്ക്കുന്നു |
|
||
| GET | `/v1/search/analytics` | ഓരോ പ്രൊവൈഡറിന്റെയും ഹിറ്റ്/ലേറ്റൻസി/കാഷ് സ്ഥിതിവിവരക്കണക്കുകൾ |
|
||
|
||
**പ്രാമാണീകരണം:** Bearer API കീ (`extractApiKey` + `isValidApiKey`). `enforceApiKeyPolicy` വഴി സെർച്ച് നയം നടപ്പിലാക്കുന്നു.
|
||
|
||
---
|
||
|
||
## Web Fetch API
|
||
|
||
കോൺഫിഗർ ചെയ്ത web-fetch പ്രൊവൈഡർ (Firecrawl, Jina
|
||
Reader, Tavily Extract, TinyFish Fetch, Nimble Extract) വഴി ഒരു URL-ൽനിന്ന് ഉള്ളടക്കം എക്സ്ട്രാക്റ്റ് ചെയ്യുക.
|
||
|
||
| രീതി | പാത്ത് | വിവരണം |
|
||
| ---- | --------------- | ----------------------------------------------------------------------------------------- |
|
||
| POST | `/v1/web/fetch` | ഒരു URL ഫെച്ച്/സ്ക്രേപ്പ് ചെയ്യുന്നു — ബോഡി `v1WebFetchSchema` ഉപയോഗിച്ച് സാധൂകരിക്കുന്നു |
|
||
|
||
**ഓതന്റിക്കേഷൻ:** Bearer API കീ (`extractApiKey` + `isValidApiKey`). `enforceApiKeyPolicy` വഴി പോളിസി നടപ്പാക്കുന്നു.
|
||
|
||
**ക്വോട്ട പരിഗണിക്കുന്ന ഫാൾബാക്ക് (#8297):** വ്യക്തമായ `provider` നൽകിയിട്ടില്ലെങ്കിൽ, പൂൾ
|
||
(`firecrawl` → `jina-reader` → `tavily-search` → `tinyfish` → `nimble-search`) സ്ഥിരമായ
|
||
മുൻഗണനാക്രമത്തിൽ (fill-first) പരിശോധിക്കുന്നു — റേറ്റ്-ലിമിറ്റ് ചെയ്യപ്പെട്ടെങ്കിലും കോൺഫിഗർ ചെയ്തിട്ടുള്ള ഒരു പ്രൊവൈഡർ,
|
||
റിക്വസ്റ്റ് ഉടൻ അവസാനിപ്പിക്കുന്നതിനുപകരം ഒഴിവാക്കപ്പെടുന്നു; കൂടാതെ വീണ്ടും ശ്രമിക്കാവുന്ന/ക്വോട്ടയുമായി ബന്ധപ്പെട്ട അപ്സ്ട്രീം പരാജയം
|
||
(HTTP 429 എല്ലായ്പ്പോഴും; Firecrawl/Tavily/TinyFish എന്നിവയുടെ ക്വോട്ട-ശൈലിയിലുള്ള സൗജന്യ ടയറുകൾക്ക് 402/403 —
|
||
Jina Reader-ന് ബാധകമല്ല, കൂടാതെ സാധാരണ 400 മോശം റിക്വസ്റ്റിന് ഒരിക്കലും ബാധകമല്ല) റിക്വസ്റ്റ് സമയത്ത്
|
||
ഇതുവരെ ശ്രമിച്ചിട്ടില്ലാത്ത അടുത്ത ക്രെഡൻഷ്യലുള്ള പ്രൊവൈഡറിലേക്ക് കടക്കുന്നു. പൂളിലെ എല്ലാ പ്രൊവൈഡറുകളും
|
||
തീർന്നുകഴിഞ്ഞാൽ, മുമ്പുണ്ടായിരുന്ന പൊതുവായ `400`-ന് പകരം എൻഡ്പോയിന്റ് ഒറ്റ `429`
|
||
(`Retry-After` ഹെഡറോടെ) നൽകുന്നു. വ്യക്തമായ `provider` അഭ്യർത്ഥിക്കുമ്പോൾ,
|
||
നിശ്ശബ്ദമായ ഫാൾബാക്ക് **ഉണ്ടാകില്ല** — റേറ്റ്-ലിമിറ്റ് ചെയ്യപ്പെട്ടതോ പരാജയപ്പെട്ടതോ ആയ വ്യക്തമായ
|
||
പ്രൊവൈഡർ അതിന്റെ സ്വന്തം പിശക് പുറത്തുകൊണ്ടുവരുന്നു (റേറ്റ്-ലിമിറ്റ് ചെയ്തിട്ടുണ്ടെങ്കിൽ `429`, അല്ലെങ്കിൽ അപ്സ്ട്രീം
|
||
സ്റ്റാറ്റസ്).
|
||
|
||
---
|
||
|
||
## WebSocket സ്ട്രീമിംഗ്
|
||
|
||
```bash
|
||
GET /v1/ws?handshake=1
|
||
```
|
||
|
||
ഒരു WebSocket അപ്ഗ്രേഡ് ഹാൻഡ്ഷേക്ക് സാധൂകരിക്കുകയും വയർ പ്രോട്ടോക്കോൾ ഉദാഹരണ സന്ദേശങ്ങൾ (`request`, `cancel`) നൽകുകയും ചെയ്യുന്നു. യഥാർത്ഥ WS ഫ്രെയിമുകൾ Next.js റൂട്ട് ടേബിളിന് പുറത്തുള്ള ബണ്ടിൽ ചെയ്ത WS സെർവർ കൈകാര്യം ചെയ്യുന്നു.
|
||
|
||
**ഓതന്റിക്കേഷൻ:** ഹാൻഡ്ഷേക്ക് സമയത്ത് Bearer API കീ.
|
||
|
||
### WebSocket വഴിയുള്ള Responses API (codex മാത്രം)
|
||
|
||
```bash
|
||
# HTTP API-യുടെ അതേ host:port (ഡിഫോൾട്ട് 20128); കണക്ഷൻ അപ്ഗ്രേഡ് ചെയ്യുക:
|
||
wscat -c "ws://localhost:20128/v1/responses?api_key=<OMNIROUTE_API_KEY>"
|
||
# (അല്ലെങ്കിൽ: -H "Authorization: Bearer <OMNIROUTE_API_KEY>")
|
||
|
||
# ആദ്യ ഫ്രെയിം response.create ആയിരിക്കണം:
|
||
{ "type": "response.create", "model": "gpt-5.5", "input": [ { "role": "user", "content": "hi" } ] }
|
||
```
|
||
|
||
Responses-API-over-WebSocket പ്രോക്സി **`codex`-ലേക്ക് മാത്രമായി** ബന്ധിപ്പിച്ചിരിക്കുന്നു (ChatGPT
|
||
ബാക്കെൻഡ്). API/ഡാഷ്ബോർഡിന്റെ അതേ പോർട്ടിൽ `/v1/responses`,
|
||
`/responses`, `/api/v1/responses` എന്നീ പാത്തുകളിൽ ഇത് ലിസൻ ചെയ്യുന്നു. ആദ്യത്തെ `response.create` ഫ്രെയിമിൽ,
|
||
ആന്തരിക `codex-responses-ws` ബ്രിഡ്ജ് വഴി ഇത് ഓതന്റിക്കേറ്റ് ചെയ്യുകയും തയ്യാറാക്കുകയും, ഒരു
|
||
codex OAuth കണക്ഷൻ തിരഞ്ഞെടുക്കുകയും, `wreq-js` ട്രാൻസ്പോർട്ട് വഴി `wss://chatgpt.com/backend-api/codex/responses`
|
||
എന്നതിലേക്ക് ടണൽ ചെയ്യുകയും ചെയ്യുന്നു. **codex അല്ലാത്ത മോഡലുകൾ നിരസിക്കപ്പെടും** (`codex_ws_provider_required`).
|
||
ക്വോട്ട-ഷെയർ റൂട്ടിങ്ങിന് `model: "qtSd/<group>/codex/<model>"` ഉപയോഗിക്കുക. ഇത്
|
||
`app/server-ws.mjs` + `scripts/dev/responses-ws-proxy.mjs` + `src/app/api/internal/codex-responses-ws/route.ts`
|
||
എന്നിവയിൽ നടപ്പാക്കിയിരിക്കുന്നു.
|
||
|
||
**ഓതന്റിക്കേഷൻ:** ഹാൻഡ്ഷേക്ക് സമയത്ത് Bearer API കീ. ബണ്ടിൽ ചെയ്ത HTTP സെർവർ (`server-ws.mjs`)
|
||
സജീവ എൻട്രിപോയിന്റായിരിക്കണം (`app/server-ws.mjs` നിലവിലുണ്ടെങ്കിൽ ഡിഫോൾട്ടായി അങ്ങനെയാണ്).
|
||
|
||
#### മോഡൽ id: ലളിതമായ ChatGPT id ഉപയോഗിക്കുക (`codex/` പ്രിഫിക്സ് ഇല്ലാതെ)
|
||
|
||
`supports_websockets = true` ആയിരിക്കുമ്പോൾ OpenAI **Codex CLI** ക്ലയന്റ്-സൈഡിൽ മോഡൽ നാമം
|
||
സാധൂകരിക്കുകയും `codex/gpt-5.5` പോലുള്ള **പ്രൊവൈഡർ-പ്രിഫിക്സ് ചെയ്ത ids നിരസിക്കുകയും ചെയ്യുന്നു**
|
||
(`The 'codex/gpt-5.5' model is not supported when using Codex with
|
||
a ChatGPT account`). ലളിതമായ id അയയ്ക്കുക (ഉദാ. `gpt-5.5`). OmniRoute-ന്റെ ബ്രിഡ്ജ്
|
||
codex-ന് മാത്രമുള്ളതിനാൽ, അപ്സ്ട്രീമിലേക്ക് ടണൽ ചെയ്യുന്നതിന് മുമ്പ് ലളിതമായ id-യെ codex മോഡലായി
|
||
(`resolveCodexWsModelInfo`) വീണ്ടും റിസോൾവ് ചെയ്യുന്നു — ലളിതമായ
|
||
`gpt-5.5` സാധാരണയായി HTTP വഴി മറ്റൊരു പ്രൊവൈഡറിലേക്ക് റൂട്ട് ചെയ്യുമെങ്കിലും.
|
||
|
||
#### OpenAI Codex CLI കോൺഫിഗർ ചെയ്യൽ
|
||
|
||
`~/.codex/config.toml`-ൽ WebSocket പിന്തുണയുള്ള ഒരു കസ്റ്റം പ്രൊവൈഡർ ചേർത്ത് Codex CLI-യെ
|
||
OmniRoute-ലേക്ക് നയിക്കുക (നിലവിലുള്ള കോൺഫിഗിൽ മാറ്റം വരുത്താതിരിക്കാൻ വേറിട്ട `CODEX_HOME` ഉപയോഗിക്കുക):
|
||
|
||
```toml
|
||
model = "gpt-5.5" # ലളിതമായ id — "codex/gpt-5.5" അല്ല
|
||
model_provider = "omniroute"
|
||
|
||
[model_providers.omniroute]
|
||
name = "OmniRoute (WS)"
|
||
base_url = "http://localhost:20128/v1" # അവസാനത്തിൽ സ്ലാഷ് പാടില്ല; WS URL ഇതിൽനിന്ന് നിർണ്ണയിക്കുന്നു (പ്രൊഡക്ഷനിൽ https/wss ഉപയോഗിക്കുക)
|
||
wire_api = "responses" # Feb 2026 മുതൽ പിന്തുണയ്ക്കുന്ന ഏക മൂല്യം
|
||
supports_websockets = true # Responses-over-WS ട്രാൻസ്പോർട്ട് സജ്ജമാക്കുന്നു
|
||
env_key = "OMNIROUTE_API_KEY" # OmniRoute API കീ (Bearer) സൂക്ഷിക്കുന്നു
|
||
```
|
||
|
||
```bash
|
||
export OMNIROUTE_API_KEY=sk-... # ഒരു OmniRoute API കീ (REQUIRE_API_KEY=false ആണെങ്കിൽ ഏതെങ്കിലും കീ)
|
||
codex exec "Responda apenas: PONG"
|
||
```
|
||
|
||
CLI, `base_url + /responses` എന്നതിനെ WebSocket ആയി അപ്ഗ്രേഡ് ചെയ്യുകയും OmniRoute അതിനെ
|
||
തിരഞ്ഞെടുത്ത codex OAuth കണക്ഷനിലേക്ക് ടണൽ ചെയ്യുകയും ചെയ്യുന്നു. ലോക്കൽ സെർവറിനെതിരെ എൻഡ്-ടു-എൻഡ്
|
||
സാധൂകരിച്ചിട്ടുണ്ട്: ChatGPT `codex.rate_limits` + `response.created` നൽകുകയും
|
||
കംപ്ലീഷൻ സ്ട്രീം ചെയ്യുകയും ചെയ്യുന്നു.
|
||
|
||
---
|
||
|
||
## ക്വോട്ടകളും പ്രശ്ന റിപ്പോർട്ടിംഗും
|
||
|
||
| രീതി | പാത | വിവരണം |
|
||
| ---- | ------------------- | ------------------------------------------------------------------------------------------------------ |
|
||
| GET | `/v1/quotas/check` | രജിസ്റ്റർ ചെയ്ത കീ നൽകുന്നതിന് മുമ്പ് ഒരു `provider` + `accountId`-ന്റെ ക്വോട്ട മുൻകൂട്ടി സാധൂകരിക്കുക |
|
||
| POST | `/v1/issues/report` | ക്വോട്ട/കീ നൽകൽ പരാജയം GitHub-ലേക്ക് റിപ്പോർട്ട് ചെയ്യുക (`GITHUB_ISSUES_REPO` + ടോക്കൺ ആവശ്യമാണ്) |
|
||
|
||
**ഓതന്റിക്കേഷൻ:** Bearer API കീ (`isAuthenticated`).
|
||
|
||
---
|
||
|
||
## സ്വയം സേവന ഉപയോഗം (`/api/usage/om-usage`)
|
||
|
||
ഏത് API കീയ്ക്കും **അതിന്റെ സ്വന്തം** ഉപയോഗവും ക്വോട്ടകളും വായിക്കാനാകും — മാനേജ്മെന്റ് ഓതന്റിക്കേഷൻ ആവശ്യമില്ല. ഒരു കീ ഉടമയുടെ ചെലവ് കാണിക്കാൻ
|
||
ക്ലയന്റ് (CLI, OmniCopilot പാനൽ) ഉപയോഗിക്കുന്ന എൻഡ്പോയിന്റാണിത്.
|
||
|
||
```bash
|
||
# ടെക്സ്റ്റ് രൂപം (ചരിത്രപരമായ കരാർ — ടെർമിനലിനായുള്ള പ്ലെയിൻ ടെക്സ്റ്റ്)
|
||
curl -H "Authorization: Bearer <your-api-key>" \
|
||
http://localhost:20128/api/usage/om-usage
|
||
|
||
# ഘടനാപരമായ രൂപം — ഒരു UI ഉപയോഗിക്കുന്നത്
|
||
curl -H "Authorization: Bearer <your-api-key>" \
|
||
"http://localhost:20128/api/usage/om-usage?format=json"
|
||
```
|
||
|
||
കീയിൽ **`allowUsageCommand`** പ്രവർത്തനക്ഷമമാക്കിയിരിക്കണം (ഡിഫോൾട്ടായി ഓഫാണ് — ഡാഷ്ബോർഡിലെ API-കീ
|
||
മാനേജർ ഓരോ കീയ്ക്കും പ്രത്യേകം ഇത് മാറ്റുന്നു). ഇത് ഇല്ലെങ്കിൽ എൻഡ്പോയിന്റ് `403` നൽകും.
|
||
|
||
നിരസിക്കപ്പെട്ട സാഹചര്യത്തിൽ കോളർ ഒരു ഡാറ്റാ ഫീൽഡ് വായിക്കാതിരിക്കാനായി `?format=json` വ്യത്യാസം തിരിച്ചറിയാവുന്ന ഒരു ഘടന നൽകുന്നു.
|
||
വിജയിക്കുമ്പോൾ:
|
||
|
||
```jsonc
|
||
{
|
||
"allowed": true,
|
||
// ഓരോ കീയ്ക്കുമുള്ള ഉപയോഗപരിധികൾ (പ്രതിദിന/പ്രതിവാര USD) കീ തിരഞ്ഞെടുക്കുമ്പോൾ മാത്രം ഉണ്ടായിരിക്കും:
|
||
"personal": {
|
||
"dailySpentUsd": 1.25,
|
||
"dailyLimitUsd": 5,
|
||
"dailyResetAtIso": "…",
|
||
"weeklySpentUsd": 8,
|
||
"weeklyLimitUsd": 20,
|
||
"weeklyResetAtIso": "…" /* … */,
|
||
},
|
||
// തിരഞ്ഞെടുത്ത പ്രൊവൈഡറിന്റെ ക്വോട്ട സ്നാപ്പ്ഷോട്ട്, അല്ലെങ്കിൽ ഇതുവരെ ഒന്നും കാഷ് ചെയ്തിട്ടില്ലെങ്കിൽ null:
|
||
"provider": {
|
||
"connectionId": "…",
|
||
"provider": "claude",
|
||
"plan": "…",
|
||
"quotas": {/* … */},
|
||
},
|
||
// എല്ലാ കണക്ഷനുകളുടെയും സ്നാപ്പ്ഷോട്ട്, അതുവഴി ഒരു UI-ക്ക് നിരവധി പ്രൊവൈഡറുകളെ അടുത്തടുത്തായി റെൻഡർ ചെയ്യാനാകും:
|
||
"providers": [
|
||
{ "connectionId": "…", "provider": "claude" /* … */ },
|
||
{ "provider": "codex" /* … */ },
|
||
],
|
||
}
|
||
```
|
||
|
||
നിരസിക്കുമ്പോൾ (`401` അസാധുവായ കീ / `403` അനുവദനീയമല്ല) അതേ റൂട്ട്
|
||
`{ "allowed": false, "error": { "message": "…" } }` നൽകുന്നു — നിലവിലുണ്ടെങ്കിലും ശൂന്യമായ `personal`/`provider`
|
||
(കീ അനുവദനീയമാണ്, ഇതുവരെ വിവരമൊന്നും ലഭിച്ചിട്ടില്ല) നിരസിക്കലിൽനിന്ന് വ്യത്യസ്തമായ ഒരു അവസ്ഥയാണ്; JSON രൂപം മാത്രമാണ്
|
||
അവയെ വേർതിരിച്ചറിയുന്നത്.
|
||
|
||
**ഓതന്റിക്കേഷൻ:** കോളറുടെ സ്വന്തം Bearer API കീ, `isValidApiKey` ഉപയോഗിച്ച് സാധൂകരിച്ചത് — ഇത്
|
||
`requireManagementAuth`-ന്റെ പിന്നിൽ തുടരുന്ന മാനേജ്മെന്റ് ഇന്റർഫേസ് (`/api/keys/…`) _അല്ല_.
|
||
|
||
---
|
||
|
||
## സെമാന്റിക് കാഷ്
|
||
|
||
```bash
|
||
# കാഷ് സ്ഥിതിവിവരക്കണക്കുകൾ നേടുക
|
||
GET /api/cache/stats
|
||
|
||
# എല്ലാ കാഷുകളും മായ്ക്കുക
|
||
DELETE /api/cache/stats
|
||
```
|
||
|
||
പ്രതികരണ ഉദാഹരണം:
|
||
|
||
```json
|
||
{
|
||
"semanticCache": {
|
||
"memorySize": 42,
|
||
"memoryMaxSize": 500,
|
||
"dbSize": 128,
|
||
"hitRate": 0.65
|
||
},
|
||
"idempotency": {
|
||
"activeKeys": 3,
|
||
"windowMs": 5000
|
||
}
|
||
}
|
||
```
|
||
|
||
### ലേറ്റൻസിയിലുള്ള സ്വാധീനം
|
||
|
||
ഒരു സെമാന്റിക് കാഷ് HIT പ്രതികരണം **അപ്സ്ട്രീം കോൾ ഇല്ലാതെ**
|
||
കാഷിൽനിന്ന് നൽകുന്നതിനാൽ, റിപ്പോർട്ട് ചെയ്യുന്ന `X-OmniRoute-Response-Latency` ഏതാണ്ട് പൂജ്യമായിരിക്കും
|
||
(യഥാർത്ഥ അപ്സ്ട്രീം ലേറ്റൻസി പരിഗണിക്കാതെ). ലേറ്റൻസിയോട് സംവേദനക്ഷമമായ ക്ലയന്റുകൾ
|
||
(ബെഞ്ച്മാർക്കിംഗ്, p50/p99 നിരീക്ഷണം) `X-OmniRoute-Cache-Latency`
|
||
പ്രതികരണ ഹെഡർ പരിശോധിക്കണം:
|
||
|
||
| മൂല്യം | അർത്ഥം |
|
||
| ----------- | --------------------------------------------------------------- |
|
||
| `synthetic` | പ്രതികരണം കാഷിൽനിന്ന് നൽകി; ലേറ്റൻസി യഥാർത്ഥ അപ്സ്ട്രീം സമയമല്ല |
|
||
| _(ഇല്ല)_ | യഥാർത്ഥ അപ്സ്ട്രീം കോളിൽനിന്നുള്ള പ്രതികരണം |
|
||
|
||
### ഓരോ കീയ്ക്കുമുള്ള കാഷ് ബൈപാസ്
|
||
|
||
`cacheDefaultMode` വഴി API കീകൾക്ക് സെമാന്റിക് കാഷ് റീഡുകൾ ഒഴിവാക്കാം:
|
||
|
||
| മൂല്യം | പ്രവർത്തനം |
|
||
| -------- | --------------------------------------------------------------------------- |
|
||
| `legacy` | സാധാരണ കാഷ് പ്രവർത്തനം (ഡിഫോൾട്ട്) |
|
||
| `bypass` | കാഷ് ലുക്കപ്പ് പൂർണ്ണമായി ഒഴിവാക്കുക; എല്ലായ്പ്പോഴും അപ്സ്ട്രീം ഉപയോഗിക്കുക |
|
||
|
||
കീ സൃഷ്ടിക്കുമ്പോൾ (`POST /api/keys`) സജ്ജമാക്കുക, അല്ലെങ്കിൽ (`PATCH /api/keys/[id]`) അപ്ഡേറ്റ് ചെയ്യുക:
|
||
|
||
```json
|
||
{ "cacheDefaultMode": "bypass" }
|
||
```
|
||
|
||
### ഓരോ അഭ്യർത്ഥനയ്ക്കുമുള്ള ബൈപാസ്
|
||
|
||
കീ ക്രമീകരണങ്ങൾ പരിഗണിക്കാതെ ഏത് അഭ്യർത്ഥനയ്ക്കും കാഷ് ബൈപാസ് ചെയ്യാനാകും:
|
||
|
||
```
|
||
X-OmniRoute-No-Cache: true
|
||
```
|
||
|
||
---
|
||
|
||
## ഡാഷ്ബോർഡും മാനേജ്മെന്റും
|
||
|
||
മാനേജ്മെന്റ് റൂട്ടുകൾ (പൊതു auth/login ഒഴികെയുള്ള `/api/*`) സാധാരണ inference API കീകൾ ഉപയോഗിച്ച് അംഗീകരിക്കപ്പെടുന്നില്ല. ക്രെഡൻഷ്യൽ വിഭാഗങ്ങൾ, സ്കോപ്പുകൾ, curl ഉദാഹരണങ്ങൾ എന്നിവയ്ക്കായി:
|
||
[മാനേജ്മെന്റ് ഓതന്റിക്കേഷൻ](../guides/MANAGEMENT-AUTH.md).
|
||
|
||
### ഓതന്റിക്കേഷൻ
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| ----------------------------- | ------- | --------------------- |
|
||
| `/api/auth/login` | POST | ലോഗിൻ ചെയ്യുക |
|
||
| `/api/auth/logout` | POST | ലോഗൗട്ട് ചെയ്യുക |
|
||
| `/api/settings/require-login` | GET/PUT | ലോഗിൻ ആവശ്യകത മാറ്റുക |
|
||
|
||
### പ്രൊവൈഡർ മാനേജ്മെന്റ്
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| ---------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
||
| `/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 ഫ്ലോകൾ
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| -------------------------------- | -------- | ------------------------- |
|
||
| `/api/oauth/[provider]/[action]` | വിവിധതരം | പ്രൊവൈഡർ-നിർദ്ദിഷ്ട OAuth |
|
||
|
||
### റൂട്ടിംഗും കോൺഫിഗും
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| --------------------- | -------- | ---------------------------------------------- |
|
||
| `/api/models/alias` | GET/POST | മോഡൽ അപരനാമങ്ങൾ |
|
||
| `/api/models/catalog` | GET | പ്രൊവൈഡറും തരവും അനുസരിച്ചുള്ള എല്ലാ മോഡലുകളും |
|
||
| `/api/combos*` | വിവിധതരം | കോംബോ മാനേജ്മെന്റ് |
|
||
| `/api/keys*` | വിവിധതരം | API കീ മാനേജ്മെന്റ് |
|
||
| `/api/pricing` | GET | മോഡൽ നിരക്കുകൾ |
|
||
|
||
### ഉപയോഗവും അനലിറ്റിക്സും
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| -------------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| `/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) |
|
||
|
||
### ക്രമീകരണങ്ങൾ
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| ------------------------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| `/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 | ചിന്തിക്കൽ/യുക്തിചിന്ത **അഭ്യർത്ഥന** റീറൈറ്റ് മോഡ് (passthrough / auto-strip / custom / adaptive). കംപ്രഷനിൽ നിന്ന് സ്വതന്ത്രമാണ്. [THINKING_BUDGET.md](../guides/THINKING_BUDGET.md) കാണുക. |
|
||
| `/api/settings/system-prompt` | GET/PUT | ആഗോള സിസ്റ്റം പ്രോംപ്റ്റ് |
|
||
| `/api/settings/compression` | GET/PUT | ആഗോള കംപ്രഷൻ കോൺഫിഗ് |
|
||
| `/api/settings/purge-request-history` | POST | അഭ്യർത്ഥനാ ലോഗ് വരികളും പ്രാദേശിക call-log ആർട്ടിഫാക്റ്റുകളും മായ്ക്കുക |
|
||
|
||
### കോൺടെക്സ്റ്റും കംപ്രഷനും
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| -------------------------------------- | -------------- | ------------------------------------------------------------------------------------------------ |
|
||
| `/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 | കംപ്രഷൻ അനലിറ്റിക്സ് അപരനാമം |
|
||
|
||
### നിരീക്ഷണം
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| ------------------------------------ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| `/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`, അവസാന ഉപയോഗ സമയം (പുനരാരംഭിക്കുമ്പോൾ റീസെറ്റ് ചെയ്യും; മാനേജ്മെന്റ് auth) |
|
||
| `/api/modality-bridge/video/runtime` | GET | മാനേജ്മെന്റ് auth/probe-ന് മുമ്പുള്ള കർശനമായ വിശ്വസനീയ-loopback പരിശോധന; ശുദ്ധീകരിച്ച FFmpeg/ffprobe ലഭ്യതയും പതിപ്പുകളും (no-store) |
|
||
| `/api/modality-bridge/video/extract` | POST | ആന്തരികമായി ഓതന്റിക്കേറ്റ് ചെയ്ത വിശ്വസനീയ-loopback ബൈറ്റ് ബ്രോക്കർ; 50 MiB ഇൻപുട്ട്, പരിധിയിട്ട ക്യൂ/32 MiB ഔട്ട്പുട്ട്, `503` ശേഷി, `499` വിച്ഛേദനം, `504` സമയപരിധി; ഇതൊരു പൊതു അപ്ലോഡ് API അല്ല |
|
||
|
||
### ബാക്കപ്പും എക്സ്പോർട്ട്/ഇംപോർട്ടും
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| --------------------------- | ------ | -------------------------------------------------------- |
|
||
| `/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 ആർക്കൈവായി ഡൗൺലോഡ് ചെയ്യുക |
|
||
|
||
### ക്ലൗഡ് സിങ്ക്
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| ---------------------- | -------- | --------------------------- |
|
||
| `/api/sync/cloud` | വിവിധതരം | ക്ലൗഡ് സിങ്ക് പ്രവർത്തനങ്ങൾ |
|
||
| `/api/sync/initialize` | POST | സിങ്ക് ആരംഭിക്കുക |
|
||
| `/api/cloud/*` | വിവിധതരം | ക്ലൗഡ് മാനേജ്മെന്റ് |
|
||
|
||
### ടണലുകൾ
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| -------------------------- | ------ | ------------------------------------------------------------------------------------------------------ |
|
||
| `/api/tunnels/cloudflared` | GET | ഡാഷ്ബോർഡിനായി Cloudflare Quick Tunnel ഇൻസ്റ്റാൾ/runtime നില വായിക്കുക |
|
||
| `/api/tunnels/cloudflared` | POST | Cloudflare Quick Tunnel പ്രവർത്തനക്ഷമമാക്കുക അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുക (`action=enable/disable`) |
|
||
| `/api/tunnels/ngrok` | GET | ഡാഷ്ബോർഡിനായി ngrok Tunnel runtime നില വായിക്കുക |
|
||
| `/api/tunnels/ngrok` | POST | ngrok Tunnel പ്രവർത്തനക്ഷമമാക്കുക അല്ലെങ്കിൽ പ്രവർത്തനരഹിതമാക്കുക (`action=enable/disable`) |
|
||
|
||
### CLI ഉപകരണങ്ങൾ
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| ---------------------------------- | ------ | ------------------- |
|
||
| `/api/cli-tools/claude-settings` | GET | Claude CLI നില |
|
||
| `/api/cli-tools/codex-settings` | GET | Codex CLI നില |
|
||
| `/api/cli-tools/droid-settings` | GET | Droid CLI നില |
|
||
| `/api/cli-tools/openclaw-settings` | GET | OpenClaw CLI നില |
|
||
| `/api/cli-tools/runtime/[toolId]` | GET | പൊതുവായ CLI runtime |
|
||
|
||
CLI പ്രതികരണങ്ങളിൽ ഇവ ഉൾപ്പെടുന്നു: `installed`, `runnable`, `command`, `commandPath`, `runtimeMode`, `reason`.
|
||
|
||
### ACP ഏജന്റുകൾ
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| ----------------- | ------ | --------------------------------------------------------------------------------- |
|
||
| `/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) എന്നിവ ഉൾപ്പെടുന്നു.
|
||
|
||
### പ്രതിരോധശേഷിയും നിരക്ക് പരിധികളും
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| --------------------------------- | --------- | ----------------------------------------------------------------------------------------------------------------- |
|
||
| `/api/resilience` | GET/PATCH | അഭ്യർത്ഥനാ ക്യൂ, കണക്ഷൻ cooldown, പ്രൊവൈഡർ breaker, കാത്തിരിപ്പ് ക്രമീകരണങ്ങൾ എന്നിവ നേടുക/അപ്ഡേറ്റ് ചെയ്യുക |
|
||
| `/api/resilience/reset` | POST | പ്രൊവൈഡർ circuit breaker-കൾ റീസെറ്റ് ചെയ്യുക |
|
||
| `/api/resilience/model-cooldowns` | GET | ശേഷിക്കുന്ന സമയം അനുസരിച്ച് ക്രമീകരിച്ച സജീവമായ ഓരോ-(provider, connection, model) ലോക്കൗട്ടുകളും ലിസ്റ്റ് ചെയ്യുക |
|
||
| `/api/resilience/model-cooldowns` | DELETE | മോഡൽ ലോക്കൗട്ട് മായ്ക്കുക — body `{provider, model}` അല്ലെങ്കിൽ എല്ലാം മായ്ക്കാൻ `{all: true}` |
|
||
| `/api/rate-limits` | GET | ഓരോ അക്കൗണ്ടിലെയും നിരക്ക് പരിധി നില |
|
||
| `/api/rate-limit` | GET | ആഗോള നിരക്ക് പരിധി കോൺഫിഗറേഷൻ |
|
||
|
||
> നാല് `/api/resilience/*` റൂട്ടുകൾക്കും **മാനേജ്മെന്റ് auth** (`requireManagementAuth`) ആവശ്യമാണ്. പ്രൊവൈഡർ breaker, കണക്ഷൻ cooldown, മോഡൽ lockout എന്നിവയുടെ പൂർണ്ണ വിശദീകരണത്തിന് [പ്രതിരോധശേഷി (വിപുലീകരിച്ചത്)](#resilience-extended) കാണുക.
|
||
|
||
### മൂല്യനിർണ്ണയങ്ങൾ
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| ------------ | -------- | --------------------------------------------------------------------------- |
|
||
| `/api/evals` | GET/POST | മൂല്യനിർണ്ണയ സ്യൂട്ടുകൾ ലിസ്റ്റ് ചെയ്യുക / മൂല്യനിർണ്ണയം പ്രവർത്തിപ്പിക്കുക |
|
||
|
||
### നയങ്ങൾ
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| --------------- | --------------- | ------------------------------- |
|
||
| `/api/policies` | GET/POST/DELETE | റൂട്ടിംഗ് നയങ്ങൾ മാനേജ് ചെയ്യുക |
|
||
|
||
### അനുപാലനം
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| --------------------------- | ------ | ------------------------------------ |
|
||
| `/api/compliance/audit-log` | GET | അനുപാലന ഓഡിറ്റ് ലോഗ് (അവസാന N എണ്ണം) |
|
||
|
||
### v1beta (Gemini-അനുയോജ്യം)
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| -------------------------- | ------ | ------------------------------------------ |
|
||
| `/v1beta/models` | GET | Gemini ഫോർമാറ്റിൽ മോഡലുകൾ ലിസ്റ്റ് ചെയ്യുക |
|
||
| `/v1beta/models/{...path}` | POST | Gemini `generateContent` endpoint |
|
||
|
||
നേറ്റീവ് Gemini SDK അനുയോജ്യത പ്രതീക്ഷിക്കുന്ന ക്ലയന്റുകൾക്കായി ഈ endpoint-കൾ Gemini API ഫോർമാറ്റിനെ പ്രതിഫലിപ്പിക്കുന്നു.
|
||
|
||
### ആന്തരിക / സിസ്റ്റം API-കൾ
|
||
|
||
| Endpoint | Method | വിവരണം |
|
||
| ------------------------ | ------ | ------------------------------------------------------------- |
|
||
| `/api/init` | GET | ആപ്ലിക്കേഷൻ ആരംഭ പരിശോധന (ആദ്യ പ്രവർത്തനത്തിൽ ഉപയോഗിക്കുന്നു) |
|
||
| `/api/tags` | GET | Ollama-അനുയോജ്യ മോഡൽ ടാഗുകൾ (Ollama ക്ലയന്റുകൾക്കായി) |
|
||
| `/api/restart` | POST | ക്രമാനുസൃത സെർവർ പുനരാരംഭം ട്രിഗർ ചെയ്യുക |
|
||
| `/api/shutdown` | POST | ക്രമാനുസൃത സെർവർ ഷട്ട്ഡൗൺ ട്രിഗർ ചെയ്യുക |
|
||
| `/api/system/env/repair` | POST | OAuth പ്രൊവൈഡർ പരിസ്ഥിതി വേരിയബിളുകൾ നന്നാക്കുക |
|
||
|
||
> **കുറിപ്പ്:** ഈ endpoint-കൾ സിസ്റ്റം ആന്തരികമായി അല്ലെങ്കിൽ 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/…`). മറ്റൊരു വെണ്ടറിന്റെ
|
||
മോഡൽ വീണ്ടും എക്സ്പോർട്ട് ചെയ്യുന്ന ഗേറ്റ്വേകൾ യോഗ്യതയുള്ള ഒരു ഐഡി ഉപയോഗിക്കുന്നു
|
||
(`openrouter/deepgram/nova-3`).
|
||
|
||
**അഭ്യർത്ഥന:**
|
||
|
||
```bash
|
||
curl -X POST http://localhost:20128/v1/audio/transcriptions \
|
||
-H "Authorization: Bearer your-api-key" \
|
||
-F "file=@recording.mp3" \
|
||
-F "model=openai/whisper-1"
|
||
```
|
||
|
||
**പ്രതികരണം:**
|
||
|
||
```json
|
||
{
|
||
"text": "Hello, this is the transcribed audio content.",
|
||
"task": "transcribe",
|
||
"language": "en",
|
||
"duration": 12.5
|
||
}
|
||
```
|
||
|
||
**ഉദാഹരണ മോഡൽ ഐഡികൾ:** `openai/whisper-1` (ഒരു OpenAI കീ ആവശ്യമാണ്),
|
||
`openrouter/deepgram/nova-3` (ഒരു OpenRouter കീ ആവശ്യമാണ്),
|
||
`deepgram/nova-3` (ഒരു നേറ്റീവ് Deepgram കീ ആവശ്യമാണ്). യോഗ്യതാപ്രത്യയമില്ലാത്ത
|
||
`deepgram/nova-3` അഭ്യർത്ഥന OpenRouter ഉപയോഗിക്കില്ല.
|
||
|
||
**പിന്തുണയ്ക്കുന്ന ഫോർമാറ്റുകൾ:** `mp3`, `wav`, `m4a`, `flac`, `ogg`, `webm`.
|
||
|
||
---
|
||
|
||
## Ollama അനുയോജ്യത
|
||
|
||
Ollama-യുടെ API ഫോർമാറ്റ് ഉപയോഗിക്കുന്ന ക്ലയന്റുകൾക്കായി:
|
||
|
||
```bash
|
||
# ചാറ്റ് എൻഡ്പോയിന്റ് (Ollama ഫോർമാറ്റ്)
|
||
POST /v1/api/chat
|
||
|
||
# മോഡൽ ലിസ്റ്റിംഗ് (Ollama ഫോർമാറ്റ്)
|
||
GET /api/tags
|
||
```
|
||
|
||
അഭ്യർത്ഥനകൾ Ollama ഫോർമാറ്റിനും ആന്തരിക ഫോർമാറ്റുകൾക്കും ഇടയിൽ സ്വയമേവ പരിവർത്തനം ചെയ്യപ്പെടുന്നു.
|
||
|
||
## ടോക്കണൈസ് ചെയ്ത VS Code / ഹെഡറില്ലാത്ത അപരനാമങ്ങൾ
|
||
|
||
ഒരു ഇന്റഗ്രേഷന് `Authorization` ഹെഡർ ചേർക്കാൻ കഴിയാതിരിക്കുകയും അടിസ്ഥാന URL-ൽ API കീ ഉൾപ്പെടുത്തേണ്ടിവരികയും ചെയ്യുമ്പോൾ ഈ അപരനാമങ്ങൾ ഉപയോഗിക്കുക.
|
||
|
||
```bash
|
||
# OpenAI-ശൈലിയിലുള്ള കാറ്റലോഗ് അപരനാമം
|
||
GET /api/v1/vscode/{token}/
|
||
GET /api/v1/vscode/{token}/models
|
||
|
||
# OpenAI-ശൈലിയിലുള്ള ചാറ്റ് അപരനാമങ്ങൾ
|
||
POST /api/v1/vscode/{token}/chat/completions
|
||
POST /api/v1/vscode/{token}/responses
|
||
|
||
# Ollama-ശൈലിയിലുള്ള അപരനാമങ്ങൾ
|
||
POST /api/v1/vscode/{token}/api/chat
|
||
GET /api/v1/vscode/{token}/api/tags
|
||
```
|
||
|
||
ഉദാഹരണം:
|
||
|
||
```bash
|
||
curl https://your-host.example/api/v1/vscode/YOUR_API_KEY/models
|
||
curl -X POST https://your-host.example/api/v1/vscode/YOUR_API_KEY/chat/completions \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"model":"auto","messages":[{"role":"user","content":"hello"}]}'
|
||
```
|
||
|
||
കുറിപ്പുകൾ:
|
||
|
||
- ടോക്കണൈസ് ചെയ്ത അപരനാമങ്ങൾ `/v1/*`, `/api/tags` എന്നിവയുടെ അതേ ഹാൻഡ്ലറുകൾ വീണ്ടും ഉപയോഗിക്കുന്നു; പ്രതികരണ ഘടനകൾ മാറ്റമില്ലാതെ തുടരും.
|
||
- ക്ലയന്റ് ഇഷ്ടാനുസൃത ഹെഡറുകൾ പിന്തുണയ്ക്കുമ്പോഴെല്ലാം `Authorization: Bearer ...` ഉപയോഗിക്കുന്നതിന് മുൻഗണന നൽകുക.
|
||
- URL അടിസ്ഥാനമാക്കിയുള്ള ടോക്കണുകൾ റിവേഴ്സ്-പ്രോക്സി ലോഗുകളിലും ബ്രൗസർ ചരിത്രത്തിലും OmniRoute-ന് പുറത്തുള്ള ടെലിമെട്രിയിലും പ്രത്യക്ഷപ്പെട്ടേക്കാം. അവയെ ഡിഫോൾട്ട് ഓതന്റിക്കേഷൻ രീതിയായല്ല, അനുയോജ്യതയ്ക്കുള്ള ഒരു ഓപ്ഷനായി പരിഗണിക്കുക.
|
||
|
||
---
|
||
|
||
## ടെലിമെട്രി
|
||
|
||
```bash
|
||
# ലേറ്റൻസി ടെലിമെട്രി സംഗ്രഹം നേടുക (ഓരോ പ്രൊവൈഡറിനും p50/p95/p99)
|
||
GET /api/telemetry/summary
|
||
```
|
||
|
||
**പ്രതികരണം:**
|
||
|
||
```json
|
||
{
|
||
"providers": {
|
||
"claudeCode": { "p50": 245, "p95": 890, "p99": 1200, "count": 150 },
|
||
"github": { "p50": 180, "p95": 620, "p99": 950, "count": 320 }
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## ബജറ്റ്
|
||
|
||
```bash
|
||
# എല്ലാ API കീകളുടെയും ബജറ്റ് നില നേടുക
|
||
GET /api/usage/budget
|
||
|
||
# ഒരു ബജറ്റ് സജ്ജമാക്കുക അല്ലെങ്കിൽ അപ്ഡേറ്റ് ചെയ്യുക
|
||
POST /api/usage/budget
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"apiKeyId": "key-123",
|
||
"dailyLimitUsd": 5.00,
|
||
"weeklyLimitUsd": 30.00,
|
||
"monthlyLimitUsd": 100.00,
|
||
"warningThreshold": 0.8,
|
||
"resetInterval": "monthly"
|
||
}
|
||
```
|
||
|
||
> **സ്കീമ കുറിപ്പുകൾ** (`setBudgetSchema`): `apiKeyId` നിർബന്ധമാണ്; `dailyLimitUsd`, `weeklyLimitUsd`, അല്ലെങ്കിൽ `monthlyLimitUsd` എന്നിവയിൽ കുറഞ്ഞത് ഒരെണ്ണമെങ്കിലും പൂജ്യത്തേക്കാൾ കൂടുതലായിരിക്കണം. ഐച്ഛിക ഫീൽഡുകൾ: `warningThreshold` (0–1), `resetInterval` (`daily` | `weekly` | `monthly`), `resetTime` (`HH:MM`). പഴയ `{keyId, limit, period}` ഘടന `400 Bad Request` മടക്കി നൽകുന്നു.
|
||
|
||
## ടോക്കൺ പരിധികൾ
|
||
|
||
ഓരോ API കീയ്ക്കുമുള്ള **ടോക്കൺ** ബജറ്റുകൾ (മുകളിലുള്ള USD-അടിസ്ഥാന ബജറ്റിൽ നിന്ന് വ്യത്യസ്തമാണ്). അഭ്യർത്ഥനാ പാതയിൽത്തന്നെ ഇത് നടപ്പാക്കുന്നു: ഒരു കീയുടെ നിലവിലെ വിൻഡോയിലെ ഉപയോഗം അതിന്റെ പരിധിയിലെത്തുമ്പോൾ, അഭ്യർത്ഥനകൾ `429 Too Many Requests` ഉപയോഗിച്ച് നിരസിക്കപ്പെടും. പരിധികൾ ഒരു പ്രത്യേക `model`, ഒരു `provider` എന്നിവയിലേക്ക് പരിമിതപ്പെടുത്താം, അല്ലെങ്കിൽ കീയിൽ ഉടനീളം `global` ആയി പ്രയോഗിക്കാം; ഒരു അഭ്യർത്ഥനയുമായി നിരവധി പരിധികൾ പൊരുത്തപ്പെടുമ്പോൾ, ഏറ്റവും കർശനമായ പരിധിയാണ് പ്രാബല്യത്തിൽ വരുന്നത്.
|
||
|
||
```bash
|
||
# ഒരു കീയുടെ ടോക്കൺ പരിധികൾ പട്ടികപ്പെടുത്തുക (തത്സമയ വിൻഡോ ഉപയോഗം ഉൾപ്പെടെ)
|
||
GET /api/usage/token-limits?apiKeyId=key-123
|
||
|
||
# ഒരു ടോക്കൺ പരിധി സൃഷ്ടിക്കുകയോ അപ്ഡേറ്റ് ചെയ്യുകയോ ചെയ്യുക
|
||
POST /api/usage/token-limits
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"apiKeyId": "key-123",
|
||
"scopeType": "model",
|
||
"scopeValue": "openai/gpt-4o",
|
||
"tokenLimit": 1000000,
|
||
"resetInterval": "monthly",
|
||
"enabled": true
|
||
}
|
||
|
||
# id ഉപയോഗിച്ച് ഒരു ടോക്കൺ പരിധി ഇല്ലാതാക്കുക
|
||
DELETE /api/usage/token-limits?id=tl-abc
|
||
```
|
||
|
||
> **സ്കീമ കുറിപ്പുകൾ** (`setTokenLimitSchema`): `apiKeyId`, `scopeType` (`model` | `provider` | `global`) എന്നിവ നിർബന്ധമാണ്. `scopeType` എന്നത് `global` അല്ലാത്തപക്ഷം `scopeValue` നിർബന്ധമാണ് (ഉദാ. `model` സ്കോപ്പിനായി ഒരു മോഡൽ id, `provider` സ്കോപ്പിനായി ഒരു പ്രൊവൈഡർ id). `tokenLimit` ഒരു പോസിറ്റീവ് ഇന്റിജർ ആയിരിക്കണം (സ്ട്രിങ്ങിൽ നിന്ന് കോഴ്സ് ചെയ്യപ്പെടുന്നു). ഐച്ഛികമായവ: `id` (സൃഷ്ടിക്കാൻ ഒഴിവാക്കുക, അപ്ഡേറ്റ് ചെയ്യാൻ നൽകുക), `resetInterval` (`daily` | `weekly` | `monthly`, ഡിഫോൾട്ട് `monthly`), `resetTime` (`HH:MM`), `enabled` (ഡിഫോൾട്ട് `true`). `GET` പ്രതികരണങ്ങൾ ഓരോ പരിധിയെയും `tokensUsed`, `remaining`, `windowStart`, `periodStartAt`, `nextResetAt` എന്നിവ ഉപയോഗിച്ച് സമ്പുഷ്ടമാക്കുന്നു. ഇത് ഒരു മാനേജ്മെന്റ്-ക്ലാസ് എൻഡ്പോയിന്റാണ് (authz പൈപ്പ്ലൈൻ വഴി ഓതന്റിക്കേഷൻ കേന്ദ്രീകൃതമായി നടപ്പാക്കുന്നു).
|
||
|
||
## അഭ്യർത്ഥനാ പ്രോസസ്സിംഗ്
|
||
|
||
1. ക്ലയന്റ് `/v1/*` എന്നതിലേക്ക് അഭ്യർത്ഥന അയയ്ക്കുന്നു
|
||
2. റൂട്ട് ഹാൻഡ്ലർ `handleChat`, `handleEmbedding`, `handleAudioTranscription`, അല്ലെങ്കിൽ `handleImageGeneration` വിളിക്കുന്നു
|
||
3. മോഡൽ പരിഹരിക്കപ്പെടുന്നു (നേരിട്ടുള്ള പ്രൊവൈഡർ/മോഡൽ അല്ലെങ്കിൽ അപരനാമം/കോംബോ)
|
||
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`).
|
||
|
||
---
|
||
|
||
## വെബ്ഹുക്കുകൾ
|
||
|
||
OmniRoute ഇവന്റുകൾക്കായുള്ള ഔട്ട്ബൗണ്ട് വെബ്ഹുക്ക് സബ്സ്ക്രിപ്ഷനുകൾ (അഭ്യർത്ഥന പൂർത്തീകരണം, ക്വാട്ട തീരൽ, കീ റൊട്ടേഷൻ തുടങ്ങിയവ).
|
||
|
||
| രീതി | പാത | വിവരണം |
|
||
| ------ | ------------------------- | ----------------------------------------------------------------------------- |
|
||
| GET | `/api/webhooks` | വെബ്ഹുക്കുകൾ പട്ടികപ്പെടുത്തുക (രഹസ്യങ്ങൾ `<prefix>...` ആയി മറച്ചിരിക്കും) |
|
||
| POST | `/api/webhooks` | വെബ്ഹുക്ക് സൃഷ്ടിക്കുക — ബോഡി: `{url, events?: ["*"], secret?, description?}` |
|
||
| GET | `/api/webhooks/[id]` | ഒരു വെബ്ഹുക്ക് വീണ്ടെടുക്കുക |
|
||
| PUT | `/api/webhooks/[id]` | url/events/secret/description അപ്ഡേറ്റ് ചെയ്യുക |
|
||
| DELETE | `/api/webhooks/[id]` | ഒരു വെബ്ഹുക്ക് നീക്കം ചെയ്യുക |
|
||
| POST | `/api/webhooks/[id]/test` | വെബ്ഹുക്ക് URL-ലേക്ക് ഒരു ടെസ്റ്റ് പേലോഡ് അയച്ച് ഡെലിവറി നില തിരികെ നൽകുക |
|
||
|
||
**പ്രാമാണീകരണം:** മാനേജ്മെന്റ് സെഷൻ/API കീ (`requireManagementAuth`).
|
||
|
||
---
|
||
|
||
## രജിസ്റ്റർ ചെയ്ത കീകൾ (സ്വയമേവയുള്ള മാനേജ്മെന്റ്)
|
||
|
||
ദൈനംദിന/മണിക്കൂർ ക്വാട്ടകളോടെ, അടിസ്ഥാന 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]` | രജിസ്റ്റർ ചെയ്ത ഒരു കീയുടെ മെറ്റാഡാറ്റ വീണ്ടെടുക്കുക (അസംസ്കൃത കീ ഉൾപ്പെടില്ല) |
|
||
| DELETE | `/api/v1/registered-keys/[id]` | രജിസ്റ്റർ ചെയ്ത ഒരു കീ അസാധുവാക്കുക |
|
||
| POST | `/api/v1/registered-keys/[id]/revoke` | വ്യക്തമായ അസാധുവാക്കൽ എൻഡ്പോയിന്റ് (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-ന് മുമ്പ് ഇവയ്ക്ക് ഓതന്റിക്കേഷൻ ഉണ്ടായിരുന്നില്ല — ഈ ബ്രേക്കിംഗ് മാറ്റത്തിന് commit `588a0333` കാണുക.
|
||
|
||
```bash
|
||
# ഒരു Claude Code ക്ലൗഡ് ടാസ്ക് സൃഷ്ടിക്കുക
|
||
curl -X POST http://localhost:20128/api/v1/agents/tasks \
|
||
-H "Authorization: Bearer your-management-key" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"providerId":"claude-code-cloud","prompt":"Fix the failing test","source":{"repo":"...","branch":"..."}}'
|
||
```
|
||
|
||
---
|
||
|
||
## മാനേജ്മെന്റ് പ്രോക്സികൾ
|
||
|
||
പ്രൊവൈഡർമാർക്കോ അക്കൗണ്ടുകൾക്കോ ആഗോളമായോ അസൈൻ ചെയ്യാവുന്ന ഔട്ട്ബൗണ്ട് HTTP(S)/SOCKS പ്രോക്സികൾ.
|
||
|
||
| രീതി | പാത | വിവരണം |
|
||
| ------ | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| GET | `/api/v1/management/proxies` | പ്രോക്സികൾ പട്ടികപ്പെടുത്തുക (`?id=` ഉപയോഗിച്ച് ഒന്ന് മടക്കിനൽകുന്നു; `?id=&where_used=1` ഉപയോഗിച്ച് അസൈൻമെന്റ് ഗ്രാഫ് മടക്കിനൽകുന്നു) |
|
||
| POST | `/api/v1/management/proxies` | പ്രോക്സി സൃഷ്ടിക്കുക — ബോഡി `createProxyRegistrySchema` ഉപയോഗിച്ച് സാധൂകരിക്കുന്നു |
|
||
| PATCH | `/api/v1/management/proxies` | പ്രോക്സി അപ്ഡേറ്റ് ചെയ്യുക — ബോഡി `updateProxyRegistrySchema` ഉപയോഗിച്ച് സാധൂകരിക്കുന്നു (`id` ആവശ്യമാണ്) |
|
||
| DELETE | `/api/v1/management/proxies?id=...&force=1` | പ്രോക്സി ഇല്ലാതാക്കുക (അസൈൻമെന്റുകൾ വേർപെടുത്താൻ `force=1` ഉപയോഗിക്കുക) |
|
||
| GET | `/api/v1/management/proxies/assignments` | അസൈൻമെന്റുകൾ പട്ടികപ്പെടുത്തുക — `proxy_id`, `scope`, `scope_id` എന്നിവ ഉപയോഗിച്ച് ഫിൽട്ടർ ചെയ്യാം; ഒരു കണക്ഷനുവേണ്ടിയുള്ള സജീവ പ്രോക്സി കണ്ടെത്താൻ `resolve_connection_id=<id>` നൽകുക |
|
||
| PUT | `/api/v1/management/proxies/assignments` | അസൈൻ ചെയ്യുക — ബോഡി `proxyAssignmentSchema` ഉപയോഗിച്ച് സാധൂകരിക്കുന്നു (`{scope, scopeId?, proxyId?}`). ഡിസ്പാച്ചർ കാഷ് മായ്ക്കുന്നു |
|
||
| PUT | `/api/v1/management/proxies/bulk-assign` | ബൾക്ക് അസൈൻ ചെയ്യുക — ബോഡി `bulkProxyAssignmentSchema` ഉപയോഗിച്ച് സാധൂകരിക്കുന്നു (`{scope, scopeIds[], proxyId?}`) |
|
||
| GET | `/api/v1/management/proxies/health?hours=24` | ഒരു സമയപരിധിയിലുടനീളമുള്ള സംഗ്രഹിച്ച പ്രോക്സി ഹെൽത്ത് (വിജയ/പരാജയ എണ്ണങ്ങൾ, ലേറ്റൻസി) |
|
||
|
||
**ഓതന്റിക്കേഷൻ:** എല്ലാ റൂട്ടിലും മാനേജ്മെന്റ് സെഷൻ/API കീ ആവശ്യമാണ് (`requireManagementAuth`).
|
||
|
||
> ടാസ്ക് വിവരണത്തിലെ `POST /api/v1/management/proxies/[id]/assignments`, `POST /api/v1/management/proxies/[id]/health` എന്നിവ മുകളിൽ കാണിച്ചിരിക്കുന്ന ഫ്ലാറ്റ് `/assignments`, `/health` റൂട്ടുകളാണ് നൽകുന്നത് — കോഡ്ബേസിൽ ഓരോ id-ക്കും പ്രത്യേക സബ്റൂട്ടുകളില്ല.
|
||
|
||
---
|
||
|
||
## പ്രതിരോധശേഷി (വിപുലീകരിച്ചത്)
|
||
|
||
OmniRoute മൂന്ന് സ്വതന്ത്ര താൽക്കാലിക-പരാജയ സംവിധാനങ്ങൾ ലഭ്യമാക്കുന്നു; താഴെയുള്ള മാനേജ്മെന്റ് എൻഡ്പോയിന്റുകൾ ഉപയോഗിച്ച് ഓപ്പറേറ്റർമാർക്ക് അവയുടെ നില വായിക്കാനും അവയെ അസാധുവാക്കാനും കഴിയും:
|
||
|
||
| പരിധി | നില സംഭരണം | വായിക്കുക | റീസെറ്റ് / മായ്ക്കുക |
|
||
| ---------------------------- | ---------------------------------------- | ----------------------------------------- | --------------------------------------------------------------------- |
|
||
| പ്രൊവൈഡർ സർക്യൂട്ട് ബ്രേക്കർ | `domain_circuit_breakers` + ഇൻ-മെമ്മറി | `/api/monitoring/health` | `POST /api/resilience/reset` |
|
||
| കണക്ഷൻ കൂൾഡൗൺ | പ്രൊവൈഡർ കണക്ഷനുകളിലെ `rateLimitedUntil` | `/api/rate-limits`, `/api/providers/[id]` | (ആവശ്യാനുസരണം വീണ്ടും പ്രവർത്തനക്ഷമമാകും; പ്രൊവൈഡർ PUT വഴി മായ്ക്കുക) |
|
||
| മോഡൽ ലോക്കൗട്ട് | ഇൻ-മെമ്മറി മോഡൽ-ലഭ്യതാ രജിസ്ട്രി | `GET /api/resilience/model-cooldowns` | `DELETE /api/resilience/model-cooldowns` |
|
||
|
||
`PATCH /api/resilience`, `providerBreaker.oauth`, `providerBreaker.apikey` എന്നിവയ്ക്ക് കീഴിലുള്ള പ്രൊവൈഡർ സർക്യൂട്ട് ബ്രേക്കർ ഓവർറൈഡുകൾ സ്വീകരിക്കുന്നു. ഓരോ പ്രൊഫൈലും `degradationThreshold`, `failureThreshold`, `resetTimeoutMs` എന്നിവ പിന്തുണയ്ക്കുന്നു; ഇതേ ഫീൽഡുകൾ Dashboard → Settings → Resilience എന്നതിലും ലഭ്യമാണ്.
|
||
|
||
```bash
|
||
# ഒരു മോഡൽ ലോക്കൗട്ട് മായ്ക്കുക
|
||
curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \
|
||
-H "Cookie: auth_token=..." \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"provider":"openai","model":"gpt-4o-mini"}'
|
||
|
||
# എല്ലാ ലോക്കൗട്ടുകളും മായ്ക്കുക
|
||
curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \
|
||
-H "Cookie: auth_token=..." \
|
||
-d '{"all":true}'
|
||
```
|
||
|
||
പൂർണ്ണമായ ആശയപരമായ റഫറൻസിനും സർക്യൂട്ട് ബ്രേക്കറിന്റെ ഡിഫോൾട്ട് മൂല്യങ്ങൾക്കും: [`CLAUDE.md`](../../CLAUDE.md) → "പ്രതിരോധശേഷിയുടെ റൺടൈം നില" കാണുക.
|
||
|
||
---
|
||
|
||
## സ്കില്ലുകൾ
|
||
|
||
ഇഷ്ടാനുസൃത എക്സിക്യൂട്ടബിൾ ഹാൻഡ്ലറുകളും മാർക്കറ്റ്പ്ലേസ് ഇന്റഗ്രേഷനുകളും ഉപയോഗിച്ച് OmniRoute വിപുലീകരിക്കുന്നതിനുള്ള സ്കിൽ ഫ്രെയിംവർക്ക്.
|
||
|
||
| രീതി | പാത്ത് | വിവരണം |
|
||
| ------ | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||
| GET | `/api/skills` | ഇൻസ്റ്റാൾ ചെയ്ത സ്കില്ലുകൾ പട്ടികപ്പെടുത്തുക — `?q=`, `?mode=on\|off\|auto`, `?source=skillsmp\|skillssh\|local` എന്നിവ ഉപയോഗിച്ച് ഫിൽട്ടർ ചെയ്യാം, പേജിനേഷൻ പിന്തുണയ്ക്കുന്നു |
|
||
| GET | `/api/skills/[id]` | ഒരു സ്കിൽ ലഭ്യമാക്കുക |
|
||
| PUT | `/api/skills/[id]` | സ്കിൽ അപ്ഡേറ്റ് ചെയ്യുക (പേര്, വിവരണം, മോഡ്, സ്കീമ, ഹാൻഡ്ലർ, ടാഗുകൾ) |
|
||
| DELETE | `/api/skills/[id]` | ഒരു സ്കിൽ അൺഇൻസ്റ്റാൾ ചെയ്യുക |
|
||
| POST | `/api/skills/install` | റോ മാനിഫെസ്റ്റിൽ നിന്ന് ഒരു സ്കിൽ ഇൻസ്റ്റാൾ ചെയ്യുക — ബോഡി: `{name, version, description, schema:{input, output}, handlerCode, apiKeyId?}` |
|
||
| GET | `/api/skills/executions` | സമീപകാല സ്കിൽ എക്സിക്യൂഷനുകൾ പട്ടികപ്പെടുത്തുക (ഇൻപുട്ടുകൾ/ഔട്ട്പുട്ടുകൾ/ദൈർഘ്യം ഉൾപ്പെടെയുള്ള ഓഡിറ്റ് ട്രെയിൽ) |
|
||
| GET | `/api/skills/marketplace?q=...` | SkillsMP മാർക്കറ്റ്പ്ലേസിൽ നിന്നുള്ള തിരയൽ/ജനപ്രിയ പട്ടിക (`skillsmpApiKey` ക്രമീകരണം ആവശ്യമാണ്) |
|
||
| POST | `/api/skills/marketplace/install` | SkillsMP-യിൽ നിന്ന് id ഉപയോഗിച്ച് ഒരു സ്കിൽ ഇൻസ്റ്റാൾ ചെയ്യുക |
|
||
| GET | `/api/skills/skillssh?q=&limit=` | skills.sh രജിസ്ട്രിയിൽ തിരയുക |
|
||
| POST | `/api/skills/skillssh/install` | skills.sh-ൽ നിന്ന് id ഉപയോഗിച്ച് ഒരു സ്കിൽ ഇൻസ്റ്റാൾ ചെയ്യുക |
|
||
|
||
**ഓതന്റിക്കേഷൻ:** മാനേജ്മെന്റ് സെഷൻ/API കീ. മാർക്കറ്റ്പ്ലേസ് തിരയൽ റൂട്ടുകൾ മാനേജ്മെന്റ് ഓതന്റിക്കേഷനോ ഒരു Bearer API കീയോ (`isAuthenticated`) സ്വീകരിക്കുന്നു.
|
||
|
||
---
|
||
|
||
## മെമ്മറി
|
||
|
||
API കീ / സെഷൻ അടിസ്ഥാനത്തിൽ പരിധി നിശ്ചയിച്ചിട്ടുള്ള സ്ഥിരമായ സംഭാഷണ/വസ്തുതാപരമായ മെമ്മറി സംഭരണി.
|
||
|
||
| രീതി | പാത | വിവരണം |
|
||
| ------ | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
||
| GET | `/api/memory` | മെമ്മറികൾ പട്ടികപ്പെടുത്തുക — `?apiKeyId=`, `?type=`, `?sessionId=`, `?q=`, കൂടാതെ `offset/limit` അല്ലെങ്കിൽ `page/limit` പേജിനേഷൻ |
|
||
| POST | `/api/memory` | മെമ്മറി സൃഷ്ടിക്കുക — Zod സാധൂകരിക്കുന്ന ബോഡി: `{content, key, type?, sessionId?, apiKeyId?, metadata?, expiresAt?}` |
|
||
| GET | `/api/memory/[id]` | ഒരു മെമ്മറി വീണ്ടെടുക്കുക |
|
||
| DELETE | `/api/memory/[id]` | ഒരു മെമ്മറി ഇല്ലാതാക്കുക |
|
||
| GET | `/api/memory/health` | മെമ്മറി ഉപസിസ്റ്റത്തിന്റെ നില (DB കണക്റ്റിവിറ്റി, എംബെഡ്ഡിങ്സ് ബാക്കെൻഡ്, വെക്റ്റർ ഇൻഡക്സ് നില) |
|
||
|
||
**ഓതന്റിക്കേഷൻ:** മാനേജ്മെന്റ് സെഷൻ/API കീ (`requireManagementAuth`). `type` enum: `FACTUAL`, `EPISODIC`, `SEMANTIC`, `PROCEDURAL` (`src/lib/memory/types.ts`-ലെ `MemoryType` കാണുക).
|
||
|
||
---
|
||
|
||
## MCP സെർവർ
|
||
|
||
OmniRoute, 3 ട്രാൻസ്പോർട്ടുകളും (stdio, SSE, streamable-http) സ്കോപ്പ് ചെയ്ത ടൂളുകളുമുള്ള ഒരു എംബെഡഡ് Model Context Protocol സെർവറുമായി ലഭ്യമാകുന്നു. ചുവടെയുള്ള ഡാഷ്ബോർഡ് എൻഡ്പോയിന്റുകൾ നില/ഓഡിറ്റ് ഡാറ്റ വായിക്കുകയും HTTP ട്രാൻസ്പോർട്ടുകളെ പ്രോക്സി ചെയ്യുകയും ചെയ്യുന്നു.
|
||
|
||
| രീതി | പാത | വിവരണം |
|
||
| ------ | ---------------------- | ------------------------------------------------------------------------------------------------ | -------------------- |
|
||
| GET | `/api/mcp/status` | ഹാർട്ട്ബീറ്റ്, ട്രാൻസ്പോർട്ട്, ഓൺലൈൻ നില, അവസാന കോൾ, മുൻനിര ടൂളുകൾ, 24 മണിക്കൂർ വിജയനിരക്ക് |
|
||
| GET | `/api/mcp/tools` | `name`, `description`, `scopes`, `phase`, `auditLevel`, `sourceEndpoints` എന്നിവയുള്ള MCP ടൂളുകളുടെ പട്ടിക |
|
||
| GET | `/api/mcp/sse` | SSE ട്രാൻസ്പോർട്ടിനായി SSE സ്ട്രീം തുറക്കുക (MCP പ്രവർത്തനരഹിതമാണെങ്കിലോ ട്രാൻസ്പോർട്ട് പൊരുത്തക്കേടുണ്ടെങ്കിലോ `503` തിരികെ നൽകുന്നു) |
|
||
| POST | `/api/mcp/sse` | SSE ട്രാൻസ്പോർട്ടിൽ JSON-RPC ഫ്രെയിം അയയ്ക്കുക |
|
||
| GET | `/api/mcp/stream` | Streamable HTTP ട്രാൻസ്പോർട്ടിന്റെ SSE വശം തുറക്കുക (സെർവർ ആരംഭിക്കുന്ന സന്ദേശങ്ങൾ) |
|
||
| POST | `/api/mcp/stream` | Streamable HTTP ട്രാൻസ്പോർട്ടിൽ JSON-RPC ഫ്രെയിം അയയ്ക്കുക |
|
||
| DELETE | `/api/mcp/stream` | ഒരു Streamable HTTP സെഷൻ അവസാനിപ്പിക്കുക |
|
||
| GET | `/api/mcp/audit` | ഓഡിറ്റ് ലോഗ് അന്വേഷിക്കുക — `?limit=`, `?offset=`, `?tool=`, `?success=true | false`, `?apiKeyId=` |
|
||
| GET | `/api/mcp/audit/stats` | സമാഹരിച്ച ഓഡിറ്റ് സ്ഥിതിവിവരക്കണക്കുകൾ (ആകെ എണ്ണം, വിജയനിരക്ക്, ശരാശരി ദൈർഘ്യം, മുൻനിര ടൂളുകൾ) |
|
||
|
||
**ഓതന്റിക്കേഷൻ:** `sse`/`stream` ട്രാൻസ്പോർട്ടുകൾ MCP-നിർദ്ദിഷ്ട ഓതന്റിക്കേഷൻ സംവിധാനം പാലിക്കുന്നു (`mcp` സ്കോപ്പുള്ള Bearer API കീ); `status`/`tools`/`audit*` റൂട്ടുകൾ ഡാഷ്ബോർഡിൽ നിന്ന് വായിക്കാനാകും (ഡാഷ്ബോർഡ് ഹോസ്റ്റിലേക്ക് എത്തുന്നതിനപ്പുറം അധിക ഓതന്റിക്കേഷൻ ആവശ്യമില്ല).
|
||
|
||
> രണ്ട് HTTP ട്രാൻസ്പോർട്ടുകളും `settings.mcpEnabled`, `settings.mcpTransport` എന്നിവയാൽ നിയന്ത്രിക്കപ്പെടുന്നു — ട്രാൻസ്പോർട്ട് പൊരുത്തക്കേട് `400` തിരികെ നൽകും, MCP പ്രവർത്തനരഹിതമായ നില `503` തിരികെ നൽകും.
|
||
|
||
---
|
||
|
||
## A2A സെർവർ
|
||
|
||
പരിശോധനയ്ക്കും ഡാഷ്ബോർഡ് ഉപയോഗത്തിനുമുള്ള REST റാപ്പറിനൊപ്പം ഒരു A2A (Agent-to-Agent) JSON-RPC 2.0 എൻഡ്പോയിന്റ് OmniRoute ലഭ്യമാക്കുന്നു.
|
||
|
||
### 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` | പ്രാദേശിക റൂട്ടിംഗ് പട്ടിക ഉപയോഗിച്ച് ഒരു ലോജിക്കൽ മോഡൽ ഐഡിയെ നിർദിഷ്ട പ്രൊവൈഡർ/മോഡലിലേക്ക് പരിഹരിക്കുന്നു |
|
||
| 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=<agentId>` |
|
||
|
||
**പ്രതികരണ ഉദാഹരണം** (`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<string, number>}` |
|
||
|
||
**ഓതന്റിക്കേഷൻ:** അഡ്മിൻ സ്കോപ്പുള്ള മാനേജ്മെന്റ് സെഷൻ ആവശ്യമാണ്.
|
||
|
||
---
|
||
|
||
## 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` | അസംസ്കൃത പ്രോംപ്റ്റും മെറ്റാഡാറ്റയും നേടുക (നിർവഹണമില്ലാതെ) |
|
||
| POST | `/api/agent-skills/generate` | സ്വാഭാവിക ഭാഷയിലുള്ള വിവരണത്തിൽനിന്ന് AI ഉപയോഗിച്ച് പുതിയൊരു സ്കിൽ ജനറേറ്റ് ചെയ്യുക |
|
||
|
||
**ഓതന്റിക്കേഷൻ:** മാനേജ്മെന്റ് സെഷൻ അല്ലെങ്കിൽ മാനേജ്മെന്റ് സ്കോപ്പുള്ള API കീ ആവശ്യമാണ്.
|
||
|
||
---
|
||
|
||
## കാഷ് മാനേജ്മെന്റ്
|
||
|
||
സെമാന്റിക് കാഷും റീസണിംഗ് കാഷും നിയന്ത്രിക്കുക.
|
||
|
||
| രീതി | പാത | വിവരണം |
|
||
| ------ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
||
| GET | `/api/cache` | കാഷ് അവലോകനം: ആകെ എൻട്രികൾ, ഹിറ്റ് നിരക്ക്, ഡിസ്കിലെ വലുപ്പം |
|
||
| GET | `/api/cache/entries` | കാഷ് ചെയ്ത എൻട്രികളുടെ പട്ടിക (പേജിനേഷൻ സഹിതം) |
|
||
| DELETE | `/api/cache/entries` | കാഷ് എൻട്രികൾ ഇല്ലാതാക്കുക (ക്വറി പാരാമീറ്ററുകൾ പ്രകാരം ഫിൽട്ടർ ചെയ്യുക) |
|
||
| GET | `/api/cache/stats` | വിശദമായ കാഷ് സ്ഥിതിവിവരക്കണക്കുകൾ (ഓരോ പ്രൊവൈഡറിനും ഓരോ മോഡലിനും) |
|
||
| GET | `/api/cache/reasoning` | റീസണിംഗ് കാഷിന്റെ നില (റീസണിംഗ് റീപ്ലേയ്ക്കായി) |
|
||
| DELETE | `/api/cache/reasoning` | റീസണിംഗ് കാഷ് മായ്ക്കുക — ക്വറി പാരാമീറ്ററുകൾ: `?toolCallId=<id>` (ഒന്ന്), `?provider=<p>`, അല്ലെങ്കിൽ പാരാമീറ്ററുകളില്ലാതെ (എല്ലാം) |
|
||
|
||
**പ്രാമാണീകരണം:** മാനേജ്മെന്റ് സെഷൻ ആവശ്യമാണ്.
|
||
|
||
---
|
||
|
||
## മെമ്മറി സിസ്റ്റം
|
||
|
||
സ്ഥിരമായ മെമ്മറി (FTS5 + വെക്റ്റർ എംബെഡ്ഡിങ്ങുകൾ) നിയന്ത്രിക്കുക.
|
||
|
||
| രീതി | പാത | വിവരണം |
|
||
| ------ | ------------------ | ------------------------------------------------------------------------------------------------------- |
|
||
| GET | `/api/memory` | മെമ്മറി എൻട്രികളുടെ പട്ടിക (സ്കോപ്പ്, തരം, തിരയൽ ക്വറി എന്നിവ പ്രകാരം ഫിൽട്ടർ ചെയ്യുക) |
|
||
| POST | `/api/memory` | പുതിയ മെമ്മറി എൻട്രി സൃഷ്ടിക്കുക — ബോഡി: `{scope, type, content, metadata?}` |
|
||
| GET | `/api/memory/[id]` | ഒരു നിർദ്ദിഷ്ട മെമ്മറി എൻട്രി നേടുക |
|
||
| PUT | `/api/memory/[id]` | ഒരു മെമ്മറി എൻട്രി അപ്ഡേറ്റ് ചെയ്യുക |
|
||
| DELETE | `/api/memory/[id]` | ഒരു മെമ്മറി എൻട്രി ഇല്ലാതാക്കുക |
|
||
| GET | `/api/memory?q=` | മെമ്മറിയിൽ തിരയുക (FTS5 + വെക്റ്റർ) — അതേ പ്രതികരണത്തിൽ സ്ഥിതിവിവരക്കണക്കുകളും ഉൾപ്പെടുത്തിയിരിക്കുന്നു |
|
||
|
||
**പ്രാമാണീകരണം:** മാനേജ്മെന്റ് സെഷൻ അല്ലെങ്കിൽ മാനേജ്മെന്റ്-സ്കോപ്പുള്ള API കീ ആവശ്യമാണ്.
|
||
|
||
---
|
||
|
||
## വെബ്ഹുക്കുകൾ
|
||
|
||
ഇവന്റുകൾക്കായുള്ള വെബ്ഹുക്ക് സബ്സ്ക്രിപ്ഷനുകൾ നിയന്ത്രിക്കുക.
|
||
|
||
| രീതി | പാത | വിവരണം |
|
||
| ------ | ------------------------------- | ------------------------------------------------------------------------------------ |
|
||
| GET | `/api/webhooks` | എല്ലാ വെബ്ഹുക്ക് സബ്സ്ക്രിപ്ഷനുകളുടെയും പട്ടിക |
|
||
| POST | `/api/webhooks` | ഒരു വെബ്ഹുക്ക് സബ്സ്ക്രിപ്ഷൻ സൃഷ്ടിക്കുക — ബോഡി: `{url, events[], secret?, active?}` |
|
||
| GET | `/api/webhooks/[id]` | ഒരു നിർദ്ദിഷ്ട വെബ്ഹുക്ക് സബ്സ്ക്രിപ്ഷൻ നേടുക |
|
||
| PUT | `/api/webhooks/[id]` | ഒരു വെബ്ഹുക്ക് സബ്സ്ക്രിപ്ഷൻ അപ്ഡേറ്റ് ചെയ്യുക |
|
||
| DELETE | `/api/webhooks/[id]` | ഒരു വെബ്ഹുക്ക് സബ്സ്ക്രിപ്ഷൻ ഇല്ലാതാക്കുക |
|
||
| GET | `/api/webhooks/[id]/deliveries` | ഒരു വെബ്ഹുക്കിന്റെ ഡെലിവറി ചരിത്രം പട്ടികപ്പെടുത്തുക (വിജയ/പരാജയ ലോഗ്) |
|
||
| POST | `/api/webhooks/[id]/test` | ഒരു വെബ്ഹുക്കിലേക്ക് പരീക്ഷണ ഇവന്റ് അയയ്ക്കുക |
|
||
|
||
**പ്രാമാണീകരണം:** മാനേജ്മെന്റ് സെഷൻ ആവശ്യമാണ്.
|
||
|
||
എല്ലാ ഇവന്റ് തരങ്ങൾക്കും [വെബ്ഹുക്ക്സ് ഫ്രെയിംവർക്ക്](../frameworks/WEBHOOKS.md) കാണുക.
|
||
|
||
---
|
||
|
||
## സ്കിൽസ് ഫ്രെയിംവർക്ക്
|
||
|
||
സ്കിൽസ് (ഏജന്റിക് എക്സ്റ്റൻഷൻസ് ഫ്രെയിംവർക്ക്) മാനേജ് ചെയ്യുക.
|
||
|
||
| മെത്തഡ് | പാത്ത് | വിവരണം |
|
||
| ------- | ------------------------ | --------------------------------------------------------------------------------------------------------- |
|
||
| GET | `/api/skills` | ഇൻസ്റ്റാൾ ചെയ്ത എല്ലാ സ്കിൽസും ലിസ്റ്റ് ചെയ്യുക (ബിൽറ്റ്-ഇൻ + കസ്റ്റം) |
|
||
| POST | `/api/skills/install` | ഒരു ലോക്കൽ പാത്തിൽ നിന്നോ URL-ൽ നിന്നോ ഒരു സ്കിൽ ഇൻസ്റ്റാൾ ചെയ്യുക |
|
||
| DELETE | `/api/skills/[id]` | ഒരു സ്കിൽ അൺഇൻസ്റ്റാൾ ചെയ്യുക |
|
||
| PUT | `/api/skills/[id]` | ഒരു സ്കിൽ എനേബിൾ അല്ലെങ്കിൽ ഡിസേബിൾ ചെയ്യുക — ബോഡി: `{enabled?: boolean, mode?: "on" \| "off" \| "auto"}` |
|
||
| POST | `/api/skills/executions` | ഒരു സ്കിൽ എക്സിക്യൂട്ട് ചെയ്യുക — ബോഡി: `{skillName, apiKeyId, input?, sessionId?}` |
|
||
| GET | `/api/skills/executions` | എല്ലാ സ്കിൽസിന്റെയും എക്സിക്യൂഷൻ ഹിസ്റ്ററി ലിസ്റ്റ് ചെയ്യുക (`?apiKeyId=` ഉപയോഗിച്ച് ഫിൽട്ടർ ചെയ്യുക) |
|
||
|
||
**ഓതന്റിക്കേഷൻ:** മാനേജ്മെന്റ് സെഷനോ മാനേജ്മെന്റ്-സ്കോപ്പുള്ള API കീയോ ആവശ്യമാണ്.
|
||
|
||
പൂർണ്ണ വിവരങ്ങൾക്ക് [സ്കിൽസ് ഫ്രെയിംവർക്ക്](../frameworks/SKILLS.md) കാണുക.
|
||
|
||
---
|
||
|
||
## പ്ലഗിനുകൾ
|
||
|
||
OmniRoute പ്ലഗിനുകൾ (മൂന്നാം കക്ഷി എക്സ്റ്റൻഷനുകൾ) മാനേജ് ചെയ്യുക.
|
||
|
||
| മെത്തഡ് | പാത്ത് | വിവരണം |
|
||
| ------- | ---------------------------------- | ----------------------------------------------------- |
|
||
| GET | `/api/plugins` | ഇൻസ്റ്റാൾ ചെയ്ത പ്ലഗിനുകൾ ലിസ്റ്റ് ചെയ്യുക |
|
||
| POST | `/api/plugins/marketplace/install` | മാർക്കറ്റ്പ്ലേസിൽ നിന്ന് ഒരു പ്ലഗിൻ ഇൻസ്റ്റാൾ ചെയ്യുക |
|
||
| DELETE | `/api/plugins/[name]` | ഒരു പ്ലഗിൻ അൺഇൻസ്റ്റാൾ ചെയ്യുക |
|
||
| POST | `/api/plugins/[name]/activate` | ഒരു പ്ലഗിൻ ആക്റ്റിവേറ്റ് ചെയ്യുക |
|
||
| POST | `/api/plugins/[name]/deactivate` | ഒരു പ്ലഗിൻ ഡീആക്റ്റിവേറ്റ് ചെയ്യുക |
|
||
| GET | `/api/plugins/[name]/config` | പ്ലഗിൻ കോൺഫിഗറേഷൻ നേടുക |
|
||
| PUT | `/api/plugins/[name]/config` | പ്ലഗിൻ കോൺഫിഗറേഷൻ അപ്ഡേറ്റ് ചെയ്യുക |
|
||
|
||
**ഓതന്റിക്കേഷൻ:** മാനേജ്മെന്റ് സെഷൻ ആവശ്യമാണ്.
|
||
|
||
പൂർണ്ണ വിവരങ്ങൾക്ക് [പ്ലഗിൻസ് ഫ്രെയിംവർക്ക്](../frameworks/PLUGIN_SDK.md) കാണുക.
|
||
|
||
---
|
||
|
||
## ഷാഡോ റൂട്ടിംഗ്
|
||
|
||
പ്രൊവൈഡർമാരുടെ ഷാഡോ / A-B താരതമ്യം **ഒരു സ്വതന്ത്ര REST സർഫേസ് അല്ല** — അത് കോംബോ റൂട്ടിംഗിലൂടെയാണ് കോൺഫിഗർ ചെയ്യുന്നത് ([ഓട്ടോ-കോംബോ](../routing/AUTO-COMBO.md) കാണുക). ഓരോ കോംബോയുടെയും താരതമ്യ മെട്രിക്സ് `GET /api/combos/metrics` വഴി ലഭ്യമാക്കുന്നു.
|
||
|
||
---
|
||
|
||
## ഗാർഡ്റെയിലുകൾ
|
||
|
||
റൺടൈം ഗാർഡ്റെയിലുകൾ (PII ഡിറ്റക്ഷൻ, പ്രോംപ്റ്റ് ഇൻജക്ഷൻ ഡിറ്റക്ഷൻ, വിഷൻ ബ്രിഡ്ജിംഗ്) പരിശോധിക്കുക. എല്ലാ റിക്വസ്റ്റിലും ഗാർഡ്റെയിലുകൾ പ്രവർത്തിക്കുന്നു; ഓരോ കോളിലെയും ഒഴിവാക്കൽ `x-omniroute-disabled-guardrails` റിക്വസ്റ്റ് ഹെഡർ വഴിയാണ് — നിലനിൽക്കുന്ന എനേബിൾ/ഡിസേബിൾ സർഫേസ് ഇല്ല.
|
||
|
||
| മെത്തഡ് | പാത്ത് | വിവരണം |
|
||
| ------- | ---------------------- | ----------------------------------------------------------------------------------------------- |
|
||
| GET | `/api/guardrails` | രജിസ്റ്റർ ചെയ്ത ഗാർഡ്റെയിലുകളും അവയുടെ സ്റ്റാറ്റസും ലിസ്റ്റ് ചെയ്യുക (പേര് / എനേബിൾഡ് / മുൻഗണന) |
|
||
| POST | `/api/guardrails/test` | ഒരു സാമ്പിൾ ഇൻപുട്ടിൽ പ്രീ-കോൾ പൈപ്പ്ലൈൻ ഡ്രൈ-റൺ ചെയ്യുക — ബോഡി: `{input, disabledGuardrails?}` |
|
||
|
||
**ഓതന്റിക്കേഷൻ:** മാനേജ്മെന്റ് സെഷൻ ആവശ്യമാണ്.
|
||
|
||
പൂർണ്ണ വിവരങ്ങൾക്ക് [സുരക്ഷ > ഗാർഡ്റെയിലുകൾ](../security/GUARDRAILS.md) കാണുക.
|
||
|
||
---
|
||
|
||
---
|
||
|
||
## പ്രാമാണീകരണം
|
||
|
||
നാല് ക്രെഡൻഷ്യൽ വിഭാഗങ്ങളെക്കുറിച്ചും (ഡാഷ്ബോർഡ് സെഷൻ, ലോക്കൽ CLI ടോക്കൺ, `oma_live_…` ആക്സസ്
|
||
ടോക്കൺ, മാനേജ്മെന്റ്-സ്കോപ്പുള്ള API കീ) അവ ഇൻഫറൻസ് കീകളിൽനിന്ന് എങ്ങനെ വ്യത്യാസപ്പെട്ടിരിക്കുന്നുവെന്നും അറിയാൻ [മാനേജ്മെന്റ് പ്രാമാണീകരണം](../guides/MANAGEMENT-AUTH.md) കാണുക.
|
||
|
||
- ഡാഷ്ബോർഡ് റൂട്ടുകൾ (`/dashboard/*`) `auth_token` കുക്കി ഉപയോഗിക്കുന്നു
|
||
- ലോഗിൻ സേവ് ചെയ്ത പാസ്വേഡ് ഹാഷ് ഉപയോഗിക്കുന്നു; ലഭ്യമല്ലെങ്കിൽ `INITIAL_PASSWORD` ഉപയോഗിക്കുന്നു
|
||
- `/api/settings/require-login` വഴി `requireLogin` ടോഗിൾ ചെയ്യാം
|
||
- `REQUIRE_API_KEY=true` ആയിരിക്കുമ്പോൾ `/v1/*` റൂട്ടുകൾക്ക് ഐച്ഛികമായി Bearer API കീ ആവശ്യമാണ്
|
||
- ഈ റഫറൻസിലെ "മാനേജ്മെന്റ് ടോക്കൺ" / "മാനേജ്മെന്റ്-സ്കോപ്പുള്ള API കീ" എന്നത് ആ ഗൈഡിലുള്ള വിഭാഗങ്ങളിലൊന്നിനെയാണ് സൂചിപ്പിക്കുന്നത് — നിർവചിക്കാത്ത മറ്റൊരു രഹസ്യ തരത്തെയല്ല
|
||
|
||
> **പിന്നോട്ടുള്ള അനുയോജ്യത തകർക്കുന്ന മാറ്റം (v3.8.0)** — `/api/v1/agents/tasks/*` റൂട്ടുകൾക്കും കൂൾഡൗൺ മാനേജ്മെന്റ് എൻഡ്പോയിന്റുകൾക്കും ഇപ്പോൾ **മാനേജ്മെന്റ് പ്രാമാണീകരണം** (ഡാഷ്ബോർഡ് `auth_token` കുക്കി അല്ലെങ്കിൽ മാനേജ്മെന്റ്-സ്കോപ്പുള്ള API കീ) ആവശ്യമാണ്. മുമ്പ് പ്രാമാണീകരണമില്ലാതെ ഈ റൂട്ടുകൾ വിളിച്ചിരുന്ന ക്ലയന്റുകൾക്ക് `401 Unauthorized` ലഭിക്കും. commit `588a0333` (`fix(auth): require management auth for agent and cooldown APIs`) കാണുക.
|