Files
smoa/docs/development/OPENAPI-SYNCHRONIZATION.md
T
defiQUG 4f78404f87 Feature modules UI + RBAC; credential pull hydration; compliance doc
- Extend RBAC modules/permissions; Home + drawer + Nav routes for ATF/NCIC/military/judicial/intelligence
- Wire Orders/Evidence/Reports/ATF/NCIC/Military/Judicial/Intelligence Compose flows with Hilt ViewModels
- Evidence: custody chain merge in repository; list/detail UI; fix transfer entity evidenceId
- SyncService: hydrate credential payloads after list pull; CredentialCacheSyncPort API + tests
- CredentialCacheMerger hydrateMissingPayloads; CredentialsViewModel refresh/hydrate split
- OrderServiceTest; SyncService + CredentialCacheMerger tests; NCIC operator display
- docs: OUTSTANDING-PRODUCTION-AND-COMPLIANCE-WORK.md; GAPS updates; README implementation status
- Misc doc/build updates (OpenAPI test, compliance matrix, etc.)

Made-with: Cursor
2026-03-23 21:04:30 -07:00

21 lines
972 B
Markdown

# Keeping OpenAPI in sync
## Source of truth
The **running Spring Boot app** exposes the authoritative contract:
- **OpenAPI JSON:** `GET /v3/api-docs`
- **Swagger UI:** `/swagger-ui.html`
The static file `docs/api/api-specification.yaml` is a **human-maintained reference** for design reviews. It can drift from springdoc.
## CI drift check (implemented baseline)
`OpenApiContractIntegrationTest` (module `:backend`) loads the Spring context and asserts that `/v3/api-docs` includes expected paths (e.g. `/api/v1/sync/credential`, `/api/v1/credentials`, `/api/v1/directory`, `/api/v1/integrity/verify`). It runs as part of `./gradlew :backend:test` and therefore **`./gradlew smoaVerify`**.
For a **full golden-file diff**, still optional: start the backend, `curl` `/v3/api-docs`, and compare to a committed artifact (normalize JSON ordering if needed).
## Script
See `scripts/export-openapi-local.sh` for a minimal local export (requires a reachable backend).