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

972 B

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).