You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
"""
|
|
Pydantic schemas for SEC filing endpoints.
|
|
"""
|
|
|
|
from datetime import datetime
|
|
from typing import List, Optional
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class FilingDocumentInfo(BaseModel):
|
|
type: Optional[str] = None
|
|
description: Optional[str] = None
|
|
filename: Optional[str] = None
|
|
url: Optional[str] = None
|
|
size: Optional[str] = None
|
|
|
|
|
|
class FilingSummary(BaseModel):
|
|
accession_number: str
|
|
form_type: str
|
|
filing_date: str
|
|
primary_document: Optional[str] = None
|
|
filing_description: Optional[str] = None
|
|
documents_count: Optional[int] = None
|
|
|
|
|
|
class FilingSearchResponse(BaseModel):
|
|
ticker: str
|
|
filings: List[FilingSummary]
|
|
total_count: int
|
|
metadata: dict = Field(default_factory=dict)
|
|
|
|
|
|
class FilingDocumentListResponse(BaseModel):
|
|
accession_number: str
|
|
documents: List[FilingDocumentInfo]
|
|
metadata: dict = Field(default_factory=dict)
|
|
|
|
|
|
class ExhibitContentResponse(BaseModel):
|
|
accession_number: str
|
|
exhibit_type: str
|
|
content: str
|
|
content_type: Optional[str] = None
|
|
filename: Optional[str] = None
|
|
url: Optional[str] = None
|