""" app/api/__init__.py ------------------- Registers the /api/v1 blueprint group. All mobile API routes live under the prefix /api/v1/. This module is imported once from app/__init__.py — see the integration instructions at the bottom of this file. Blueprint layout ---------------- /api/v1/auth/login → api_auth.login /api/v1/auth/refresh → api_auth.refresh /api/v1/auth/logout → api_auth.logout /api/v1/auth/me → api_auth.me /api/v1/devices/register → api_auth.register_device Phase A (iPad App): /api/v1/facilities → api_facilities.list_facilities /api/v1/facilities//areas → api_facilities.list_areas /api/v1/templates → api_templates.list_templates /api/v1/templates/ → api_templates.get_template Future phases will add: /api/v1/inspections → api_inspections.* /api/v1/issues → api_issues.* /api/v1/notifications → api_notifications.* /api/v1/photos/upload → api_photos.* """ from flask import Blueprint from app.api.errors import register_error_handlers # Parent blueprint — all sub-blueprints registered under this prefix api_bp = Blueprint('api', __name__, url_prefix='/api/v1') # Register JSON error handlers so Flask exceptions within /api/v1/ # return JSON instead of HTML error pages. register_error_handlers(api_bp) def register_api(app): """ Import and register all API sub-blueprints onto api_bp, then register api_bp on the Flask app. Called once from create_app() in app/__init__.py. NOTE: CSRF exemption for each sub-blueprint is handled in app/__init__.py before this function is called, because csrf.exempt() must receive the child Blueprint object directly — exempting the parent api_bp does not cascade to its sub-blueprints. """ # ── Phase 7 (Web): Auth ────────────────────────────────────────────── from app.api.auth import bp as auth_bp api_bp.register_blueprint(auth_bp) # ── Phase A (iPad): Reference data ────────────────────────────────── from app.api.facilities import bp as facilities_bp from app.api.templates import bp as templates_bp api_bp.register_blueprint(facilities_bp) api_bp.register_blueprint(templates_bp) # ── Phase B+ (iPad): Inspections, issues, photos ───────────────────── # from app.api.inspections import bp as inspections_bp # from app.api.issues import bp as issues_bp # from app.api.photos import bp as photos_bp # api_bp.register_blueprint(inspections_bp) # api_bp.register_blueprint(issues_bp) # api_bp.register_blueprint(photos_bp) app.register_blueprint(api_bp)