mirror of
https://github.com/StanGirard/quivr.git
synced 2024-12-01 05:35:09 +03:00
223af1d3f6
Issue: https://github.com/StanGirard/quivr/issues/1607 Demo: https://github.com/StanGirard/quivr/assets/63923024/a087d856-e201-4b88-80b3-b001d7bb6b16
45 lines
1.0 KiB
Python
45 lines
1.0 KiB
Python
from enum import Enum
|
|
from typing import Optional
|
|
from uuid import UUID
|
|
|
|
from pydantic import BaseModel, Extra
|
|
|
|
|
|
class ApiBrainDefinitionSchemaProperty(BaseModel, extra=Extra.forbid):
|
|
type: str
|
|
description: str
|
|
enum: Optional[list]
|
|
name: str
|
|
|
|
def dict(self, **kwargs):
|
|
result = super().dict(**kwargs)
|
|
if "enum" in result and result["enum"] is None:
|
|
del result["enum"]
|
|
return result
|
|
|
|
|
|
class ApiBrainDefinitionSchema(BaseModel, extra=Extra.forbid):
|
|
properties: list[ApiBrainDefinitionSchemaProperty] = []
|
|
required: list[str] = []
|
|
|
|
|
|
class ApiBrainDefinitionSecret(BaseModel, extra=Extra.forbid):
|
|
name: str
|
|
type: str
|
|
|
|
|
|
class ApiBrainAllowedMethods(str, Enum):
|
|
GET = "GET"
|
|
POST = "POST"
|
|
PUT = "PUT"
|
|
DELETE = "DELETE"
|
|
|
|
|
|
class ApiBrainDefinition(BaseModel, extra=Extra.forbid):
|
|
brain_id: UUID
|
|
method: ApiBrainAllowedMethods
|
|
url: str
|
|
params: ApiBrainDefinitionSchema
|
|
search_params: ApiBrainDefinitionSchema
|
|
secrets: list[ApiBrainDefinitionSecret]
|