Scott Idem 29579fd9f1 feat: add V3 action endpoint for event exhibit tracking export
- 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
2026-03-16 16:50:32 -04:00
2026-03-16 12:41:29 -04:00
2026-03-10 16:26:51 -04:00

Aether API v3.00.x (FastAPI)

The Aether API is a high-performance, multi-tenant backend infrastructure built using the Python FastAPI framework. It serves as the central data and logic hub for the Aether Platform, supporting both legacy applications and modern V3/V4 standards.


🏗️ Architecture Overview

The API is currently in a transitional state between legacy (V1/V2) patterns and the modern V3 CRUD Architecture.

V3 CRUD (Modern)

  • Path: /v3/crud/
  • Core Principles:
    • id_random Primary: All public communication uses URL-safe string IDs. Internal integer IDs are hidden.
    • Nested URL Structure: Enforces parent-child relationships (e.g., /v3/crud/journal/{id}/entry/).
    • Nested Advanced Search: Full support for POST-based search on nested objects.
    • Granular Dependencies: Uses specialized FastAPI dependencies for Account Context, Pagination, Filtering, and Serialization.
    • Advanced Search: POST-based search with recursive logic and standardized operators.
    • Schema Discovery: Dynamic introspection of database and Pydantic models via /v3/crud/{obj_type}/schema.

V3 Actions

  • Path: /v3/action/
  • Handles complex binary operations and atomic business logic separately from standard metadata CRUD.
  • Key Features:
    • Atomic Event Uploads: Marriage of physical storage and complex event relations in one request.
    • Content-Addressable Downloads: Direct file retrieval by SHA256 hash for high-performance local caching.
    • Intelligent ID Resolution: Standard download endpoints now automatically resolve container IDs (e.g., event_file) to underlying binaries.

Legacy API (V1/V2)

  • Path: /, /api/, /crud/, /v2/crud/
  • Maintained for backward compatibility but currently being systematically audited and deprecated.
  • Deprecation System: Accessing legacy routes triggers a !!! DEPRECATED ROUTE ACCESSED warning in logs.

🛠️ Core Technologies

  • Framework: FastAPI (v0.95.1)
  • Database: MariaDB (Remote Master) + SQLAlchemy (v1.4.52)
  • Caching/ID Resolution: Redis
  • Security: JWT (JSON Web Tokens) + API Key Machine Authorization
  • Logging: Structured logging with module-level isolation and rotation.

🚀 Getting Started

Local Development

  1. Environment: Requires Python 3.9+.
  2. Setup:
    virtualenv environment
    source environment/bin/activate
    pip install -r requirements.txt
    
  3. Run:
    uvicorn app.main:app --host 0.0.0.0 --port 5005 --reload
    

Deployment

  • The API is deployed via Docker Compose within the Aether Docker Environment (aether_container_env).
  • Configuration (Docker): All settings (Database, SMTP, Ports) are managed via the master .env file in the aether_container_env/ directory. No local .env file is required in this repository.
  • Manual Deployment: GUIDE__DEPLOYMENT_MANUAL.md

📂 Documentation Index

Architecture & Standards

Integration Guides

Security


🧪 Testing Suite

The project maintains an exhaustive test suite under the tests/ directory.

  • Unit Tests: tests/unit/ (Mocked logic).
  • Integration Tests: tests/integration/ (Local DB/Redis connectivity).
  • E2E Tests: tests/e2e/ (Network-based API validation).
  • Documentation: tests/README.md

🚧 Current Status & Work in Progress

Active Workstreams

  • [Backend] API Deprecation: Systematic pruning of orphaned routers and methods (ID: 111523094).
  • [ID Vision]: Phase 2 complete. String-ID standardization extended to Page, Post, Person, Journal, Contact, and User models.
  • [V3 Migration]: Implementation of atomic event actions and hash-based retrieval for high-performance Launcher caching complete.

Known Bugs / Issues

  • **Badge Rendering:**Corrupted numeric id fields in event_badge_template table causing template load failures in Svelte 5 views.
  • Websockets: Legacy websockets.py and websockets_redis.py require unification and stability improvements.
  • Intermittent Timeouts: Some E2E tests occasionally reproduce 403s/Timeouts on nested GET calls (investigating).

📜 Release Snapshot

Current Baseline: release/2026-01-28-v3_prod-snapshot (Stable v3.0.99).

Description
No description provided
Readme 3.1 MiB