add backend endpoint for publish readiness checks enforce publish gate contract before version publication make publish preconditions explicit and consistent for clients
95 lines
3.9 KiB
Markdown
95 lines
3.9 KiB
Markdown
# API map
|
|
|
|
## app/api/routes/system.py
|
|
- GET /
|
|
- GET /healthz
|
|
- GET /api/v1/ping
|
|
- GET /api/v1/auth/me
|
|
- GET /api/v1/db/ping
|
|
- GET /api/v1/manifest
|
|
|
|
## app/api/routes/uploads.py
|
|
- POST /api/v1/schemes/upload
|
|
- GET /api/v1/uploads
|
|
- GET /api/v1/uploads/{upload_id}
|
|
- GET /api/v1/uploads/{upload_id}/normalized
|
|
|
|
## app/api/routes/schemes.py
|
|
- GET /api/v1/schemes
|
|
- GET /api/v1/schemes/{scheme_id}
|
|
- GET /api/v1/schemes/{scheme_id}/current
|
|
- GET /api/v1/schemes/{scheme_id}/versions
|
|
- POST /api/v1/schemes/{scheme_id}/versions
|
|
- GET /api/v1/schemes/{scheme_id}/publish/validation
|
|
- POST /api/v1/schemes/{scheme_id}/publish
|
|
- POST /api/v1/schemes/{scheme_id}/unpublish
|
|
- POST /api/v1/schemes/{scheme_id}/rollback
|
|
|
|
## app/api/routes/structure.py
|
|
- GET /api/v1/schemes/{scheme_id}/current/sectors
|
|
- GET /api/v1/schemes/{scheme_id}/current/groups
|
|
- GET /api/v1/schemes/{scheme_id}/current/seats
|
|
- GET /api/v1/schemes/{scheme_id}/current/seats/{seat_id}/price
|
|
- GET /api/v1/schemes/{scheme_id}/current/svg
|
|
- GET /api/v1/schemes/{scheme_id}/current/svg/display
|
|
- GET /api/v1/schemes/{scheme_id}/current/svg/display/meta
|
|
|
|
## app/api/routes/pricing.py
|
|
- GET /api/v1/schemes/{scheme_id}/pricing
|
|
- POST /api/v1/schemes/{scheme_id}/pricing/categories
|
|
- PUT /api/v1/schemes/{scheme_id}/pricing/categories/{pricing_category_id}
|
|
- DELETE /api/v1/schemes/{scheme_id}/pricing/categories/{pricing_category_id}
|
|
- POST /api/v1/schemes/{scheme_id}/pricing/rules
|
|
- PUT /api/v1/schemes/{scheme_id}/pricing/rules/{price_rule_id}
|
|
- DELETE /api/v1/schemes/{scheme_id}/pricing/rules/{price_rule_id}
|
|
|
|
## app/api/routes/pricing_diagnostics.py
|
|
- GET /api/v1/schemes/{scheme_id}/pricing/coverage
|
|
- GET /api/v1/schemes/{scheme_id}/pricing/unpriced-seats
|
|
- GET /api/v1/schemes/{scheme_id}/pricing/explain/{seat_id}
|
|
|
|
## app/api/routes/test_mode.py
|
|
- GET /api/v1/schemes/{scheme_id}/test/seats/{seat_id}
|
|
|
|
## app/api/routes/audit.py
|
|
- GET /api/v1/schemes/{scheme_id}/audit
|
|
|
|
## app/api/routes/publish.py
|
|
- POST /api/v1/schemes/{scheme_id}/draft/pricing/snapshot
|
|
- GET /api/v1/schemes/{scheme_id}/draft/publish-preview
|
|
- POST /api/v1/schemes/{scheme_id}/draft/remap/preview
|
|
- POST /api/v1/schemes/{scheme_id}/draft/remap/apply
|
|
|
|
## app/api/routes/editor.py
|
|
- GET /api/v1/schemes/{scheme_id}/draft/structure
|
|
- GET /api/v1/schemes/{scheme_id}/draft/compare-preview
|
|
- GET /api/v1/schemes/{scheme_id}/draft/validation
|
|
- GET /api/v1/schemes/{scheme_id}/draft/seats/records/{seat_record_id}
|
|
- GET /api/v1/schemes/{scheme_id}/draft/sectors/records/{sector_record_id}
|
|
- GET /api/v1/schemes/{scheme_id}/draft/groups/records/{group_record_id}
|
|
- POST /api/v1/schemes/{scheme_id}/draft/sectors
|
|
- POST /api/v1/schemes/{scheme_id}/draft/groups
|
|
- DELETE /api/v1/schemes/{scheme_id}/draft/sectors/records/{sector_record_id}
|
|
- DELETE /api/v1/schemes/{scheme_id}/draft/groups/records/{group_record_id}
|
|
- PATCH /api/v1/schemes/{scheme_id}/draft/seats/records/{seat_record_id}
|
|
- POST /api/v1/schemes/{scheme_id}/draft/seats/bulk
|
|
- PATCH /api/v1/schemes/{scheme_id}/draft/sectors/records/{sector_record_id}
|
|
- PATCH /api/v1/schemes/{scheme_id}/draft/groups/records/{group_record_id}
|
|
- POST /api/v1/schemes/{scheme_id}/draft/repair-references
|
|
|
|
## app/api/routes/admin.py
|
|
- GET /api/v1/admin/schemes/{scheme_id}/current/artifacts
|
|
- GET /api/v1/admin/schemes/{scheme_id}/current/validation
|
|
- POST /api/v1/admin/schemes/{scheme_id}/current/display/regenerate
|
|
- POST /api/v1/admin/display/backfill
|
|
- GET /api/v1/admin/artifacts/publish-preview/audit
|
|
- POST /api/v1/admin/artifacts/publish-preview/cleanup
|
|
|
|
## Notes
|
|
- This file is an operational route index, not a generated OpenAPI export.
|
|
- Update this map in the same change set when adding, removing, renaming, or moving routes.
|
|
- Query guards such as expected_current_scheme_version_id / expected_scheme_version_id are part of the operational contract for optimistic concurrency on mutable flows.
|
|
|
|
## app/api/routes/publish.py
|
|
- GET /api/v1/schemes/{scheme_id}/draft/publish-readiness
|