File size: 1,081 Bytes
89419ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
"""External capabilities route."""

from __future__ import annotations

from typing import Any, Dict

from fastapi import APIRouter, Depends, HTTPException, status

from ...deps.external_auth import require_external_api_key

router = APIRouter(dependencies=[Depends(require_external_api_key)])


def _get_external_capabilities() -> Dict[str, Any]:
    """Adapter hook for core capability provider (implemented separately)."""
    try:
        from ....core.email_service_catalog import build_external_capabilities  # type: ignore
    except Exception as exc:  # pragma: no cover - handled by route
        raise RuntimeError("external_capabilities_provider_unavailable") from exc

    return build_external_capabilities()


@router.get("", summary="Get external API capabilities")
def get_external_capabilities() -> Dict[str, Any]:
    try:
        payload = _get_external_capabilities()
        return payload
    except RuntimeError as exc:
        raise HTTPException(
            status_code=status.HTTP_503_SERVICE_UNAVAILABLE,
            detail=str(exc),
        ) from exc