70 lines
2.0 KiB
Python
70 lines
2.0 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Any
|
|
from uuid import UUID
|
|
|
|
from pydantic import BaseModel, ConfigDict, computed_field
|
|
|
|
from app.models import ActionIngestStatus, HttpMethod
|
|
|
|
|
|
class ActionListItemResponse(BaseModel):
|
|
id: UUID
|
|
user_id: UUID | None = None
|
|
operation_id: str | None = None
|
|
method: HttpMethod
|
|
path: str
|
|
base_url: str | None = None
|
|
summary: str | None = None
|
|
description: str | None = None
|
|
tags: list[str] | None = None
|
|
source_filename: str | None = None
|
|
ingest_status: ActionIngestStatus
|
|
ingest_error: str | None = None
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class ActionIngestItemResponse(BaseModel):
|
|
id: UUID
|
|
user_id: UUID | None = None
|
|
operation_id: str | None = None
|
|
method: HttpMethod
|
|
path: str
|
|
summary: str | None = None
|
|
source_filename: str | None = None
|
|
ingest_status: ActionIngestStatus
|
|
ingest_error: str | None = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class ActionDetailResponse(ActionListItemResponse):
|
|
parameters_schema: dict[str, Any] | None = None
|
|
request_body_schema: dict[str, Any] | None = None
|
|
response_schema: dict[str, Any] | None = None
|
|
raw_spec: dict[str, Any] | None = None
|
|
|
|
@computed_field(return_type=dict[str, Any] | None)
|
|
@property
|
|
def json_schema(self) -> dict[str, Any] | None:
|
|
if not any((self.parameters_schema, self.request_body_schema, self.response_schema, self.raw_spec)):
|
|
return None
|
|
|
|
return {
|
|
"parameters": self.parameters_schema,
|
|
"request_body": self.request_body_schema,
|
|
"response": self.response_schema,
|
|
"raw_spec": self.raw_spec,
|
|
}
|
|
|
|
|
|
class ActionIngestResponse(BaseModel):
|
|
succeeded_count: int
|
|
failed_count: int
|
|
succeeded_actions: list[ActionDetailResponse]
|
|
failed_actions: list[ActionDetailResponse]
|