v1 endpoints for kf and settings
This commit is contained in:
parent
61371beeba
commit
bb71167d11
6 changed files with 106 additions and 15 deletions
|
|
@ -55,7 +55,7 @@ class SettingsClient:
|
|||
else:
|
||||
body = {k: v for k, v in options.items() if v is not None}
|
||||
|
||||
response = await self._client._request("POST", "/settings", json=body)
|
||||
response = await self._client._request("POST", "/api/v1/settings", json=body)
|
||||
data = response.json()
|
||||
return SettingsUpdateResponse(message=data.get("message", "Settings updated"))
|
||||
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ class KnowledgeFiltersClient:
|
|||
|
||||
response = await self._client._request(
|
||||
"POST",
|
||||
"/knowledge-filter",
|
||||
"/api/v1/knowledge-filters",
|
||||
json=body,
|
||||
)
|
||||
|
||||
|
|
@ -95,7 +95,7 @@ class KnowledgeFiltersClient:
|
|||
|
||||
response = await self._client._request(
|
||||
"POST",
|
||||
"/knowledge-filter/search",
|
||||
"/api/v1/knowledge-filters/search",
|
||||
json=body,
|
||||
)
|
||||
|
||||
|
|
@ -118,7 +118,7 @@ class KnowledgeFiltersClient:
|
|||
try:
|
||||
response = await self._client._request(
|
||||
"GET",
|
||||
f"/knowledge-filter/{filter_id}",
|
||||
f"/api/v1/knowledge-filters/{filter_id}",
|
||||
)
|
||||
|
||||
data = response.json()
|
||||
|
|
@ -174,7 +174,7 @@ class KnowledgeFiltersClient:
|
|||
|
||||
response = await self._client._request(
|
||||
"PUT",
|
||||
f"/knowledge-filter/{filter_id}",
|
||||
f"/api/v1/knowledge-filters/{filter_id}",
|
||||
json=body,
|
||||
)
|
||||
|
||||
|
|
@ -193,7 +193,7 @@ class KnowledgeFiltersClient:
|
|||
"""
|
||||
response = await self._client._request(
|
||||
"DELETE",
|
||||
f"/knowledge-filter/{filter_id}",
|
||||
f"/api/v1/knowledge-filters/{filter_id}",
|
||||
)
|
||||
|
||||
data = response.json()
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class SettingsClient {
|
|||
* @returns Success response with message.
|
||||
*/
|
||||
async update(options: SettingsUpdateOptions): Promise<SettingsUpdateResponse> {
|
||||
const response = await this.client._request("POST", "/settings", {
|
||||
const response = await this.client._request("POST", "/api/v1/settings", {
|
||||
body: JSON.stringify(options),
|
||||
});
|
||||
const data = await response.json();
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ export class KnowledgeFiltersClient {
|
|||
queryData: JSON.stringify(options.queryData),
|
||||
};
|
||||
|
||||
const response = await this.client._request("POST", "/knowledge-filter", {
|
||||
const response = await this.client._request("POST", "/api/v1/knowledge-filters", {
|
||||
body: JSON.stringify(body),
|
||||
});
|
||||
|
||||
|
|
@ -58,7 +58,7 @@ export class KnowledgeFiltersClient {
|
|||
|
||||
const response = await this.client._request(
|
||||
"POST",
|
||||
"/knowledge-filter/search",
|
||||
"/api/v1/knowledge-filters/search",
|
||||
{
|
||||
body: JSON.stringify(body),
|
||||
}
|
||||
|
|
@ -83,7 +83,7 @@ export class KnowledgeFiltersClient {
|
|||
try {
|
||||
const response = await this.client._request(
|
||||
"GET",
|
||||
`/knowledge-filter/${filterId}`
|
||||
`/api/v1/knowledge-filters/${filterId}`
|
||||
);
|
||||
|
||||
const data = (await response.json()) as GetKnowledgeFilterResponse;
|
||||
|
|
@ -124,7 +124,7 @@ export class KnowledgeFiltersClient {
|
|||
|
||||
const response = await this.client._request(
|
||||
"PUT",
|
||||
`/knowledge-filter/${filterId}`,
|
||||
`/api/v1/knowledge-filters/${filterId}`,
|
||||
{
|
||||
body: JSON.stringify(body),
|
||||
}
|
||||
|
|
@ -143,7 +143,7 @@ export class KnowledgeFiltersClient {
|
|||
async delete(filterId: string): Promise<boolean> {
|
||||
const response = await this.client._request(
|
||||
"DELETE",
|
||||
`/knowledge-filter/${filterId}`
|
||||
`/api/v1/knowledge-filters/${filterId}`
|
||||
);
|
||||
|
||||
const data = (await response.json()) as DeleteKnowledgeFilterResponse;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
"""
|
||||
Public API v1 Settings endpoint.
|
||||
|
||||
Provides read-only access to configuration settings.
|
||||
Provides access to configuration settings.
|
||||
Uses API key authentication.
|
||||
"""
|
||||
from starlette.requests import Request
|
||||
from starlette.responses import JSONResponse
|
||||
from utils.logging_config import get_logger
|
||||
from config.settings import get_openrag_config
|
||||
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
|
@ -59,3 +60,27 @@ async def get_settings_endpoint(request: Request):
|
|||
{"error": "Failed to get settings"},
|
||||
status_code=500,
|
||||
)
|
||||
|
||||
|
||||
async def update_settings_endpoint(request: Request, session_manager):
|
||||
"""
|
||||
Update OpenRAG configuration settings.
|
||||
|
||||
POST /v1/settings
|
||||
|
||||
Request body (all fields optional):
|
||||
{
|
||||
"chunk_size": 1000,
|
||||
"chunk_overlap": 200
|
||||
}
|
||||
|
||||
Response:
|
||||
{
|
||||
"message": "Configuration updated successfully"
|
||||
}
|
||||
|
||||
Note: This endpoint only allows updating a limited subset of settings.
|
||||
Provider API keys and credentials cannot be updated via this endpoint.
|
||||
"""
|
||||
from api.settings import update_settings
|
||||
return await update_settings(request, session_manager)
|
||||
|
|
|
|||
70
src/main.py
70
src/main.py
|
|
@ -58,7 +58,7 @@ from auth_middleware import optional_auth, require_auth
|
|||
from api_key_middleware import require_api_key
|
||||
from services.api_key_service import APIKeyService
|
||||
from api import keys as api_keys
|
||||
from api.v1 import chat as v1_chat, search as v1_search, documents as v1_documents, settings as v1_settings
|
||||
from api.v1 import chat as v1_chat, search as v1_search, documents as v1_documents, settings as v1_settings, knowledge_filters as v1_knowledge_filters
|
||||
|
||||
# Configuration and setup
|
||||
from config.settings import (
|
||||
|
|
@ -1404,7 +1404,7 @@ async def create_app():
|
|||
),
|
||||
methods=["DELETE"],
|
||||
),
|
||||
# Settings endpoint (read-only)
|
||||
# Settings endpoints
|
||||
Route(
|
||||
"/v1/settings",
|
||||
require_api_key(services["api_key_service"])(
|
||||
|
|
@ -1412,6 +1412,72 @@ async def create_app():
|
|||
),
|
||||
methods=["GET"],
|
||||
),
|
||||
Route(
|
||||
"/v1/settings",
|
||||
require_api_key(services["api_key_service"])(
|
||||
partial(
|
||||
v1_settings.update_settings_endpoint,
|
||||
session_manager=services["session_manager"],
|
||||
)
|
||||
),
|
||||
methods=["POST"],
|
||||
),
|
||||
# Knowledge filters endpoints
|
||||
Route(
|
||||
"/v1/knowledge-filters",
|
||||
require_api_key(services["api_key_service"])(
|
||||
partial(
|
||||
v1_knowledge_filters.create_endpoint,
|
||||
knowledge_filter_service=services["knowledge_filter_service"],
|
||||
session_manager=services["session_manager"],
|
||||
)
|
||||
),
|
||||
methods=["POST"],
|
||||
),
|
||||
Route(
|
||||
"/v1/knowledge-filters/search",
|
||||
require_api_key(services["api_key_service"])(
|
||||
partial(
|
||||
v1_knowledge_filters.search_endpoint,
|
||||
knowledge_filter_service=services["knowledge_filter_service"],
|
||||
session_manager=services["session_manager"],
|
||||
)
|
||||
),
|
||||
methods=["POST"],
|
||||
),
|
||||
Route(
|
||||
"/v1/knowledge-filters/{filter_id}",
|
||||
require_api_key(services["api_key_service"])(
|
||||
partial(
|
||||
v1_knowledge_filters.get_endpoint,
|
||||
knowledge_filter_service=services["knowledge_filter_service"],
|
||||
session_manager=services["session_manager"],
|
||||
)
|
||||
),
|
||||
methods=["GET"],
|
||||
),
|
||||
Route(
|
||||
"/v1/knowledge-filters/{filter_id}",
|
||||
require_api_key(services["api_key_service"])(
|
||||
partial(
|
||||
v1_knowledge_filters.update_endpoint,
|
||||
knowledge_filter_service=services["knowledge_filter_service"],
|
||||
session_manager=services["session_manager"],
|
||||
)
|
||||
),
|
||||
methods=["PUT"],
|
||||
),
|
||||
Route(
|
||||
"/v1/knowledge-filters/{filter_id}",
|
||||
require_api_key(services["api_key_service"])(
|
||||
partial(
|
||||
v1_knowledge_filters.delete_endpoint,
|
||||
knowledge_filter_service=services["knowledge_filter_service"],
|
||||
session_manager=services["session_manager"],
|
||||
)
|
||||
),
|
||||
methods=["DELETE"],
|
||||
),
|
||||
]
|
||||
|
||||
app = Starlette(debug=True, routes=routes)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue