feat(api): complete Stage 2 OpenAPI contract and generation source (CYN-55) - #39
Merged
SiddharthaGF merged 3 commits intoAug 6, 2026
Conversation
Commit the OpenAPI 3.0 document generated fully in-process by the new export tool, so client generators consume a reviewable, CI-checked artifact instead of an ad-hoc live endpoint. The committed document is minified to keep the repository diff surface small. Adds reusable JSON:API error and pagination schemas, enum-value and readOnly serialization conventions, and drift/determinism/OAS-validation plus endpoint-inventory tests, backed by the OpenApiExport/OpenApiCheck build targets.
Split OpenApiFilters.cs into document, operation, and schema filter files so each filter kind lives with its own concerns. Run OpenApiCheck in the Husky pre-commit group so a stale contracts/openapi.json blocks commits the same way formatting and linting do, not just CI. Drop the dummy connection password and keep the exporter on await-using via a scoped MA0004 suppression, matching the repo's RCS1261 preference.
|
Neon branch ready. |
…ty assignments Added logic to the DemoShowcaseSeeder to retrieve and filter existing capability assignments before granting new capabilities. This prevents duplicate grants and ensures that only unheld capabilities are assigned to the actor.
SiddharthaGF
temporarily deployed
to
ailuracodedev/cyn-55-complete-stage-2-openapi-contract-and-generation-source - cynara-api PR #39
August 6, 2026 15:11 — with
Render
Destroyed
SiddharthaGF
deleted the
ailuracodedev/cyn-55-complete-stage-2-openapi-contract-and-generation-source
branch
August 6, 2026 17:03
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
contracts/openapi.jsonas a minified, deterministic artifact produced fully in-process by the newtools/Cynara.OpenApiExportexporter, so client generators consume a reviewable, CI-checked document instead of an ad-hoc live endpointjsonApiErrorDocument), pagination (paginationMeta), and workspace request/response schemas; wire them into custom controllers and JADNC workflow actions so every documented error status resolves to the shared contract schema[OpenApiEnumValues]+CynaraEnumSchemaFilteremitenumlists for enum-like DTO strings, andReadOnlyIdSchemaFiltermarks response idsreadOnlyOpenApiSnapshotTests(drift byte-compare, determinism, OAS 3.0 structural validation) and a Stage 2 endpoint-inventory test; addOpenApiExport/OpenApiCheckCake targets withOpenApiCheckwired intoCheckOpenApiCheckin the Husky pre-commit group so a stale contract blocks commits, and splitOpenApiFilters.csinto document/operation/schema filter filesTest plan
dotnet cake --target=Check(format-check + lint + openapi-check + 356 tests)dotnet cake --target=OpenApiExportregeneratescontracts/openapi.jsonrun dotnet cake --target=OpenApiExportafter touching an endpoint/schema without regeneratingcynara-web(CYN-56) can consumecontracts/openapi.jsonfor client generationLinear: