from pydantic import BaseModel class PublishReadinessValidationSummary(BaseModel): sectors_count: int groups_count: int seats_count: int priced_seats_count: int unpriced_seats_count: int duplicate_seat_ids_count: int seats_with_missing_contract_count: int is_publishable: bool class PublishReadinessPricingCoverage(BaseModel): total_seats: int priced_seats: int unpriced_seats: int coverage_percent: float class PublishReadinessSnapshot(BaseModel): available: bool categories_count: int rules_count: int class PublishReadinessFlags(BaseModel): validation_publishable: bool snapshot_available: bool require_full_pricing_coverage: bool full_pricing_coverage: bool pricing_gate_passed: bool is_ready_to_publish: bool class PublishReadinessResponse(BaseModel): scheme_id: str scheme_version_id: str status: str validation_summary: PublishReadinessValidationSummary pricing_coverage: PublishReadinessPricingCoverage snapshot: PublishReadinessSnapshot readiness: PublishReadinessFlags class SchemePublishActionResponse(BaseModel): scheme_id: str scheme_version_id: str status: str current_version_number: int published_at: str | None pricing_snapshot: dict validation_summary: PublishReadinessValidationSummary