from __future__ import annotations """Pydantic response models for the API.""" from datetime import date, datetime from pydantic import BaseModel class ParteiOut(BaseModel): id: int kuerzel: str name: str | None = None farbe: str | None = None class GremiumOut(BaseModel): id: int name: str kuerzel: str | None = None typ: str | None = None class BeratungOut(BaseModel): id: int gremium: GremiumOut | None = None sitzung_datum: date | None = None rolle: str | None = None ergebnis: str | None = None ergebnis_text: str | None = None class VorlageKurz(BaseModel): id: int aktenzeichen: str | None = None typ: str | None = None betreff: str | None = None datum_eingang: date | None = None ist_verwaltungsvorlage: bool = False class ReferenzOut(BaseModel): vorlage_id: int aktenzeichen: str | None = None betreff: str | None = None vorlage_typ: str | None = None datum_eingang: date | None = None ref_typ: str | None = None konfidenz: float | None = None kontext: str | None = None class KiZusammenfassung(BaseModel): zusammenfassung: str | None = None kernforderung: str | None = None begruendung: str | None = None betroffene_orte: list[str] = [] thema: str | None = None partei: str | list[str] | None = None class UmsetzungsBewertung(BaseModel): score: float | None = None begruendung: str | None = None quelle_vorlage_id: int | None = None quelle_aktenzeichen: str | None = None class VorlageDetail(BaseModel): id: int aktenzeichen: str | None = None aktenzeichen_basis: str | None = None aktenzeichen_suffix: str | None = None typ: str | None = None betreff: str | None = None volltext_clean: str | None = None datum_eingang: date | None = None pdf_url: str | None = None web_url: str | None = None ki_zusammenfassung: KiZusammenfassung | None = None ist_verwaltungsvorlage: bool = False thema_kurz: str | None = None antragsteller: list[ParteiOut] = [] beratungen: list[BeratungOut] = [] referenzen_ausgehend: list[ReferenzOut] = [] referenzen_eingehend: list[ReferenzOut] = [] kette_id: int | None = None umsetzungsbewertungen: list[UmsetzungsBewertung] = [] ampel: dict | None = None ki_versionen: list[dict] | None = None class KettenGliedOut(BaseModel): vorlage: VorlageKurz position: int rolle: str | None = None class KetteKurz(BaseModel): id: int ursprung: VorlageKurz | None = None typ: str | None = None thema: str | None = None status: str | None = None status_seit: date | None = None letzte_aktivitaet: date | None = None vertagungen_count: int = 0 glieder_count: int = 0 strang: str | None = None ampel: dict | None = None class KetteDetail(BaseModel): id: int ursprung: VorlageKurz | None = None typ: str | None = None thema: str | None = None status: str | None = None status_seit: date | None = None letzte_aktivitaet: date | None = None vertagungen_count: int = 0 begruendung: str | None = None glieder: list[dict] = [] antragsteller: list[ParteiOut] = [] graph: dict | None = None strang: str | None = None ampel: dict | None = None umsetzung: dict | None = None umsetzung_versionen: list[dict] | None = None class PaginatedVorlagen(BaseModel): items: list[VorlageKurz] total: int page: int page_size: int class PaginatedKetten(BaseModel): items: list[KetteKurz] total: int page: int page_size: int