Thank you for contributing to openapi-generics! 🙌 This repository is contract-first, projection-driven, and reconstruction-aware. Small changes can affect:
- Contract semantics
- OpenAPI projection
- Generated client reconstruction
- Long-term deterministic behavior
This template is intentionally strict. It ensures reviewers evaluate contract impact first, implementation second.
What does this PR change and why? One short paragraph max. Focus on intent and contract impact, not implementation details.
Example:
Adds safe multi‑language fallbacks for
x-api-wrapperto prevent duplicated wrapper models in non‑Java generators.
List only the essential changes:
- Contract updates (
ServiceResponse<T>, paging, error model, BYOE) - OpenAPI projection or vendor extension (
x-*) changes - Generic container registration (
openapi-generics.containers) - Generator or template changes
- Build, CI, documentation, or sample updates
Avoid implementation details—reviewers will inspect the diff.
Describe the practical impact:
- Improves contract clarity or correctness
- Improves projection determinism
- Reduces duplicated or unstable generated models
- Improves server–client alignment
- Improves generator behavior across languages
- Improves CI reliability or build determinism
If this PR changes observable output (OpenAPI schema, generated code, runtime behavior), describe it explicitly.
This project treats contracts as the single source of truth.
Contract impact: yes / no
If yes, specify what is affected:
- Contract surface (
ServiceResponse<T>,Page<T>,Meta, error model) - OpenAPI schema output or naming
- Vendor extension semantics
- Generator or template behavior
💡 If unsure → mark yes and explain.
If this PR touches projection or generation:
- Does it affect non‑Java generators?
- Are vendor extensions safe / no‑op outside Java?
- Does it reduce or introduce duplicated models?
Reference related issues if relevant.
- Contract (
openapi-generics-contract) - Projection (
openapi-generics-server-starter) - Generator (
openapi-generics-java-codegen) - Generator Parent (
openapi-generics-java-codegen-parent) - Build / CI
- Documentation
Indicate which flow is affected:
Server path:
server-starter → contract
Client path:
codegen-parent → codegen → contract
- Scope is minimal and focused
- Build passes:
mvn -q -ntp clean verify - Tests added/updated if needed
- Docs updated if behavior changed
- Contract impact evaluated
- No direct edits to generated code
- Changes applied at correct layer (contract / projection / generator)
- Linked issue or discussion (if applicable)
- Type: feature / bugfix / docs / refactor / chore / test / ci
- Related Issue: (optional)
- Target Release: (optional)
- Prefer small, focused PRs
- Never patch generated output
- Fix issues at the correct abstraction layer
- Open a Discussion if contract impact is unclear
Core principle:
Contracts are defined at generation time — not corrected downstream.