diff --git a/README.md b/README.md index 0d8f5d42e..f9aad4e8c 100644 --- a/README.md +++ b/README.md @@ -130,14 +130,14 @@ Lightspeed Core Stack is based on the FastAPI framework (Uvicorn). The service i Lightspeed Stack supports multiple LLM providers. - | Provider | Setup Documentation | - |----------------|-----------------------------------------------------------------------| - | OpenAI | https://platform.openai.com | - | Azure OpenAI | https://azure.microsoft.com/en-us/products/ai-services/openai-service | - | Google VertexAI| https://cloud.google.com/vertex-ai | - | IBM WatsonX | https://www.ibm.com/products/watsonx | - | RHOAI (vLLM) | See tests/e2e-prow/rhoai/configs/run.yaml | - | RHEL AI (vLLM) | See tests/e2e/configs/run-rhelai.yaml | + | Provider | Setup Documentation | + |-----------------|-----------------------------------------------------------------------| + | OpenAI | https://platform.openai.com | + | Azure OpenAI | https://azure.microsoft.com/en-us/products/ai-services/openai-service | + | Google VertexAI | https://cloud.google.com/vertex-ai | + | IBM WatsonX | https://www.ibm.com/products/watsonx | + | RHOAI (vLLM) | See tests/e2e-prow/rhoai/configs/run.yaml | + | RHEL AI (vLLM) | See tests/e2e/configs/run-rhelai.yaml | See `docs/providers.md` for configuration details. @@ -200,17 +200,17 @@ To quickly get hands on LCS, we can run it using the default configurations prov Lightspeed Core Stack (LCS) provides support for Large Language Model providers. The models listed in the table below represent specific examples that have been tested within LCS. __Note__: Support for individual models is dependent on the specific inference provider's implementation within the currently supported version of Llama Stack. -| Provider | Model | Tool Calling | provider_type | Example | -| -------- | ---------------------------------------------- | ------------ | -------------- | -------------------------------------------------------------------------- | -| OpenAI | gpt-5, gpt-4o, gpt4-turbo, gpt-4.1, o1, o3, o4 | Yes | remote::openai | [1](examples/openai-faiss-run.yaml) [2](examples/openai-pgvector-run.yaml) | -| OpenAI | gpt-3.5-turbo, gpt-4 | No | remote::openai | | -| RHOAI (vLLM)| meta-llama/Llama-3.2-1B-Instruct | Yes | remote::vllm | [1](tests/e2e-prow/rhoai/configs/run.yaml) | -| RHAIIS (vLLM)| meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhaiis.yaml) | -| RHEL AI (vLLM)| meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhelai.yaml) | -| Azure | gpt-5, gpt-5-mini, gpt-5-nano, gpt-4o-mini, o3-mini, o4-mini, o1| Yes | remote::azure | [1](examples/azure-run.yaml) | -| Azure | gpt-5-chat, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o1-mini | No or limited | remote::azure | | -| VertexAI | google/gemini-2.0-flash, google/gemini-2.5-flash, google/gemini-2.5-pro [^1] | Yes | remote::vertexai | [1](examples/vertexai-run.yaml) | -| WatsonX | meta-llama/llama-3-3-70b-instruct | Yes | remote::watsonx | [1](examples/watsonx-run.yaml) | +| Provider | Model | Tool Calling | provider_type | Example | +|----------------|------------------------------------------------------------------------------|---------------|------------------|----------------------------------------------------------------------------| +| OpenAI | gpt-5, gpt-4o, gpt-4-turbo, gpt-4.1, o1, o3, o4 | Yes | remote::openai | [1](examples/openai-faiss-run.yaml) [2](examples/openai-pgvector-run.yaml) | +| OpenAI | gpt-3.5-turbo, gpt-4 | No | remote::openai | | +| RHOAI (vLLM) | meta-llama/Llama-3.2-1B-Instruct | Yes | remote::vllm | [1](tests/e2e-prow/rhoai/configs/run.yaml) | +| RHAIIS (vLLM) | meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhaiis.yaml) | +| RHEL AI (vLLM) | meta-llama/Llama-3.1-8B-Instruct | Yes | remote::vllm | [1](tests/e2e/configs/run-rhelai.yaml) | +| Azure | gpt-5, gpt-5-mini, gpt-5-nano, gpt-4o-mini, o3-mini, o4-mini, o1 | Yes | remote::azure | [1](examples/azure-run.yaml) | +| Azure | gpt-5-chat, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o1-mini | No or limited | remote::azure | | +| VertexAI | google/gemini-2.0-flash, google/gemini-2.5-flash, google/gemini-2.5-pro [^1] | Yes | remote::vertexai | [1](examples/vertexai-run.yaml) | +| WatsonX | meta-llama/llama-3-3-70b-instruct | Yes | remote::watsonx | [1](examples/watsonx-run.yaml) | [^1]: List of models is limited by design in llama-stack, future versions will probably allow to use more models (see [here](https://github.com/llamastack/llama-stack/blob/release-0.3.x/llama_stack/providers/remote/inference/vertexai/vertexai.py#L54)) @@ -492,12 +492,13 @@ mcp_servers: ##### Authentication Method Comparison -| Method | Use Case | Configuration | Token Scope | Example | -|--------|----------|---------------|-------------|---------| -| **Static File** | Service tokens, API keys | File path in config | Global (all users) | `"/var/secrets/token"` | -| **Kubernetes** | K8s service accounts | `"kubernetes"` keyword | Per-user (from auth) | `"kubernetes"` | -| **Client** | User-specific tokens | `"client"` keyword + HTTP header | Per-request | `"client"` | -| **OAuth** | OAuth-protected MCP servers | `"oauth"` keyword + HTTP header | Per-request (from OAuth flow) | `"oauth"` | +| Method | Use Case | Configuration | Token Scope | Example | +|-----------------|-----------------------------|----------------------------------|-------------------------------|------------------------| +| **Static File** | Service tokens, API keys | File path in config | Global (all users) | `"/var/secrets/token"` | +| **Kubernetes** | K8s service accounts | `"kubernetes"` keyword | Per-user (from auth) | `"kubernetes"` | +| **Client** | User-specific tokens | `"client"` keyword + HTTP header | Per-request | `"client"` | +| **OAuth** | OAuth-protected MCP servers | `"oauth"` keyword + HTTP header | Per-request (from OAuth flow) | `"oauth"` | + ##### Important: Automatic Server Skipping @@ -804,7 +805,7 @@ verify Run all linters distribution-archives Generate distribution archives to be uploaded into Python registry upload-distribution-archives Upload distribution archives into Python registry konflux-requirements generate hermetic requirements.*.txt file for konflux build -konflux-rpm-lock generate rpm.lock.yaml file for konflux build +konflux-rpm-lock generate rpm.lock.yaml file for konflux build ``` ## Running Linux container image diff --git a/docs/openapi.md b/docs/openapi.md index cf81dee59..c48a7858d 100644 --- a/docs/openapi.md +++ b/docs/openapi.md @@ -428,17 +428,15 @@ Returns: ### ✅ Responses -| Status Code | Description | Component | -|-------------|-------------|-----------| -| 200 | Successful response | [MCPClientAuthOptionsResponse](#mcpclientauthoptionsresponse) | -| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) +| Status Code | Description | Component | +|-------------|-----------------------|---------------------------------------------------------------| +| 200 | Successful response | [MCPClientAuthOptionsResponse](#mcpclientauthoptionsresponse) | +| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) | +| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) | +| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) | Examples - - - - ```json { "detail": { @@ -459,14 +457,6 @@ Examples } } ``` - | -| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) - -Examples - - - - ```json { @@ -476,14 +466,6 @@ Examples } } ``` - | -| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) - -Examples - - - - ```json { @@ -493,7 +475,7 @@ Examples } } ``` - | + ## GET `/v1/shields` > **Shields Endpoint Handler** @@ -516,17 +498,16 @@ Returns: ### ✅ Responses -| Status Code | Description | Component | -|-------------|-------------|-----------| -| 200 | Successful response | [ShieldsResponse](#shieldsresponse) | -| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) +| Status Code | Description | Component | +|-------------|-----------------------|-------------------------------------------------------------| +| 200 | Successful response | [ShieldsResponse](#shieldsresponse) | +| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) | +| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) | +| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) | +| 503 | Service unavailable | [ServiceUnavailableResponse](#serviceunavailableresponse) | Examples - - - - ```json { "detail": { @@ -547,11 +528,6 @@ Examples } } ``` - | -| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) - -Examples - @@ -564,14 +540,6 @@ Examples } } ``` - | -| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) - -Examples - - - - ```json { @@ -581,13 +549,6 @@ Examples } } ``` - | -| 503 | Service unavailable | [ServiceUnavailableResponse](#serviceunavailableresponse) - -Examples - - - ```json @@ -598,7 +559,6 @@ Examples } } ``` - | ## GET `/v1/providers` > **Providers Endpoint Handler** @@ -621,17 +581,18 @@ Raises: ### ✅ Responses -| Status Code | Description | Component | -|-------------|-------------|-----------| -| 200 | Successful response | [ProvidersListResponse](#providerslistresponse) | -| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) +| Status Code | Description | Component | +|-------------|-----------------------|-------------------------------------------------------------| +| 200 | Successful response | [ProvidersListResponse](#providerslistresponse) | +| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) | +| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) | +| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) | +| 503 | Service unavailable | [ServiceUnavailableResponse](#serviceunavailableresponse) | Examples - - ```json { "detail": { @@ -652,13 +613,6 @@ Examples } } ``` - | -| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) - -Examples - - - ```json @@ -669,13 +623,6 @@ Examples } } ``` - | -| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) - -Examples - - - ```json @@ -686,13 +633,6 @@ Examples } } ``` - | -| 503 | Service unavailable | [ServiceUnavailableResponse](#serviceunavailableresponse) - -Examples - - - ```json @@ -703,7 +643,7 @@ Examples } } ``` - | + ## GET `/v1/providers/{provider_id}` > **Get Provider Endpoint Handler** @@ -725,17 +665,22 @@ Raises: ### 🔗 Parameters -| Name | Type | Required | Description | -|------|------|----------|-------------| -| provider_id | string | True | | +| Name | Type | Required | Description | +|-------------|--------|----------|-------------| +| provider_id | string | True | | ### ✅ Responses -| Status Code | Description | Component | -|-------------|-------------|-----------| -| 200 | Successful response | [ProviderResponse](#providerresponse) | -| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) +| Status Code | Description | Component | +|-------------|-----------------------|-------------------------------------------------------------| +| 200 | Successful response | [ProviderResponse](#providerresponse) | +| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) | +| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) | +| 404 | Resource not found | [NotFoundResponse](#notfoundresponse) | +| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) | +| 503 | Service unavailable | [ServiceUnavailableResponse](#serviceunavailableresponse) | +| 422 | Validation Error | [HTTPValidationError](#httpvalidationerror) | Examples @@ -763,12 +708,6 @@ Examples } } ``` - | -| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) - -Examples - - @@ -780,12 +719,6 @@ Examples } } ``` - | -| 404 | Resource not found | [NotFoundResponse](#notfoundresponse) - -Examples - - @@ -797,13 +730,6 @@ Examples } } ``` - | -| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) - -Examples - - - ```json @@ -814,14 +740,6 @@ Examples } } ``` - | -| 503 | Service unavailable | [ServiceUnavailableResponse](#serviceunavailableresponse) - -Examples - - - - ```json { @@ -831,8 +749,7 @@ Examples } } ``` - | -| 422 | Validation Error | [HTTPValidationError](#httpvalidationerror) | + ## GET `/v1/rags` > **Rags Endpoint Handler** @@ -855,10 +772,13 @@ Raises: ### ✅ Responses -| Status Code | Description | Component | -|-------------|-------------|-----------| -| 200 | Successful response | [RAGListResponse](#raglistresponse) | -| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) +| Status Code | Description | Component | +|-------------|-----------------------|-------------------------------------------------------------| +| 200 | Successful response | [RAGListResponse](#raglistresponse) | +| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) | +| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) | +| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) | +| 503 | Service unavailable | [ServiceUnavailableResponse](#serviceunavailableresponse) | Examples @@ -886,11 +806,6 @@ Examples } } ``` - | -| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) - -Examples - @@ -903,12 +818,6 @@ Examples } } ``` - | -| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) - -Examples - - @@ -920,12 +829,6 @@ Examples } } ``` - | -| 503 | Service unavailable | [ServiceUnavailableResponse](#serviceunavailableresponse) - -Examples - - @@ -937,7 +840,7 @@ Examples } } ``` - | + ## GET `/v1/rags/{rag_id}` > **Get Rag Endpoint Handler** @@ -963,17 +866,22 @@ Raises: ### 🔗 Parameters -| Name | Type | Required | Description | -|------|------|----------|-------------| -| rag_id | string | True | | +| Name | Type | Required | Description | +|--------|--------|----------|-------------| +| rag_id | string | True | | ### ✅ Responses -| Status Code | Description | Component | -|-------------|-------------|-----------| -| 200 | Successful response | [RAGInfoResponse](#raginforesponse) | -| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) +| Status Code | Description | Component | +|-------------|-----------------------|-------------------------------------------------------------| +| 200 | Successful response | [RAGInfoResponse](#raginforesponse) | +| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) | +| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) | +| 404 | Resource not found | [NotFoundResponse](#notfoundresponse) | +| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) | +| 503 | Service unavailable | [ServiceUnavailableResponse](#serviceunavailableresponse) | +| 422 | Validation Error | [HTTPValidationError](#httpvalidationerror) | Examples @@ -1001,12 +909,6 @@ Examples } } ``` - | -| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) - -Examples - - @@ -1018,14 +920,6 @@ Examples } } ``` - | -| 404 | Resource not found | [NotFoundResponse](#notfoundresponse) - -Examples - - - - ```json { @@ -1035,13 +929,6 @@ Examples } } ``` - | -| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) - -Examples - - - ```json @@ -1052,13 +939,6 @@ Examples } } ``` - | -| 503 | Service unavailable | [ServiceUnavailableResponse](#serviceunavailableresponse) - -Examples - - - ```json @@ -1069,8 +949,7 @@ Examples } } ``` - | -| 422 | Validation Error | [HTTPValidationError](#httpvalidationerror) | + ## POST `/v1/query` > **Query Endpoint Handler** @@ -1104,10 +983,16 @@ Raises: ### ✅ Responses -| Status Code | Description | Component | -|-------------|-------------|-----------| -| 200 | Successful response | [QueryResponse](#queryresponse) | -| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) +| Status Code | Description | Component | +|-------------|---------------------------|-------------------------------------------------------------| +| 200 | Successful response | [QueryResponse](#queryresponse) | +| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) | +| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) | +| 404 | Resource not found | [NotFoundResponse](#notfoundresponse) | +| 422 | Request validation failed | [UnprocessableEntityResponse](#unprocessableentityresponse) | +| 429 | Quota limit exceeded | [QuotaExceededResponse](#quotaexceededresponse) | +| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) | +| 503 | Service unavailable | [ServiceUnavailableResponse](#serviceunavailableresponse) | Examples @@ -1135,12 +1020,6 @@ Examples } } ``` - | -| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) - -Examples - - @@ -1176,12 +1055,6 @@ Examples } } ``` - | -| 404 | Resource not found | [NotFoundResponse](#notfoundresponse) - -Examples - - @@ -1217,14 +1090,6 @@ Examples } } ``` - | -| 422 | Request validation failed | [UnprocessableEntityResponse](#unprocessableentityresponse) - -Examples - - - - ```json { @@ -1258,12 +1123,6 @@ Examples } } ``` - | -| 429 | Quota limit exceeded | [QuotaExceededResponse](#quotaexceededresponse) - -Examples - - @@ -1347,13 +1206,6 @@ Examples } } ``` - | -| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) - -Examples - - - ```json @@ -1364,13 +1216,6 @@ Examples } } ``` - | -| 503 | Service unavailable | [ServiceUnavailableResponse](#serviceunavailableresponse) - -Examples - - - ```json @@ -1381,7 +1226,7 @@ Examples } } ``` - | + ## POST `/v1/streaming_query` > **Streaming Query Endpoint Handler** @@ -1415,17 +1260,22 @@ Raises: ### ✅ Responses -| Status Code | Description | Component | -|-------------|-------------|-----------| -| 200 | Successful response | string | -| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) +| Status Code | Description | Component | +|-------------|---------------------------|-------------------------------------------------------------| +| 200 | Successful response | string | +| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) | +| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) | +| 404 | Resource not found | [NotFoundResponse](#notfoundresponse) | +| 422 | Request validation failed | [UnprocessableEntityResponse](#unprocessableentityresponse) | +| 429 | Quota limit exceeded | [QuotaExceededResponse](#quotaexceededresponse) | +| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) | +| 503 | Service unavailable | [ServiceUnavailableResponse](#serviceunavailableresponse) | Examples - ```json { "detail": { @@ -1446,11 +1296,6 @@ Examples } } ``` - | -| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) - -Examples - @@ -1487,13 +1332,6 @@ Examples } } ``` - | -| 404 | Resource not found | [NotFoundResponse](#notfoundresponse) - -Examples - - - ```json @@ -1528,13 +1366,6 @@ Examples } } ``` - | -| 422 | Request validation failed | [UnprocessableEntityResponse](#unprocessableentityresponse) - -Examples - - - ```json @@ -1569,13 +1400,6 @@ Examples } } ``` - | -| 429 | Quota limit exceeded | [QuotaExceededResponse](#quotaexceededresponse) - -Examples - - - ```json @@ -1658,12 +1482,6 @@ Examples } } ``` - | -| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) - -Examples - - @@ -1675,13 +1493,6 @@ Examples } } ``` - | -| 503 | Service unavailable | [ServiceUnavailableResponse](#serviceunavailableresponse) - -Examples - - - ```json @@ -1692,7 +1503,7 @@ Examples } } ``` - | + ## GET `/v1/config` > **Config Endpoint Handler** @@ -1713,10 +1524,12 @@ Returns: ### ✅ Responses -| Status Code | Description | Component | -|-------------|-------------|-----------| -| 200 | Successful response | [ConfigurationResponse](#configurationresponse) | -| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) +| Status Code | Description | Component | +|-------------|-----------------------|-------------------------------------------------------------| +| 200 | Successful response | [ConfigurationResponse](#configurationresponse) | +| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) | +| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) | +| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) | Examples @@ -1744,13 +1557,6 @@ Examples } } ``` - | -| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) - -Examples - - - ```json @@ -1761,12 +1567,6 @@ Examples } } ``` - | -| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) - -Examples - - @@ -1778,7 +1578,7 @@ Examples } } ``` - | + ## POST `/v1/feedback` > **Feedback Endpoint Handler** @@ -1813,10 +1613,14 @@ Raises: ### ✅ Responses -| Status Code | Description | Component | -|-------------|-------------|-----------| -| 200 | Successful response | [FeedbackResponse](#feedbackresponse) | -| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) +| Status Code | Description | Component | +|-------------|-----------------------|-------------------------------------------------------------| +| 200 | Successful response | [FeedbackResponse](#feedbackresponse) | +| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) | +| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) | +| 404 | Resource not found | [NotFoundResponse](#notfoundresponse) | +| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) | +| 422 | Validation Error | [HTTPValidationError](#httpvalidationerror) | Examples @@ -1844,11 +1648,6 @@ Examples } } ``` - | -| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) - -Examples - @@ -1873,13 +1672,6 @@ Examples } } ``` - | -| 404 | Resource not found | [NotFoundResponse](#notfoundresponse) - -Examples - - - ```json @@ -1890,13 +1682,6 @@ Examples } } ``` - | -| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) - -Examples - - - ```json @@ -1919,8 +1704,7 @@ Examples } } ``` - | -| 422 | Validation Error | [HTTPValidationError](#httpvalidationerror) | + ## GET `/v1/feedback/status` > **Feedback Status** @@ -1939,9 +1723,10 @@ Returns: ### ✅ Responses -| Status Code | Description | Component | -|-------------|-------------|-----------| -| 200 | Successful response | [StatusResponse](#statusresponse) | +| Status Code | Description | Component | +|-------------|---------------------|-----------------------------------| +| 200 | Successful response | [StatusResponse](#statusresponse) | + ## PUT `/v1/feedback/status` > **Update Feedback Status** @@ -1965,10 +1750,13 @@ Returns: ### ✅ Responses -| Status Code | Description | Component | -|-------------|-------------|-----------| -| 200 | Successful response | [FeedbackStatusUpdateResponse](#feedbackstatusupdateresponse) | -| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) +| Status Code | Description | Component | +|-------------|-----------------------|---------------------------------------------------------------| +| 200 | Successful response | [FeedbackStatusUpdateResponse](#feedbackstatusupdateresponse) | +| 401 | Unauthorized | [UnauthorizedResponse](#unauthorizedresponse) | +| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) | +| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) | +| 422 | Validation Error | [HTTPValidationError](#httpvalidationerror) | Examples @@ -1996,13 +1784,6 @@ Examples } } ``` - | -| 403 | Permission denied | [ForbiddenResponse](#forbiddenresponse) - -Examples - - - ```json @@ -2013,12 +1794,6 @@ Examples } } ``` - | -| 500 | Internal server error | [InternalServerErrorResponse](#internalservererrorresponse) - -Examples - - @@ -2030,8 +1805,7 @@ Examples } } ``` - | -| 422 | Validation Error | [HTTPValidationError](#httpvalidationerror) | + ## GET `/v1/conversations` > **Conversations List Endpoint Handler V1**