app.schemas¶
Pydantic response models for the read-only catalog HTTP API.
Every model declares model_config = ConfigDict(from_attributes=True)
so routers build responses directly from the plain dataclasses returned
by the read services (app.services.search,
app.services.record_detail, app.services.sources_view)
with SomeSchema.model_validate(value); no router re-reads the
storage port or domain modules directly.
Modules:
app.schemas.records– search results and the record detail page.app.schemas.sources– source registrations and search facets.
- class app.schemas.ApprovalOut(*, state, needs_approval, digest, policy, history, approvable, approval_blocker, last_accepted_digest, can_decide, decide_blocked_code, decide_blocked_reason, divergence, competing_candidates)¶
Bases:
BaseModelApproval state of a record’s current content, for the caller.
- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- state: ApprovalStateCode¶
- policy: PolicySummaryOut¶
- history: list[DecisionSummaryOut]¶
- divergence: DivergenceOut | None¶
- competing_candidates: list[CompetingCandidateOut]¶
- class app.schemas.DecisionSummaryOut(*, id, digest, current_digest, action, actor_issuer, actor_subject, actor_display, comment, policy_id, policy_version, provenance, created_at)¶
Bases:
BaseModelOne append-only decision event of the record’s identity.
- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- action: DecisionAction¶
- provenance: DecisionProvenanceOut¶
- class app.schemas.ErratumOut(*, id, kind, ref, source_id, project, path, title, type, section, reported_by, reported_date, original_html, corrected_html, notes_html, approval_state, approvable, digest, updated_at, has_content)¶
Bases:
BaseModelOne erratum (published or candidate) of the record being viewed.
approval_stateis the erratum’s own state:pending/policy_missing= reported,accepted= verified,rejected,changed_since_acceptance;not_requiredmeans no review is required.has_contentis false (and the content fields empty) for a row stored before erratum content was.- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- kind: RecordState¶
- type: ErratumType | None¶
- approval_state: ApprovalStateCode¶
- class app.schemas.FacetProjectOut(*, project, count)¶
Bases:
BaseModelRecord count of one project within a source.
- class app.schemas.FacetSourceOut(*, source_id, count, projects)¶
Bases:
BaseModelOne source’s projects, for the filter select.
- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- projects: list[FacetProjectOut]¶
- class app.schemas.FacetsOut(*, sources)¶
Bases:
BaseModelFilter options for the search UI.
- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- sources: list[FacetSourceOut]¶
- class app.schemas.FreshnessOut(*, last_attempt_at, last_success_at, last_status, stale, intake)¶
Bases:
BaseModelFreshness of a record’s owning registration.
- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- last_status: PollStatus¶
- intake: list[IntakeKind]¶
- class app.schemas.InboundLinkOut(*, link_type, source_id, source_title)¶
Bases:
BaseModelA link from another record to the one being viewed.
- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- link_type: InboundType¶
- class app.schemas.IssueCountsOut(*, error, warning)¶
Bases:
BaseModelStored-issue counts of one record, by severity.
- class app.schemas.IssueOut(*, severity, code, message)¶
Bases:
BaseModelOne validation finding.
- class app.schemas.MetadataOut(*, id, adr_uuid, decision_date, decision_date_inferred, kind, record_kind, title, title_source, digest, previous_digest)¶
Bases:
BaseModelIdentity and authored metadata of one record.
- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- kind: RecordState¶
- record_kind: RecordKind¶
- title_source: TitleSource¶
- class app.schemas.OutboundLinkOut(*, link_type, target_uuid, target_id, target_title, resolution, ambiguous, candidate_ids)¶
Bases:
BaseModelOne outbound link and how it resolved.
- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- resolution: Resolution | None¶
- class app.schemas.PolicySummaryOut(*, status, id, version, required, allow_self_approval)¶
Bases:
BaseModelThe applicable approval policy, or why there is none.
- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- status: PolicyStatus¶
- class app.schemas.ProvenanceOut(*, source_id, project, path, ref, source_url, updated_at)¶
Bases:
BaseModelWhere a record’s content came from.
- class app.schemas.RecordDetailOut(*, metadata, issues, rendered_html, provenance, freshness, outbound_links, inbound_links, errata, errata_summary, erratum, erratum_for, status, siblings, legacy_signoff_unverified, approval)¶
Bases:
BaseModelEverything the record detail page shows.
- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- metadata: MetadataOut¶
- provenance: ProvenanceOut¶
- freshness: FreshnessOut¶
- outbound_links: list[OutboundLinkOut]¶
- inbound_links: list[InboundLinkOut]¶
- errata: list[ErratumOut]¶
- errata_summary: ErrataSummaryOut¶
- erratum: ErratumContentOut | None¶
- erratum_for: ErratumForOut | None¶
- status: DisplayStatus¶
- siblings: list[SiblingOut]¶
- approval: ApprovalOut¶
- class app.schemas.SearchItemOut(*, id, title, source_id, project, path, ref, kind, record_kind, approval_state, approvable, issue_counts, erratum_for_title)¶
Bases:
BaseModelOne search result row.
- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- kind: RecordState¶
- record_kind: RecordKind¶
- approval_state: ApprovalStateCode¶
- issue_counts: IssueCountsOut¶
- class app.schemas.SearchPageOut(*, items, total, page, page_size)¶
Bases:
BaseModelOne page of search results.
- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- items: list[SearchItemOut]¶
- class app.schemas.SiblingOut(*, id, kind, source_id, project, path, ref, digest, title, decision_date, decision_date_inferred, approval_state, approvable)¶
Bases:
BaseModelOne published or candidate row sharing a record’s identity.
- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- kind: RecordState¶
- approval_state: ApprovalStateCode¶
- class app.schemas.SourceOut(*, id, type, enabled, config_error, config_error_code, intake, published_ref, last_attempt_at, last_success_at, last_status, last_error, stale)¶
Bases:
BaseModelOne source registration’s configuration and freshness.
- model_config: ClassVar[ConfigDict] = {'from_attributes': True}¶
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- config_error_code: ConfigErrorCode | None¶
- intake: list[IntakeKind]¶
- last_status: PollStatus¶