7f99c895a4
New database schema with ServiceProvider abstraction: - ServiceProvider (replaces ImmichServer): type + JSON config - Tracker (replaces AlbumTracker): owns tracking_config_id - TrackingConfig: provider_type scoped, owned by Tracker - TemplateConfig: provider_type scoped, owned by Target - NotificationTarget: owns template_config_id (not tracking_config_id) - TrackerState, EventLog, User, TelegramBot, TelegramChat Full FastAPI server: - /api/providers: CRUD + test connection + list collections - /api/trackers: CRUD - /api/tracking-configs: CRUD with provider_type filter - /api/template-configs: CRUD with provider_type filter, system defaults - /api/targets: CRUD - /api/template-vars: variable docs filtered by provider type - /api/auth: setup, login, refresh, me, password change - /api/health: health check - Default template seeding on first startup (EN/RU for Immich) - pydantic-settings with NOTIFY_BRIDGE_ env prefix Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
"""Template variable documentation endpoint."""
|
|
|
|
from fastapi import APIRouter
|
|
|
|
from notify_bridge_core.providers.base import ServiceProviderType
|
|
from notify_bridge_core.providers.immich import ImmichServiceProvider # noqa: F401 — triggers registration
|
|
from notify_bridge_core.templates.variables import registry
|
|
|
|
router = APIRouter(prefix="/api/template-vars", tags=["template-vars"])
|
|
|
|
|
|
@router.get("")
|
|
async def get_template_variables(provider_type: str | None = None):
|
|
"""Get available template variables, optionally filtered by provider type."""
|
|
if provider_type:
|
|
try:
|
|
pt = ServiceProviderType(provider_type)
|
|
except ValueError:
|
|
return {"error": f"Unknown provider type: {provider_type}"}
|
|
variables = registry.get_variables(pt)
|
|
else:
|
|
variables = registry.get_base_variables()
|
|
|
|
return [
|
|
{
|
|
"name": v.name,
|
|
"type": v.type,
|
|
"description": v.description,
|
|
"example": v.example,
|
|
"provider_type": v.provider_type.value if v.provider_type else None,
|
|
}
|
|
for v in variables
|
|
]
|