- New router: app/routers/api_v3_actions_event_exhibit.py
- GET /v3/action/event_exhibit/{exhibit_id}/tracking_export
- Full V3 auth (x-aether-api-key + account context)
- Multi-tenant ownership check via check_account_access
- Permission gate: leads_api_access flag OR manager-level access
- Returns CSV or XLSX file attachment (return_file=false for JSON)
- Flattens responses_json custom Q&A columns; strips HTML from exhibitor_notes
- Exports all records regardless of hidden/enabled state
- Registered in registry.py under prefix /v3/action/event_exhibit
- New E2E test: tests/e2e/test_e2e_v3_action_event_exhibit_tracking_export.py
- 7/7 tests passing against dev-api.oneskyit.com
- Docs: GUIDE__AE_API_V3_for_Frontend.md — new Section 7 covering endpoint
usage, columns, leads_api_access dual-purpose (3rd-party API + UI export gate)
- Docs: tests/README.md — added test to table and when-to-run matrix
77 lines
5.6 KiB
Python
77 lines
5.6 KiB
Python
from fastapi import FastAPI, Depends
|
|
from app.routers.dependencies_v3 import DeprecationParams
|
|
from app.routers import (
|
|
ae_obj, aether_cfg, api_crud, api_crud_v2, api_crud_v3, api, health, importing, sql,
|
|
account, contact, data_store,
|
|
event, event_badge, event_badge_importing, event_badge_template,
|
|
event_device, event_exhibit, event_exhibit_tracking, event_file, event_importing,
|
|
event_location, event_person,
|
|
event_presentation, event_presenter, event_session,
|
|
flask_cfg, hosted_file, api_v3_actions_hosted_file, api_v3_actions_event_file, api_v3_actions_event_exhibit, api_v3_actions_e_zoom, api_v3_actions_e_novi_mailman, lookup, lookup_v3,
|
|
organization, page, person,
|
|
person_user, qr, site, site_domain, user,
|
|
util_email, websockets, websockets_redis, websockets_v3, e_confex, e_cvent, e_impexium, e_stripe
|
|
)
|
|
|
|
def setup_routers(app: FastAPI):
|
|
"""
|
|
Registers all application routers with their respective prefixes and tags.
|
|
"""
|
|
app.include_router(health.router, tags=['Root'])
|
|
app.include_router(ae_obj.router, prefix='/ae_obj', tags=['AE Object'])
|
|
app.include_router(aether_cfg.router, tags=['Aether Config'])
|
|
# app.include_router(api_crud.router, prefix='/crud', tags=['CRUD v1.2 (Legacy)'], dependencies=[Depends(DeprecationParams)])
|
|
app.include_router(api_crud_v2.router, prefix='/v2/crud', tags=['CRUD v2.5'], dependencies=[Depends(DeprecationParams)])
|
|
app.include_router(api_crud_v3.router, prefix='/v3/crud', tags=['CRUD v3'])
|
|
|
|
app.include_router(api.router, prefix='/api', tags=['API'])
|
|
# app.include_router(flask_cfg.router, prefix='/flask_cfg', tags=['Flask CFG'], dependencies=[Depends(DeprecationParams)])
|
|
app.include_router(importing.router, prefix='/importing', tags=['Importing'])
|
|
app.include_router(sql.router, tags=['SQL'])
|
|
# app.include_router(account.router, tags=['Account'], dependencies=[Depends(DeprecationParams)])
|
|
|
|
app.include_router(data_store.router, tags=['Data Store'])
|
|
# app.include_router(event.router, tags=['Event'], dependencies=[Depends(DeprecationParams)])
|
|
# app.include_router(event_badge.router, tags=['Event Badge'], dependencies=[Depends(DeprecationParams)])
|
|
app.include_router(event_badge_importing.router, tags=['Event Badge Importing'])
|
|
# app.include_router(event_badge_template.router, tags=['Event Badge Template'], dependencies=[Depends(DeprecationParams)])
|
|
|
|
# app.include_router(event_device.router, tags=['Event Device'], dependencies=[Depends(DeprecationParams)])
|
|
# app.include_router(event_exhibit.router, tags=['Event Exhibit'], dependencies=[Depends(DeprecationParams)])
|
|
app.include_router(event_exhibit_tracking.router, tags=['Event Exhibit Tracking'])
|
|
app.include_router(event_file.router, tags=['Event File'])
|
|
app.include_router(event_importing.router, tags=['Event Importing'])
|
|
# app.include_router(event_location.router, tags=['Event Location'], dependencies=[Depends(DeprecationParams)])
|
|
|
|
# app.include_router(event_presentation.router, tags=['Event Presentation'], dependencies=[Depends(DeprecationParams)])
|
|
# app.include_router(event_presenter.router, prefix='/event/presenter', tags=['Event Presenter'], dependencies=[Depends(DeprecationParams)])
|
|
# app.include_router(event_session.router, tags=['Event Session'], dependencies=[Depends(DeprecationParams)])
|
|
|
|
app.include_router(hosted_file.router, prefix='/hosted_file', tags=['Hosted File'])
|
|
app.include_router(api_v3_actions_hosted_file.router, prefix='/v3/action/hosted_file', tags=['Hosted File (V3 Actions)'])
|
|
app.include_router(api_v3_actions_event_file.router, prefix='/v3/action/event_file', tags=['Event File (V3 Actions)'])
|
|
app.include_router(api_v3_actions_event_exhibit.router, prefix='/v3/action/event_exhibit', tags=['Event Exhibit (V3 Actions)'])
|
|
app.include_router(api_v3_actions_e_zoom.router, prefix='/v3/action/e_zoom', tags=['Zoom Events (V3 Actions)'])
|
|
app.include_router(api_v3_actions_e_novi_mailman.router, prefix='/v3/action/e_novi_mailman', tags=['Novi-Mailman Bridge (V3 Actions)'])
|
|
app.include_router(lookup.router, prefix='/lu', tags=['Lookup'])
|
|
app.include_router(lookup_v3.router, prefix='/v3/lookup', tags=['Lookup V3'])
|
|
|
|
# app.include_router(organization.router, prefix='/organization', tags=['Organization'], dependencies=[Depends(DeprecationParams)])
|
|
# app.include_router(page.router, prefix='/page', tags=['Page'], dependencies=[Depends(DeprecationParams)])
|
|
# app.include_router(person.router, tags=['Person'], dependencies=[Depends(DeprecationParams)])
|
|
# app.include_router(person_user.router, prefix='/person_user', tags=['Person User'], dependencies=[Depends(DeprecationParams)])
|
|
|
|
# app.include_router(qr.router, tags=['QR'], dependencies=[Depends(DeprecationParams)])
|
|
# app.include_router(site.router, tags=['Site'], dependencies=[Depends(DeprecationParams)])
|
|
# app.include_router(site_domain.router, tags=['Site Domain'], dependencies=[Depends(DeprecationParams)])
|
|
app.include_router(user.router, tags=['User'])
|
|
app.include_router(util_email.router, tags=['Utility: Email'])
|
|
app.include_router(websockets.router, tags=['Websockets'])
|
|
app.include_router(websockets_redis.router, tags=['Websockets (Redis)'])
|
|
app.include_router(websockets_v3.router, prefix='/v3', tags=['Websockets V3'])
|
|
|
|
app.include_router(e_confex.router, prefix='/e/confex', tags=['External Service: Confex'])
|
|
app.include_router(e_cvent.router, prefix='/e/cvent', tags=['External Service: Cvent'])
|
|
app.include_router(e_impexium.router, prefix='/e/impexium', tags=['External Service: Impexium'])
|
|
app.include_router(e_stripe.router, prefix='/e/stripe', tags=['External Service: Stripe'])
|