Skip to content

epic: OpenAPI export functionality #18

@soulcodingmatt

Description

@soulcodingmatt

Epic: OpenAPI Export Functionality

Goal

Enable Equilibrium to export annotated DTOs (and potentially Records/VOs) as OpenAPI schema definitions, providing a "contract-first through code" approach for backend developers.

Context

Backend developers often need to maintain API contracts (OpenAPI specs) alongside their Java code. This epic adds the ability to generate .yaml OpenAPI schema files directly from Equilibrium-annotated source classes, eliminating the need for a separate OpenAPI-first workflow while still providing contract guarantees.

Scope

  • Export @GenerateDto-annotated classes to OpenAPI schema .yaml files
  • Map Java types to OpenAPI types correctly
  • Handle nested DTOs via $ref references
  • Propagate validation constraints to schema constraints
  • Versioning and breaking change detection for schema evolution
  • Integration with existing OAS projects (push schemas to a separate repo)
  • Evaluate whether Records and VOs should also be exportable

Stories

  • story: export generated DTOs to OpenAPI schemas #12 — story: export generated DTOs to OpenAPI schemas (core export)
  • story: detect breaking changes in generated OpenAPI schemas (versioning)
  • story: evaluate OpenAPI export for Records and Value Objects
  • story: integrate OpenAPI schema output with external OAS projects

Out of Scope

  • Runtime OpenAPI generation (this is compile-time only)
  • Full OpenAPI document generation (paths, operations) — only schema/component definitions
  • Enum export (may be a separate project as noted in the original proposal)

Priority

Medium — targeted for v1.1.0 or later

Goal

TODO: Define the goal of this epic.

Success Criteria

TODO: Define success criteria for this epic.

Goal

TODO: Define the goal of this epic.

Success Criteria

TODO: Define success criteria for this epic.

Metadata

Metadata

Assignees

No one assigned

    Labels

    backendArea: backendepicHierarchy: epic

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions