add optimistic concurrency guards via expected scheme version id protect draft editor, pricing snapshot, remap and publish flows from stale mutations protect version creation from stale current version state keep backward compatibility with optional query guards verify 409 conflict behavior for stale clients and 200 for valid flows
70 lines
2.6 KiB
Markdown
70 lines
2.6 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/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/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.
|
|
- Editor routes are maintained separately and should be synced from current source before relying on this file as a full route inventory.
|