Skip to content

Add Pydantic response models to API endpoints and response builder #37

@laurencegoolsby

Description

@laurencegoolsby

API endpoints and internal response builders currently return untyped dict responses. Per FastAPI best practices, endpoints should use Pydantic BaseModel classes for request and response types. This enables automatic validation, OpenAPI schema generation, and type safety.

Current state:

  • Endpoints return raw dicts (dict[str, Any])
  • build_v1_api_response returns dict[str, Any]
  • get_internal_api_response returns a dataclass (InternalApiResponse) — should be Pydantic model
  • _extract_field_values returns dict[str, Any]
  • No response validation
  • OpenAPI spec lacks response schemas

Desired state:

  • All endpoints use Pydantic response models
  • build_v1_api_response returns a typed Pydantic model
  • InternalApiResponse migrated from dataclass to Pydantic BaseModel
  • Field extraction returns typed models
  • OpenAPI spec auto-generates accurate response schemas

Endpoints to update:

  • POST /v1/documents — upload response
  • GET /v1/documents/{job_id} — job status / processing results
  • GET /v1/schemas — schema list
  • GET /v1/schemas/{document_type} — schema detail
  • GET /v1/metrics — metrics response
  • GET /health — health check
  • GET /config — config response

Response builder to update:

  • response_builder.build_v1_api_response() — return typed model instead of dict
  • response_builder.get_internal_api_response() — migrate to Pydantic
  • response_builder._extract_field_values() — return typed field model
  • models.InternalApiResponse — convert from dataclass to BaseModel
  • models.ClassificationData — consider converting to BaseModel

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions