240 lines
6.2 KiB
Python
240 lines
6.2 KiB
Python
from __future__ import annotations
|
|
|
|
from enum import Enum
|
|
from typing import Any
|
|
|
|
from pydantic import BaseModel, TypeAdapter
|
|
|
|
from .enums import (
|
|
AgentJobErrorCategory,
|
|
AgentJobStatus,
|
|
AgentJobType,
|
|
ArticleWorkflowStatus,
|
|
ContentReviewKind,
|
|
AssetStatus,
|
|
AssetType,
|
|
ClaimRiskLevel,
|
|
ClaimSupportStatus,
|
|
PlanReviewStatus,
|
|
PublishingStatus,
|
|
ReviewStatus,
|
|
ReviewSuggestionStatus,
|
|
ReviewType,
|
|
Role,
|
|
ScriptConfigVersionStatus,
|
|
)
|
|
from .models import (
|
|
AgentJobOutput,
|
|
AgentJobListResponse,
|
|
AgentJobResponse,
|
|
AgentJobSummary,
|
|
AgentJobTestCodexRequest,
|
|
ArticleCreateRequest,
|
|
ArticleCreateResponse,
|
|
ArticleDetailResponse,
|
|
ArticleListResponse,
|
|
ArticleSummary,
|
|
BoundaryQuestionListResponse,
|
|
BoundaryQuestionResponse,
|
|
BoundaryQuestionSummary,
|
|
BoundaryQuestionUpdateRequest,
|
|
ObservabilityTimelineEventSummary,
|
|
AssetGenerateSpecsResponse,
|
|
AssetListResponse,
|
|
AssetResponse,
|
|
AssetRevisionSummary,
|
|
AssetSummary,
|
|
AssetUpdateRequest,
|
|
AssetUploadRequest,
|
|
AssetUploadResponse,
|
|
ClaimSummary,
|
|
CurrentUser,
|
|
CurrentUserResponse,
|
|
DraftAssembleResponse,
|
|
DraftFaqItem,
|
|
DraftListResponse,
|
|
DraftResponse,
|
|
DraftSummary,
|
|
DraftUpdateRequest,
|
|
ContentReviewIssueSummary,
|
|
ContentReviewReportSummary,
|
|
ContentReviewSuggestionSummary,
|
|
FinalApprovalChecklistItemSummary,
|
|
FinalApprovalChecklistResponse,
|
|
FinalApprovalPublishingSettings,
|
|
FinalApprovalRequest,
|
|
FinalApprovalResponse,
|
|
EvidenceSummary,
|
|
EvidenceCreateRequest,
|
|
EvidenceMatrixResponse,
|
|
EvidenceResponse,
|
|
EvidenceUpdateRequest,
|
|
PlanSectionSummary,
|
|
PlanSectionEditRequest,
|
|
PlanListResponse,
|
|
PlanResponse,
|
|
PlanRevisionRequest,
|
|
PlanSummary,
|
|
PlanUpdateRequest,
|
|
PublishCommitCreateResponse,
|
|
PublishCommitListResponse,
|
|
PublishCommitSummary,
|
|
PublishingDryRunResponse,
|
|
PublishingStatusResponse,
|
|
PublishingRules,
|
|
ResearchArtifactManifestSummary,
|
|
ResearchArtifactSummary,
|
|
ResearchListResponse,
|
|
ResearchStartResponse,
|
|
FinalReviewIssueSummary,
|
|
FinalReviewIssuesResponse,
|
|
LanguageReviewReportResponse,
|
|
LanguageReviewRunResponse,
|
|
ReviewSuggestionActionResponse,
|
|
ReviewSuggestionEditRequest,
|
|
ReviewActionResponse,
|
|
ReviewSummary,
|
|
FinalRevisionRequest,
|
|
FinalRevisionRequestResponse,
|
|
SeoReviewReportResponse,
|
|
SeoReviewRunResponse,
|
|
RunnerFileRef,
|
|
ScriptConfigVersionAuditEventListResponse,
|
|
ScriptConfigVersionAuditEventSummary,
|
|
ScriptConfigVersionCreateRequest,
|
|
ScriptConfigVersionListResponse,
|
|
ScriptConfigVersionResponse,
|
|
ScriptConfigVersionSummary,
|
|
TargetSiteConfig,
|
|
TargetSiteConfigCreateRequest,
|
|
TargetSiteConfigResponse,
|
|
WorkflowEventSummary,
|
|
TargetSiteConfigUpdateRequest,
|
|
UserSummary,
|
|
)
|
|
|
|
|
|
CONTRACT_ENUMS: tuple[type[Enum], ...] = (
|
|
Role,
|
|
ArticleWorkflowStatus,
|
|
AgentJobStatus,
|
|
AgentJobType,
|
|
AgentJobErrorCategory,
|
|
ClaimSupportStatus,
|
|
ClaimRiskLevel,
|
|
PublishingStatus,
|
|
AssetStatus,
|
|
AssetType,
|
|
PlanReviewStatus,
|
|
ReviewStatus,
|
|
ReviewSuggestionStatus,
|
|
ReviewType,
|
|
ContentReviewKind,
|
|
ScriptConfigVersionStatus,
|
|
)
|
|
|
|
CONTRACT_SCHEMA_MODELS: tuple[type[BaseModel], ...] = (
|
|
UserSummary,
|
|
CurrentUser,
|
|
CurrentUserResponse,
|
|
PublishingRules,
|
|
TargetSiteConfig,
|
|
TargetSiteConfigCreateRequest,
|
|
TargetSiteConfigUpdateRequest,
|
|
TargetSiteConfigResponse,
|
|
ScriptConfigVersionSummary,
|
|
ScriptConfigVersionCreateRequest,
|
|
ScriptConfigVersionResponse,
|
|
ScriptConfigVersionListResponse,
|
|
ScriptConfigVersionAuditEventSummary,
|
|
ScriptConfigVersionAuditEventListResponse,
|
|
ArticleCreateRequest,
|
|
ArticleSummary,
|
|
ArticleCreateResponse,
|
|
ArticleListResponse,
|
|
WorkflowEventSummary,
|
|
ObservabilityTimelineEventSummary,
|
|
BoundaryQuestionSummary,
|
|
BoundaryQuestionUpdateRequest,
|
|
BoundaryQuestionResponse,
|
|
BoundaryQuestionListResponse,
|
|
PlanSectionSummary,
|
|
PlanSectionEditRequest,
|
|
PlanSummary,
|
|
PlanUpdateRequest,
|
|
PlanRevisionRequest,
|
|
PlanResponse,
|
|
PlanListResponse,
|
|
ResearchArtifactSummary,
|
|
ResearchArtifactManifestSummary,
|
|
ResearchStartResponse,
|
|
ResearchListResponse,
|
|
EvidenceSummary,
|
|
EvidenceCreateRequest,
|
|
EvidenceUpdateRequest,
|
|
EvidenceResponse,
|
|
ClaimSummary,
|
|
EvidenceMatrixResponse,
|
|
DraftSummary,
|
|
DraftFaqItem,
|
|
DraftAssembleResponse,
|
|
DraftListResponse,
|
|
DraftResponse,
|
|
DraftUpdateRequest,
|
|
ContentReviewIssueSummary,
|
|
ContentReviewReportSummary,
|
|
ContentReviewSuggestionSummary,
|
|
FinalApprovalChecklistItemSummary,
|
|
FinalApprovalChecklistResponse,
|
|
FinalApprovalPublishingSettings,
|
|
FinalApprovalRequest,
|
|
FinalApprovalResponse,
|
|
FinalRevisionRequest,
|
|
FinalRevisionRequestResponse,
|
|
FinalReviewIssueSummary,
|
|
FinalReviewIssuesResponse,
|
|
LanguageReviewReportResponse,
|
|
LanguageReviewRunResponse,
|
|
AssetGenerateSpecsResponse,
|
|
AssetListResponse,
|
|
AssetResponse,
|
|
AssetRevisionSummary,
|
|
AssetSummary,
|
|
AssetUpdateRequest,
|
|
AssetUploadRequest,
|
|
AssetUploadResponse,
|
|
ReviewSummary,
|
|
ReviewActionResponse,
|
|
ReviewSuggestionActionResponse,
|
|
ReviewSuggestionEditRequest,
|
|
SeoReviewReportResponse,
|
|
SeoReviewRunResponse,
|
|
PublishCommitSummary,
|
|
PublishCommitCreateResponse,
|
|
PublishCommitListResponse,
|
|
PublishingDryRunResponse,
|
|
PublishingStatusResponse,
|
|
RunnerFileRef,
|
|
AgentJobSummary,
|
|
AgentJobTestCodexRequest,
|
|
AgentJobResponse,
|
|
AgentJobListResponse,
|
|
AgentJobOutput,
|
|
ArticleDetailResponse,
|
|
)
|
|
|
|
|
|
def inject_contract_schemas(openapi_schema: dict[str, Any]) -> None:
|
|
schemas = openapi_schema.setdefault("components", {}).setdefault("schemas", {})
|
|
|
|
for enum in CONTRACT_ENUMS:
|
|
schemas[enum.__name__] = TypeAdapter(enum).json_schema(
|
|
ref_template="#/components/schemas/{model}"
|
|
)
|
|
|
|
for model in CONTRACT_SCHEMA_MODELS:
|
|
schema = model.model_json_schema(ref_template="#/components/schemas/{model}")
|
|
for name, definition in schema.pop("$defs", {}).items():
|
|
schemas.setdefault(name, definition)
|
|
schemas[model.__name__] = schema
|