quivr/backend/modules/brain/entity/api_brain_definition_entity.py
Stan Girard dfdb294c50
feat: 🎸 api (#2078)
adding metadata to api

# Description

Please include a summary of the changes and the related issue. Please
also include relevant motivation and context.

## Checklist before requesting a review

Please delete options that are not relevant.

- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my code
- [ ] I have commented hard-to-understand areas
- [ ] I have ideally added tests that prove my fix is effective or that
my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged

## Screenshots (if appropriate):
2024-01-25 15:56:46 -08:00

48 lines
1.1 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
description: Optional[str]
class ApiBrainAllowedMethods(str, Enum):
GET = "GET"
POST = "POST"
PUT = "PUT"
DELETE = "DELETE"
class ApiBrainDefinitionEntity(BaseModel, extra=Extra.forbid):
brain_id: UUID
method: ApiBrainAllowedMethods
url: str
params: ApiBrainDefinitionSchema
search_params: ApiBrainDefinitionSchema
secrets: list[ApiBrainDefinitionSecret]
raw: bool = False
jq_instructions: Optional[str] = None